public void ChatWithContact(WeChatUser contact) { var chat = ChatList.FirstOrDefault(p => p.UserName == contact.UserName); if (chat == null) { chat = contact; ChatList.Insert(0, chat); } else { ChatList.Move(ChatList.IndexOf(chat), 0); } SelectedItem = chat; }
public void ModChat(params WeChatUser[] chat) { var selected = SelectedItem; foreach (var item in chat) { var local = ChatList.FirstOrDefault(p => p.UserName == item.UserName); if (local != null) { if (SelectedItem == local) { selected = item; } item.MessageList.AddRange(local.MessageList); //将本地聊天的信息拷贝过来 ChatList.Remove(local); } ChatList.Insert(0, item); //将修改后的聊天放在首位 ChatImageDownloadService.Add(item); } SelectedItem = selected; }
public void SyncMessage(params WeChatMessage[] messages) { var selected = SelectedItem; foreach (var msg in messages) { if (msg.IsLoadMoreChats) { continue; } string chatUserName = msg.IsReceive ? msg.FromUserName : msg.ToUserName; var chat = ChatList.FirstOrDefault(p => p.UserName == chatUserName); if (chat != null) { //消息在当前聊天列表中产生 ChatList.Move(ChatList.IndexOf(chat), 0); } else { //当前列表没有找到 chat = ContactListManager.FindContact(chatUserName); if (chat == null) { continue; } ChatList.Insert(0, chat); ChatImageDownloadService.Add(chat); } if (msg.MsgType != 51) //51类型消息不插入消息列表 { chat.LastMessage = msg.Content; chat.LastShortTime = msg.ShortTime; msg.IsRoom = chat.IsRoomContact(); if (msg.MsgType != 10000) //如果不是系统消息 { if (msg.IsReceive) //只有收到消息需要显示名称 { //是收到消息 if (msg.IsRoom) { //如果是群消息,且不是邀请人进群的消息 var member = chat.MemberList.FirstOrDefault(p => msg.Content.StartsWith(p.UserName)); if (member == null) { continue; } msg.Content = msg.Content.Replace(member.UserName + ":<br/>", ""); chat.LastMessage = member.ShowName + ":" + msg.Content; msg.FromUserName = member.UserName; msg.FromUserShowName = member.ShowName; } else { //不是群消息则显示对方显示名称 msg.FromUserShowName = chat.ShowName; } } //处理消息头像 msg.Uri = msg.FromUserName.GetIconUrl(); MessageImageDownloadService.Add(msg); var last = chat.MessageList.Where(p => p.ShowShortTime).LastOrDefault(); if (last == null || (msg.CreateDateTime - last.CreateDateTime).Minutes > 3) //如果新消息之前的消息不存在或者不在三分钟内,则显示时间 { msg.ShowShortTime = true; } } chat.MessageList.Add(msg); } } SelectedItem = selected; }