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); }
protected async Task <ChadderError> SendMessageToServer(ChadderMessage msg, ChadderConversation conversation) { try { BasicMessage package = null; if (msg.Type == ChadderMessage.MESSAGE_TYPE.TEXT) { package = new TextMessage() { Body = msg.Body }; } else if (msg.Type == ChadderMessage.MESSAGE_TYPE.PICTURE) { if (msg.Picture.ToBeUploaded) { var record = await sqlDB.GetPicture(msg.Picture.RecordId); var presult = await UploadPicture(record); if (presult.Error == ChadderError.OK) { msg.PictureId = record.PictureId; await sqlDB.UpdateAsync(msg); } else { return(presult.Error); } } package = new ImageMessage() { PictureId = msg.PictureId }; } else { Insight.Track("Invalid Message Type in SendMessageToServer"); return(ChadderError.INVALID_INPUT); } package.Id = msg.MessageId; package.Group = null; package.TimeSent = msg.TimeSent.Value; package.Expiration = msg.Expiration.Value; 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) { msg.Status = ChadderMessage.MESSAGE_STATUS.SENT; msg.TimeServer = result.Time; msg.ReferenceId = result.Extra; await sqlDB.UpdateAsync(msg); } return(result.Error); } catch (Exception ex) { Insight.Report(ex); return(ChadderError.GENERAL_EXCEPTION); } }