Improved channels error handling
This commit is contained in:
parent
6d9aa03695
commit
7ab5650f99
@ -620,7 +620,7 @@ angular.module('myApp.controllers', ['myApp.i18n'])
|
|||||||
|
|
||||||
$scope.dialogs = [];
|
$scope.dialogs = [];
|
||||||
$scope.contacts = [];
|
$scope.contacts = [];
|
||||||
$scope.foundUsers = [];
|
$scope.foundPeers = [];
|
||||||
$scope.foundMessages = [];
|
$scope.foundMessages = [];
|
||||||
|
|
||||||
if ($scope.search === undefined) {
|
if ($scope.search === undefined) {
|
||||||
@ -854,7 +854,7 @@ angular.module('myApp.controllers', ['myApp.i18n'])
|
|||||||
if (!searchMessages) {
|
if (!searchMessages) {
|
||||||
$scope.dialogs = [];
|
$scope.dialogs = [];
|
||||||
$scope.contacts = [];
|
$scope.contacts = [];
|
||||||
$scope.foundUsers = [];
|
$scope.foundPeers = [];
|
||||||
}
|
}
|
||||||
$scope.foundMessages = [];
|
$scope.foundMessages = [];
|
||||||
|
|
||||||
@ -966,15 +966,16 @@ angular.module('myApp.controllers', ['myApp.i18n'])
|
|||||||
if (curJump != contactsJump) return;
|
if (curJump != contactsJump) return;
|
||||||
MtpApiManager.invokeApi('contacts.search', {q: $scope.search.query, limit: 10}).then(function (result) {
|
MtpApiManager.invokeApi('contacts.search', {q: $scope.search.query, limit: 10}).then(function (result) {
|
||||||
AppUsersManager.saveApiUsers(result.users);
|
AppUsersManager.saveApiUsers(result.users);
|
||||||
|
AppChatsManager.saveApiChats(result.chats);
|
||||||
if (curJump != contactsJump) return;
|
if (curJump != contactsJump) return;
|
||||||
$scope.foundUsers = [];
|
$scope.foundPeers = [];
|
||||||
angular.forEach(result.results, function(contactFound) {
|
angular.forEach(result.results, function(contactFound) {
|
||||||
var userID = contactFound.user_id;
|
var peerID = AppPeersManager.getPeerID(contactFound);
|
||||||
if (peersInDialogs[userID] === undefined) {
|
if (peersInDialogs[peerID] === undefined) {
|
||||||
$scope.foundUsers.push({
|
$scope.foundPeers.push({
|
||||||
userID: userID,
|
id: peerID,
|
||||||
user: AppUsersManager.getUser(userID),
|
username: AppPeersManager.getPeer(peerID).username,
|
||||||
peerString: AppUsersManager.getUserString(userID)
|
peerString: AppUsersManager.getUserString(peerID)
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
@ -1726,6 +1727,7 @@ angular.module('myApp.controllers', ['myApp.i18n'])
|
|||||||
if (updPeerID == $scope.curDialog.peerID) {
|
if (updPeerID == $scope.curDialog.peerID) {
|
||||||
$location.url('/im');
|
$location.url('/im');
|
||||||
}
|
}
|
||||||
|
historiesQueuePop(updPeerID);
|
||||||
});
|
});
|
||||||
|
|
||||||
$scope.$on('notify_settings', function (e, data) {
|
$scope.$on('notify_settings', function (e, data) {
|
||||||
@ -3926,7 +3928,7 @@ angular.module('myApp.controllers', ['myApp.i18n'])
|
|||||||
.controller('ContactsModalController', function ($scope, $timeout, $modal, $modalInstance, MtpApiManager, AppUsersManager, ErrorService) {
|
.controller('ContactsModalController', function ($scope, $timeout, $modal, $modalInstance, MtpApiManager, AppUsersManager, ErrorService) {
|
||||||
|
|
||||||
$scope.contacts = [];
|
$scope.contacts = [];
|
||||||
$scope.foundUsers = [];
|
$scope.foundPeers = [];
|
||||||
$scope.search = {};
|
$scope.search = {};
|
||||||
$scope.slice = {limit: 20, limitDelta: 20};
|
$scope.slice = {limit: 20, limitDelta: 20};
|
||||||
|
|
||||||
|
@ -217,6 +217,7 @@
|
|||||||
"confirm_modal_abort_password_setup": "Abort two-step verification setup?",
|
"confirm_modal_abort_password_setup": "Abort two-step verification setup?",
|
||||||
"confirm_modal_reset_account_md": "Are you sure?\nThis action can not be undone.\n\nYou will lose all your chats and messages, along with any media and files you shared, if you proceed with resetting your account.",
|
"confirm_modal_reset_account_md": "Are you sure?\nThis action can not be undone.\n\nYou will lose all your chats and messages, along with any media and files you shared, if you proceed with resetting your account.",
|
||||||
"confirm_modal_join_group_link": "Do you want to join the group «{title}»?",
|
"confirm_modal_join_group_link": "Do you want to join the group «{title}»?",
|
||||||
|
"confirm_modal_join_channel_link": "Do you want to join the channel «{title}»?",
|
||||||
"confirm_modal_revoke_group_link": "Are you sure you want to revoke this link? Once you do, no one will be able to join the group using it.",
|
"confirm_modal_revoke_group_link": "Are you sure you want to revoke this link? Once you do, no one will be able to join the group using it.",
|
||||||
"confirm_modal_revoke_channel_link": "Are you sure you want to revoke this link? Once you do, no one will be able to join the channel using it.",
|
"confirm_modal_revoke_channel_link": "Are you sure you want to revoke this link? Once you do, no one will be able to join the channel using it.",
|
||||||
"confirm_modal_delete_channel_md": "Are you sure you want to delete this channel?\n\nAll messages will be removed and all messages will be lost.",
|
"confirm_modal_delete_channel_md": "Are you sure you want to delete this channel?\n\nAll messages will be removed and all messages will be lost.",
|
||||||
@ -363,6 +364,8 @@
|
|||||||
"error_modal_password_disabled_descripion": "You have disabled Two-Step Verification.",
|
"error_modal_password_disabled_descripion": "You have disabled Two-Step Verification.",
|
||||||
"error_modal_user_not_mutual_contact": "The user can be invited by his contact only",
|
"error_modal_user_not_mutual_contact": "The user can be invited by his contact only",
|
||||||
"error_modal_invite_link_invalid": "The invite link is invalid",
|
"error_modal_invite_link_invalid": "The invite link is invalid",
|
||||||
|
"error_modal_channel_not_accessible": "Sorry, this channel is not accessible.",
|
||||||
|
"error_modal_not_contact_flood": "Sorry, you can only send messages to mutual contacts at the moment. {more-info-link: More info »}",
|
||||||
|
|
||||||
|
|
||||||
"head_telegram": "Telegram",
|
"head_telegram": "Telegram",
|
||||||
|
@ -314,7 +314,7 @@ angular.module('myApp.services')
|
|||||||
offset_id: maxID ? getMessageLocalID(maxID) : 0,
|
offset_id: maxID ? getMessageLocalID(maxID) : 0,
|
||||||
add_offset: offset || 0,
|
add_offset: offset || 0,
|
||||||
limit: limit || 0
|
limit: limit || 0
|
||||||
}, {noErrorBox: true});
|
});
|
||||||
} else {
|
} else {
|
||||||
promise = MtpApiManager.invokeApi('messages.getHistory', {
|
promise = MtpApiManager.invokeApi('messages.getHistory', {
|
||||||
peer: inputPeer,
|
peer: inputPeer,
|
||||||
@ -365,6 +365,23 @@ angular.module('myApp.services')
|
|||||||
}
|
}
|
||||||
return historyResult;
|
return historyResult;
|
||||||
});
|
});
|
||||||
|
}, function (error) {
|
||||||
|
switch (error.type) {
|
||||||
|
case 'CHANNEL_PRIVATE':
|
||||||
|
var channel = AppChatsManager.getChat(-peerID);
|
||||||
|
channel = {_: 'channelForbidden', access_hash: channel.access_hash, title: channel.title};
|
||||||
|
ApiUpdatesManager.processUpdateMessage({
|
||||||
|
_: 'updates',
|
||||||
|
updates: [{
|
||||||
|
_: 'updateChannel',
|
||||||
|
channel_id: -peerID
|
||||||
|
}],
|
||||||
|
chats: [channel],
|
||||||
|
users: []
|
||||||
|
});
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
return $q.reject(error);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1599,7 +1616,7 @@ angular.module('myApp.services')
|
|||||||
chatTitle = chatInvite.title;
|
chatTitle = chatInvite.title;
|
||||||
}
|
}
|
||||||
ErrorService.confirm({
|
ErrorService.confirm({
|
||||||
type: 'JOIN_GROUP_BY_LINK',
|
type: chatInvite.flags & 1 ? 'JOIN_CHANNEL_BY_LINK' : 'JOIN_GROUP_BY_LINK',
|
||||||
title: chatTitle
|
title: chatTitle
|
||||||
}).then(function () {
|
}).then(function () {
|
||||||
return MtpApiManager.invokeApi('messages.importChatInvite', {
|
return MtpApiManager.invokeApi('messages.importChatInvite', {
|
||||||
|
@ -418,9 +418,14 @@ angular.module('myApp.services', ['myApp.i18n', 'izhukov.utils'])
|
|||||||
|
|
||||||
case 'updateUserPhoto':
|
case 'updateUserPhoto':
|
||||||
var userID = update.user_id;
|
var userID = update.user_id;
|
||||||
if (users[userID]) {
|
var user = users[userID];
|
||||||
|
if (user) {
|
||||||
forceUserOnline(userID);
|
forceUserOnline(userID);
|
||||||
safeReplaceObject(users[userID].photo, update.photo);
|
if (!user.photo) {
|
||||||
|
user.photo = update.photo;
|
||||||
|
} else {
|
||||||
|
safeReplaceObject(user.photo, update.photo);
|
||||||
|
}
|
||||||
|
|
||||||
if (cachedPhotoLocations[userID] !== undefined) {
|
if (cachedPhotoLocations[userID] !== undefined) {
|
||||||
safeReplaceObject(cachedPhotoLocations[userID], update.photo && update.photo.photo_small || {empty: true});
|
safeReplaceObject(cachedPhotoLocations[userID], update.photo && update.photo.photo_small || {empty: true});
|
||||||
@ -619,7 +624,7 @@ angular.module('myApp.services', ['myApp.i18n', 'izhukov.utils'])
|
|||||||
|
|
||||||
function isChannel (id) {
|
function isChannel (id) {
|
||||||
var chat = chats[id];
|
var chat = chats[id];
|
||||||
if (chat && chat._ == 'channel' ||
|
if (chat && (chat._ == 'channel' || chat._ == 'channelForbidden') ||
|
||||||
channelAccess[id]) {
|
channelAccess[id]) {
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
@ -965,7 +970,7 @@ angular.module('myApp.services', ['myApp.i18n', 'izhukov.utils'])
|
|||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
.service('AppProfileManager', function ($q, $rootScope, AppUsersManager, AppChatsManager, AppPeersManager, AppPhotosManager, NotificationsManager, MtpApiManager, RichTextProcessor) {
|
.service('AppProfileManager', function ($q, $rootScope, AppUsersManager, AppChatsManager, AppPeersManager, AppPhotosManager, NotificationsManager, MtpApiManager, ApiUpdatesManager, RichTextProcessor) {
|
||||||
|
|
||||||
var botInfos = {};
|
var botInfos = {};
|
||||||
var chatsFull = {};
|
var chatsFull = {};
|
||||||
@ -1129,6 +1134,22 @@ angular.module('myApp.services', ['myApp.i18n', 'izhukov.utils'])
|
|||||||
|
|
||||||
return fullChannel;
|
return fullChannel;
|
||||||
});
|
});
|
||||||
|
}, function (error) {
|
||||||
|
switch (error.type) {
|
||||||
|
case 'CHANNEL_PRIVATE':
|
||||||
|
var channel = AppChatsManager.getChat(id);
|
||||||
|
channel = {_: 'channelForbidden', access_hash: channel.access_hash, title: channel.title};
|
||||||
|
ApiUpdatesManager.processUpdateMessage({
|
||||||
|
_: 'updates',
|
||||||
|
updates: [{
|
||||||
|
_: 'updateChannel',
|
||||||
|
channel_id: id
|
||||||
|
}],
|
||||||
|
chats: [channel],
|
||||||
|
users: []
|
||||||
|
});
|
||||||
|
break;
|
||||||
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -48,6 +48,9 @@
|
|||||||
<div ng-switch-when="JOIN_GROUP_BY_LINK" my-i18n="confirm_modal_join_group_link">
|
<div ng-switch-when="JOIN_GROUP_BY_LINK" my-i18n="confirm_modal_join_group_link">
|
||||||
<my-i18n-param name="title"><strong ng-bind="title"></strong></my-i18n-param>
|
<my-i18n-param name="title"><strong ng-bind="title"></strong></my-i18n-param>
|
||||||
</div>
|
</div>
|
||||||
|
<div ng-switch-when="JOIN_CHANNEL_BY_LINK" my-i18n="confirm_modal_join_channel_link">
|
||||||
|
<my-i18n-param name="title"><strong ng-bind="title"></strong></my-i18n-param>
|
||||||
|
</div>
|
||||||
<div ng-switch-when="REVOKE_GROUP_INVITE_LINK" my-i18n="confirm_modal_revoke_group_link"></div>
|
<div ng-switch-when="REVOKE_GROUP_INVITE_LINK" my-i18n="confirm_modal_revoke_group_link"></div>
|
||||||
<div ng-switch-when="REVOKE_CHANNEL_INVITE_LINK" my-i18n="confirm_modal_revoke_channel_link"></div>
|
<div ng-switch-when="REVOKE_CHANNEL_INVITE_LINK" my-i18n="confirm_modal_revoke_channel_link"></div>
|
||||||
<div ng-switch-when="CHANNEL_DELETE" my-i18n="confirm_modal_delete_channel_md"></div>
|
<div ng-switch-when="CHANNEL_DELETE" my-i18n="confirm_modal_delete_channel_md"></div>
|
||||||
|
@ -42,7 +42,10 @@
|
|||||||
<span ng-switch-when="INVITE_HASH_INVALID" my-i18n="error_modal_invite_link_invalid"></span>
|
<span ng-switch-when="INVITE_HASH_INVALID" my-i18n="error_modal_invite_link_invalid"></span>
|
||||||
<span ng-switch-when="INVITE_HASH_EXPIRED" my-i18n="error_modal_invite_link_invalid"></span>
|
<span ng-switch-when="INVITE_HASH_EXPIRED" my-i18n="error_modal_invite_link_invalid"></span>
|
||||||
<span ng-switch-when="INVITE_HASH_EMPTY" my-i18n="error_modal_invite_link_invalid"></span>
|
<span ng-switch-when="INVITE_HASH_EMPTY" my-i18n="error_modal_invite_link_invalid"></span>
|
||||||
|
<span ng-switch-when="CHANNEL_PRIVATE" my-i18n="error_modal_channel_not_accessible"></span>
|
||||||
|
<span ng-switch-when="PEER_FLOOD" my-i18n="error_modal_not_contact_flood">
|
||||||
|
<my-i18n-param name="more-info-link"><a href="https://telegram.org/faq#can-39t-send-messages-to-non-contacts" target="_blank">{0}</a></my-i18n-param>
|
||||||
|
</span>
|
||||||
|
|
||||||
|
|
||||||
<div ng-switch-default ng-switch="error.code">
|
<div ng-switch-default ng-switch="error.code">
|
||||||
|
@ -48,19 +48,18 @@
|
|||||||
</ul>
|
</ul>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="im_dialogs_contacts_wrap" ng-show="foundUsers.length > 0">
|
<div class="im_dialogs_contacts_wrap" ng-show="foundPeers.length > 0">
|
||||||
<h5 my-i18n="im_found_title"></h5>
|
<h5 my-i18n="im_found_title"></h5>
|
||||||
<ul class="nav nav-pills nav-stacked">
|
<ul class="nav nav-pills nav-stacked">
|
||||||
<li class="im_dialog_wrap" ng-repeat="foundUser in foundUsers track by foundUser.userID" ng-class="{active: curDialog.peerID == foundUser.userID}">
|
<li class="im_dialog_wrap" ng-repeat="foundPeer in foundPeers track by foundPeer.id" ng-class="{active: curDialog.peerID == foundPeer.id}">
|
||||||
<a class="im_dialog" ng-mousedown="dialogSelect(foundUser.peerString)">
|
<a class="im_dialog" ng-mousedown="dialogSelect(foundPeer.peerString)">
|
||||||
<div class="im_dialog_photo pull-left" my-peer-photolink="foundUser.userID" img-class="im_dialog_photo" watch="true"></div>
|
<div class="im_dialog_photo pull-left" my-peer-photolink="foundPeer.id" img-class="im_dialog_photo" watch="true"></div>
|
||||||
<div class="im_dialog_message_wrap">
|
<div class="im_dialog_message_wrap">
|
||||||
<div class="im_dialog_peer">
|
<div class="im_dialog_peer">
|
||||||
<span class="im_dialog_user" my-peer-link="foundUser.userID"></span>
|
<span class="im_dialog_user" my-peer-link="foundPeer.id"></span>
|
||||||
</div>
|
</div>
|
||||||
<div class="im_dialog_message" ng-switch="foundUser.user.username.length > 0">
|
<div class="im_dialog_message">
|
||||||
<span ng-switch-when="true" class="im_dialog_message_text" ng-bind="::'@' + foundUser.user.username"></span>
|
<span class="im_dialog_message_text" ng-bind="::'@' + foundPeer.username"></span>
|
||||||
<span ng-switch-default class="im_dialog_message_text" my-user-status="::foundUser.userID"></span>
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</a>
|
</a>
|
||||||
|
Loading…
x
Reference in New Issue
Block a user