public void DeleteMessages() { var deletingMessages = Items.Where(x => x.IsSelected).ToList(); if (deletingMessages.Count > 0) { var chat = Chat as TLEncryptedChat; if (chat == null) { return; } var messageId = new TLVector <TLLong> { Items = deletingMessages.Select(x => x.RandomId).ToList() }; var action = new TLDecryptedMessageActionDeleteMessages { RandomIds = messageId }; var decryptedTuple = GetDecryptedServiceMessageAndObject(action, chat, MTProtoService.CurrentUserId, CacheService); SendEncryptedService(chat, decryptedTuple.Item2, MTProtoService, CacheService, result => BeginOnUIThread(() => { foreach (var deletedMessage in deletingMessages) { Items.Remove(deletedMessage); } NotifyOfPropertyChange(() => DescriptionVisibility); CacheService.DeleteDecryptedMessages(messageId); })); } }
private void DeleteMessage(TLDecryptedMessage message) { if (message == null) { return; } var chat = Chat as TLEncryptedChat; if (chat == null) { return; } var messageId = new TLVector <TLLong> { message.RandomId }; if (message.Status == MessageStatus.Failed) { Items.Remove(message); NotifyOfPropertyChange(() => DescriptionVisibility); CacheService.DeleteDecryptedMessages(messageId); } else { var deleteMessagesAction = new TLDecryptedMessageActionDeleteMessages { RandomIds = messageId }; var decryptedTuple = GetDecryptedServiceMessageAndObject(deleteMessagesAction, chat, MTProtoService.CurrentUserId, CacheService); SendEncryptedService(chat, decryptedTuple.Item2, MTProtoService, CacheService, result => BeginOnUIThread(() => { Items.Remove(message); NotifyOfPropertyChange(() => DescriptionVisibility); CacheService.DeleteDecryptedMessages(messageId); })); } }