public async Task <ChadderError> TakeAllMessagesBack(ChadderConversation conversation) { var package = new TakeMessageBackContent(); var content = await EncryptForUser(package, conversation.Contact); var request = new SendPackageParameter() { UserId = conversation.ContactUserId, Data = content.Serialize() }; var result = await AuthorizedRequest <BasicResponse <string> >(Connection.ChatHub, "SendPackageToUser", request); if (result.Error == ChadderError.OK) { await db.DeleteAllMessages(conversation); } return(result.Error); }
public virtual async Task ProcessTakeBack(TakeMessageBackContent content, string fromId, string toId) { ChadderConversation conversation = null; if (fromId == db.LocalUser.UserId) { conversation = db.GetContactConversation(toId); } else { conversation = db.GetContactConversation(fromId); } if (content.MessageIds.Count == 0) { foreach (var msg in conversation.Messages) { if (msg.UserId == fromId) { await db.DeleteMessage(msg, conversation); } } } else { foreach (var id in content.MessageIds) { var msg = conversation.Messages.FirstOrDefault(i => i.MessageId == id); if (msg != null) { if (msg.Sender.UserId == fromId) { await db.DeleteMessage(msg, conversation); } else { Insight.Track(string.Format("User {0} unauthorized take back", fromId)); } } } } }