private async void Btnadd_Click(object sender, RoutedEventArgs e) { if (IsSuccess) { try { AVUser friend = await AVUser.Query.WhereEqualTo("username", friendname.Text).FirstAsync(); //先检查对方是否已经为好友 if (Conversation.MemberIds.Contains(friend.ObjectId)) { MessageBox.Show("你们已经是好友啦"); } else { //不是好友再检测对方是否在线 List <string> friends = new List <string> { friend.ObjectId }; if ((await User.PingAsync(targetClientIds: friends)).First().Item2) { //在线 await User.CreateConversationAsync(friend.ObjectId, isUnique : true); MessageBox.Show("添加成功,等待对方确认"); Close(); } else { //不在线 MessageBox.Show("对方不在线,请稍后重试"); } } } catch (AVException error) { MessageBox.Show(error.Message); } } else { Friendname_LostFocus(new object(), new RoutedEventArgs()); } }
//绑定好友信息 private async void BindingFriendListSrouce(string newfriend = null) { //完全重新加载list if (newfriend == null) { //如果有好友的话 if (FriendsConversation.MemberIds != null) { //TODO:优化成add MyFriendsList.Clear(); //显示自己的好友 foreach (var online in await User.PingAsync(targetClientIds: FriendsConversation.MemberIds)) { if (online.Item1 != AVUser.CurrentUser.ObjectId) { var user = await AVUser.Query.GetAsync(online.Item1); //将获取到的好友信息保存到列表中,根据client判断用户是否在线 MyFriendsList.Add(new UserList(user, online.Item2)); } } //如果有离线信息的话,将离线的消息保存==》TODO:离线消息顺序有变化,待解决 if (OfflineMessageList != null) { App.Current.Dispatcher.Invoke((Action)(() => { OfflineMessageList.ForEach((messgae) => { MyFriendsList.ForEach((Friend) => { if (Friend.Friend.ObjectId == messgae.Message.FromClientId) { //将消息加入对应好友的消息列表 Friend.MessageList.Add(new Message(messgae.Message)); //在主页面对应用户上做提示 Friend.Visibility = Visibility.Visible; } }); }); //最后清空离线消息 OfflineMessageList = null; })); } } } //仅add else { List <string> friends = new List <string> { newfriend }; foreach (var online in await User.PingAsync(targetClientIds: friends)) { if (online.Item1 != AVUser.CurrentUser.ObjectId) { var user = await AVUser.Query.GetAsync(online.Item1); //将获取到的好友信息保存到列表中,根据client判断用户是否在线 MyFriendsList.Add(new UserList(user, online.Item2)); } } } //将列表中的好友信息绑定到listbox里 friendlist.ItemsSource = null; friendlist.ItemsSource = MyFriendsList; }