|
|
@ -507,9 +507,10 @@ angular.module('myApp.services', ['myApp.i18n', 'izhukov.utils']) |
|
|
|
|
|
|
|
|
|
|
|
}) |
|
|
|
}) |
|
|
|
|
|
|
|
|
|
|
|
.service('AppChatsManager', function ($rootScope, $modal, _, MtpApiFileManager, MtpApiManager, AppUsersManager, RichTextProcessor) { |
|
|
|
.service('AppChatsManager', function ($q, $rootScope, $modal, _, MtpApiFileManager, MtpApiManager, AppUsersManager, AppPhotosManager, RichTextProcessor) { |
|
|
|
var chats = {}, |
|
|
|
var chats = {}, |
|
|
|
chatsFull = {}, |
|
|
|
chatsFull = {}, |
|
|
|
|
|
|
|
chatFullPromises = {}, |
|
|
|
cachedPhotoLocations = {}; |
|
|
|
cachedPhotoLocations = {}; |
|
|
|
|
|
|
|
|
|
|
|
function saveApiChats (apiChats) { |
|
|
|
function saveApiChats (apiChats) { |
|
|
@ -545,6 +546,29 @@ angular.module('myApp.services', ['myApp.i18n', 'izhukov.utils']) |
|
|
|
return chats[id] || {id: id, deleted: true}; |
|
|
|
return chats[id] || {id: id, deleted: true}; |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
function getChatFull(id) { |
|
|
|
|
|
|
|
if (chatsFull[id] !== undefined) { |
|
|
|
|
|
|
|
return $q.when(chatsFull[id]); |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
if (chatFullPromises[id] !== undefined) { |
|
|
|
|
|
|
|
return chatFullPromises[id]; |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
return chatFullPromises[id] = MtpApiManager.invokeApi('messages.getFullChat', { |
|
|
|
|
|
|
|
chat_id: id |
|
|
|
|
|
|
|
}).then(function (result) { |
|
|
|
|
|
|
|
AppChatsManager.saveApiChats(result.chats); |
|
|
|
|
|
|
|
AppUsersManager.saveApiUsers(result.users); |
|
|
|
|
|
|
|
if (result.full_chat && result.full_chat.chat_photo.id) { |
|
|
|
|
|
|
|
AppPhotosManager.savePhoto(result.full_chat.chat_photo); |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
// NotificationsManager.savePeerSettings(-id, result.notify_settings);
|
|
|
|
|
|
|
|
delete chatFullPromises[id]; |
|
|
|
|
|
|
|
$rootScope.$broadcast('chat_full_update', id); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
return chatsFull[id] = result; |
|
|
|
|
|
|
|
}); |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
function hasChat (id) { |
|
|
|
function hasChat (id) { |
|
|
|
return angular.isObject(chats[id]); |
|
|
|
return angular.isObject(chats[id]); |
|
|
|
} |
|
|
|
} |
|
|
@ -607,10 +631,25 @@ angular.module('myApp.services', ['myApp.i18n', 'izhukov.utils']) |
|
|
|
}); |
|
|
|
}); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
$rootScope.$on('apiUpdate', function (e, update) { |
|
|
|
|
|
|
|
// console.log('on apiUpdate', update);
|
|
|
|
|
|
|
|
switch (update._) { |
|
|
|
|
|
|
|
case 'updateChatParticipants': |
|
|
|
|
|
|
|
var participants = update.participants; |
|
|
|
|
|
|
|
var chatFull = chatsFull[participants.id]; |
|
|
|
|
|
|
|
if (chatFull !== undefined) { |
|
|
|
|
|
|
|
chatFull.participants = update.participants; |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
$rootScope.$broadcast('chat_full_update', chatID); |
|
|
|
|
|
|
|
break; |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
}); |
|
|
|
|
|
|
|
|
|
|
|
return { |
|
|
|
return { |
|
|
|
saveApiChats: saveApiChats, |
|
|
|
saveApiChats: saveApiChats, |
|
|
|
saveApiChat: saveApiChat, |
|
|
|
saveApiChat: saveApiChat, |
|
|
|
getChat: getChat, |
|
|
|
getChat: getChat, |
|
|
|
|
|
|
|
getChatFull: getChatFull, |
|
|
|
getChatPhoto: getChatPhoto, |
|
|
|
getChatPhoto: getChatPhoto, |
|
|
|
getChatString: getChatString, |
|
|
|
getChatString: getChatString, |
|
|
|
hasChat: hasChat, |
|
|
|
hasChat: hasChat, |
|
|
|