From 2c02832f5c3438690942e7a55f6f58adb0f9632c Mon Sep 17 00:00:00 2001 From: Igor Zhukov Date: Mon, 2 Nov 2015 15:38:53 +0300 Subject: [PATCH] Fixed delete messages from channels Closes #950 Closes #953 --- app/js/messages_manager.js | 65 +++++++++++++++++++++++++++++++------- 1 file changed, 53 insertions(+), 12 deletions(-) diff --git a/app/js/messages_manager.js b/app/js/messages_manager.js index 0a9e3876..6e1a2e2e 100644 --- a/app/js/messages_manager.js +++ b/app/js/messages_manager.js @@ -831,20 +831,61 @@ angular.module('myApp.services') } function deleteMessages (messageIDs) { - return MtpApiManager.invokeApi('messages.deleteMessages', { - id: messageIDs - }).then(function (affectedMessages) { - ApiUpdatesManager.processUpdateMessage({ - _: 'updateShort', - update: { - _: 'updateDeleteMessages', - messages: messageIDs, - pts: affectedMessages.pts, - pts_count: affectedMessages.pts_count + var splitted = splitMessageIDsByChannels(messageIDs); + var promises = []; + angular.forEach(splitted.msgIDs, function (msgIDs, channelID) { + var promise; + if (channelID > 0) { + var channel = AppChatsManager.getChat(channelID); + if (!channel.pFlags.creator) { + var goodMsgIDs = []; + if (channel.pFlags.editor) { + angular.forEach(msgIDs, function (msgID, i) { + var message = getMessage(splitted.mids[channelID][i]); + if (message.out) { + goodMsgIDs.push(msgID); + } + }); + } + if (!goodMsgIDs.length) { + return; + } + msgIDs = goodMsgIDs; } - }); - return messageIDs; + promise = MtpApiManager.invokeApi('channels.deleteMessages', { + channel: AppChatsManager.getChannelInput(channelID), + id: msgIDs + }).then(function (affectedMessages) { + ApiUpdatesManager.processUpdateMessage({ + _: 'updateShort', + update: { + _: 'updateDeleteChannelMessages', + channel_id: channelID, + messages: msgIDs, + pts: affectedMessages.pts, + pts_count: affectedMessages.pts_count + } + }); + }); + } else { + promise = MtpApiManager.invokeApi('messages.deleteMessages', { + id: msgIDs + }).then(function (affectedMessages) { + ApiUpdatesManager.processUpdateMessage({ + _: 'updateShort', + update: { + _: 'updateDeleteMessages', + messages: msgIDs, + pts: affectedMessages.pts, + pts_count: affectedMessages.pts_count + } + }); + }); + } + promises.push(promise); }); + + return $q.all(promises); } function processAffectedHistory (inputPeer, affectedHistory, method) {