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);
        }
Esempio n. 2
0
        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));
                        }
                    }
                }
            }
        }