private void OnContactUpdated(ModelUpdatedMessageResult <Contact> updateResult) { RecentContacts.UpdateCollection(updateResult.UpdatedModel, updateResult.UpdateEvent); if (RecentContacts.Count == 1 && !CurrentUser.HasShownFirstContactAchievementPrompt) { ShowFirstContactPrompt(); } }
private async void RemoveContact(Contact contact) { var result = await UserNotifier.ShowConfirmAsync("Are your sure you want to delete this contact?", "delete contact", "yes"); if (result) { var deleteResult = await _repository.DeleteContactAsync(contact); if (deleteResult.IsValid()) { RecentContacts.UpdateCollection(contact, ModelUpdateEvent.Deleted); } } }
/// <summary> /// 将消息添加到数据库中 若添加失败,则返回0 /// 若是重复消息,则返回-1 /// </summary> /// <param name="msg"></param> /// <returns></returns> public int InsertMsg(Msg msg) { try { var unitOfWork = new UnitOfWork(); //查询是不是重发的(主要是关于移动端的)添加前先查询是否已经存在对应的数据 if (!string.IsNullOrEmpty(msg.id1)) { var query = unitOfWork.DIMMsg.Get(p => p.FromuID == msg.fromuid && p.id1 == msg.id1).FirstOrDefault(); if (query != null) { LoggerHelper.Error("尝试添加一条重复的消息:" + JsonConvert.SerializeObject(msg)); return(-1); } } var immsg = new IMMsg { FromuID = msg.fromuid, CreateDate = DateTime.Now, TouID = msg.touid, CreateUser = msg.fromuid, QuoteContent = msg.quoteContent, fromusername = msg.fromrealname, tousername = msg.torealname, isgroup = msg.isgroup, Type = msg.msgtype.ToString(), id1 = string.Empty,//默认为空 IsDel = 0, NewFileName = string.Empty, Msg = msg.msg, IsNotice = false, FileUrl = msg.filename, ThumbCount = 0, }; if (msg.quoteId != null) { immsg.QuoteId = msg.quoteId; } else { immsg.QuoteId = 0; } if (!string.IsNullOrEmpty(msg.id1)) { immsg.id1 = msg.id1; } if (msg.msgtype == 0) { //纯文本消息 //去掉html标签 immsg.Msg = RemoveHTML(msg.msg); } else if (msg.msgtype == 1) { //单张图片,存放的是图片的url //immsg.Msg = msg.msg; immsg.FileUrl = msg.filename; } else if (msg.msgtype == 2) { //文件消息 immsg.Msg = msg.filename; immsg.FileUrl = msg.msg; //暂时用Duration这个字段来存放文件的大小,以字节为单位 immsg.Duration = msg.duration; /* * 1.取出filecode */ if (msg.msg.Contains("&fileCode=")) { var index = msg.msg.LastIndexOf("&fileCode="); var fileCode = msg.msg.Substring(index + 10); immsg.NewFileName = fileCode; } } else if (msg.msgtype == 3) { //图文混合消息, immsg.Msg = msg.msg; immsg.ImgList = ""; foreach (var img in msg.imglist) { immsg.ImgList += img + ";"; } } else if (msg.msgtype == 4) { //语音消息 immsg.Msg = "语音消息"; immsg.FileUrl = msg.msg; immsg.Duration = msg.duration; } else if (msg.msgtype == 5) { //地图类消息 用这个字段存放json var p = new GDPosition(); p.latitude = msg.filename; p.address = msg.msg; immsg.Msg = JsonConvert.SerializeObject(p); } immsg.SubjectId = "0";//默认为0 if (!string.IsNullOrEmpty(msg.subjectId)) { if (msg.subjectId == "null") { immsg.SubjectId = "0"; } else { immsg.SubjectId = msg.subjectId; } } msg.msgtime = DateTime.Now.ToString("yyyy/MM/dd HH:mm:ss"); unitOfWork.DIMMsg.Insert(immsg); var result = unitOfWork.Save(); if (result.ResultType == OperationResultType.Success) { msg.id0 = immsg.ID.ToString(); Task.Run(() => { /*2019年5月13日 新增,更新最近聊天发送聊天记录的数据,这里只更新单人聊天*/ if (msg.isgroup == 0) { var query = unitOfWork.DRecentContacts.Get( p => (p.uID == msg.fromuid && p.ContactID == msg.touid) || (p.uID == msg.touid && p.ContactID == msg.fromuid)) .FirstOrDefault(); if (query != null) { query.ContactDate = Convert.ToDateTime(msg.msgtime); unitOfWork.DRecentContacts.Update(query); } else { var item = new RecentContacts(); item.uID = msg.fromuid; item.ContactID = msg.touid; item.ContactDate = DateTime.Now; unitOfWork.DRecentContacts.Insert(item); } unitOfWork.Save(); } }); return(immsg.ID); } return(0); } catch (Exception ex) { //记录下异常 LoggerHelper.Error(ex.ToString()); return(0); } }