Esempio n. 1
0
        /// <summary>
        /// Initial Data from Database and sth. else
        /// </summary>
        public UserVerifyListViewModel()
        {
            if (IsInDesignMode)
            {
                return;
            }
            var lists = new VerifingFriend().GetVerifingsList();//读取数据库

            for (int i = 0; i < lists.Count; i++)
            {
                VerifyUserList.Add(lists[i]);
            }
            InitialMessanger();
        }
Esempio n. 2
0
 /// <summary>
 /// 添加或更新集合
 /// </summary>
 /// <param name="item">对应的项</param>
 public void AddOrUpdateToList(VerifingFriend item)
 {
     #region 修改集合
     if (VerifyUserList.Count(v => v.toUserId == item.toUserId) > 0)
     {
         App.Current.Dispatcher.Invoke(() =>
         {
             var verifyItem          = VerifyUserList.FirstOrDefault(v => v.toUserId == item.toUserId);
             verifyItem.StatusTag    = item.StatusTag;
             verifyItem.VerifyStatus = item.VerifyStatus;
         });
     }
     else//添加未存在的消息
     {
         App.Current.Dispatcher.Invoke(() =>
         {
             VerifyUserList.Add(item);
         });
     }
     #endregion
 }
Esempio n. 3
0
        /// <summary>
        /// 消息回执
        /// </summary>
        /// <param name="msg"></param>
        public void MsgReceipt(Messageobject msg)
        {
            if (msg.type >= kWCMessageType.FriendRequest && msg.type <= kWCMessageType.CancelBlackFriend)
            {
                InVerifingWaiting = false;
                var mControl   = ServiceLocator.Current.GetInstance <MainViewModel>();
                var verifyItem = VerifyUserList.FirstOrDefault(v => v.toUserId == msg.toUserId);
                if (verifyItem == null)
                {
                    verifyItem = new VerifingFriend()
                    {
                        toNickname = msg.toUserName,
                        toUserId   = msg.ToId
                    };
                }

                switch (msg.type)
                {
                case kWCMessageType.FriendRequest:    //打招呼回执
                    verifyItem.VerifyStatus = -3;
                    verifyItem.Content      = "等待验证中...";
                    break;

                case kWCMessageType.RequestAgree:    //通过验证回执
                    verifyItem.VerifyStatus = 1;
                    verifyItem.Content      = "我已通过对" + msg.toUserName /*((verifyItem.sex == 0) ? ("他") : ("她")) */ + "的验证";
                    var tmp = mControl.FriendList.FirstOrDefault(m => m.Jid == msg.toUserId);
                    //mControl.MsgItemMouseDown(tmp);
                    mControl.StartNewChatFromItem(tmp.Clone());
                    mControl.Snackbar.Enqueue(verifyItem.Content);    //
                    //ServiceLocator.Current.GetInstance<MainViewModel>().LoadAllFriendsByApi();
                    break;

                case kWCMessageType.RequestRefuse: //回话回执
                    InProgress   = false;          //不处于发送状态
                    DialogShow   = false;          //关闭对话框
                    AnswerContnt = "";             //清空文本
                    SnackBar.Enqueue("回话给" + msg.toUserName + "成功");
                    break;

                case kWCMessageType.DeleteFriend:
                    verifyItem.Content      = "已删除好友 " + msg.toUserName;
                    verifyItem.toNickname   = msg.toUserName;  //此处为接收者Name
                    verifyItem.VerifyStatus = -1;
                    break;

                case kWCMessageType.BlackFriend:
                    verifyItem.Content    = "已将好友 " + msg.toUserName + " 拉黑";
                    verifyItem.toNickname = msg.toUserName;    //此处为接收者Name
                    break;

                case kWCMessageType.RequestFriendDirectly:    //直接添加好友
                    verifyItem.VerifyStatus = 1;
                    verifyItem.Content      = "已添加好友" + msg.toUserName /*((verifyItem.sex == 0) ? ("他") : ("她"))*/;
                    if (new DataOfFriends().ExistsLocal(msg.ToId))    //本地数据库有用户
                    {
                        var dbFri = new DataOfFriends().GetByUserId(msg.ToId);
                        dbFri.UpdateFriendState(msg.ToId, 2);    //互为好友
                    }
                    else
                    {
                    }
                    Messenger.Default.Send(verifyItem.Content, MainViewNotifactions.SnacbarMessage);    //提示
                    break;

                case kWCMessageType.CancelBlackFriend:
                    var tuser = new DataOfFriends().GetByUserId(msg.toUserId);
                    verifyItem.Content      = "已将 " + tuser.toNickname + " 移出黑名单";
                    verifyItem.VerifyStatus = 1;    //互为好友
                    break;

                default:
                    break;
                }
                //更新最近用户中的内容
                Messenger.Default.Send(new MessageListItem
                {
                    Jid = "10001",
                    MessageItemContent = verifyItem.Content,
                    Avator             = Applicate.LocalConfigData.GetDisplayAvatorPath("10001")
                }, MainViewNotifactions.UpdateRecentItemContent);
                AddOrUpdateToList(verifyItem); //更新UI
                verifyItem.InsertOrUpdate();   //存入数据库
                verifyItem.Update();           //更新至数据库
            }
        }
Esempio n. 4
0
        /// <summary>
        /// 收到消息时
        /// </summary>
        /// <param name="msg">收到的新消息</param>
        public void ProcessNewMessage(Messageobject msg)
        {
            if (msg.type >= kWCMessageType.FriendRequest && msg.type <= kWCMessageType.PhoneContactToFriend)
            {
                var vItem    = new VerifingFriend();
                var mControl = ServiceLocator.Current.GetInstance <MainViewModel>();
                if (VerifyUserList.FirstOrDefault(v => v.toUserId == msg.fromUserId) != null)
                {
                    vItem = VerifyUserList.FirstOrDefault(v => v.toUserId == msg.fromUserId);
                }

                switch (msg.type)
                {
                case kWCMessageType.FriendRequest:
                    vItem.VerifyStatus = -4;          //对方添加己方
                    vItem.StatusTag    = "通过验证";
                    vItem.Content      = msg.content; //消息内容
                    break;

                case kWCMessageType.RequestAgree:
                    vItem.VerifyStatus = 1;
                    vItem.StatusTag    = "已通过验证";
                    vItem.Content      = "验证被" + msg.fromUserName /*((vItem.sex == 0) ? ("他") : ("她"))*/ + "通过了";
                    //mControl.AddToFriendList(msg.FromId);//添加到好友列表
                    var tmp = new MessageListItem()
                    {
                        Jid             = msg.FromId,
                        ShowTitle       = msg.fromUserName,
                        MessageTitle    = msg.fromUserName,
                        MessageItemType = ItemType.Message,
                        Avator          = Applicate.LocalConfigData.GetDisplayAvatorPath(msg.FromId)
                    };
                    mControl.MsgItemMouseDown(tmp);
                    mControl.StartNewChatFromItem(tmp.Clone());
                    break;

                case kWCMessageType.RequestRefuse:    //对方回话
                    //item.StatusTag = "";
                    vItem.CanAnswer = true;
                    vItem.Content   = msg.content; //回话内容
                    DialogShow      = false;
                    AnswerContnt    = "";          //清空文本
                    break;

                case kWCMessageType.DeleteFriend:
                    //System.Windows.Forms.MessageBox.Show("删除成功");
                    vItem.Content      = msg.fromUserName + " 已删除了我";
                    vItem.VerifyStatus = 0;
                    break;

                case kWCMessageType.BlackFriend:
                    vItem.VerifyStatus = 0;
                    vItem.Content      = msg.fromUserName + " 拉黑了我";
                    break;

                case kWCMessageType.RequestFriendDirectly:
                    vItem.VerifyStatus = 1;                            //互为好友
                    vItem.Content      = msg.fromUserName + " 添加你为好友"; //消息内容
                    break;

                case kWCMessageType.CancelBlackFriend:
                    vItem.Content = msg.fromUserName + " 取消了黑名单";
                    Messenger.Default.Send(vItem.toUserId, MainViewNotifactions.CancelBlockItem);
                    var tmpFriend = new DataOfFriends();
                    break;

                default:
                    break;
                }
                //更新最近用户中的内容
                Messenger.Default.Send(new MessageListItem
                {
                    Jid = "10001",
                    MessageItemContent = vItem.Content,
                    Avator             = Applicate.LocalConfigData.GetDisplayAvatorPath("10001")
                }, MainViewNotifactions.UpdateRecentItemContent);
                vItem.toUserId   = msg.fromUserId;            //UserId
                vItem.toNickname = msg.fromUserName;          //昵称
                vItem.Type       = Convert.ToInt32(msg.type); //消息类型
                vItem.InsertOrUpdate();                       //存入数据库
                AddOrUpdateToList(vItem);
            }
        }