Esempio n. 1
0
 private void InitialMessanger()
 {
     ////Xmpp通知注册
     Messenger.Default.Register <Messageobject>(this, CommonNotifications.XmppMsgRecived, msg => { ProcessNewMessage(msg); });
     Messenger.Default.Register <Messageobject>(this, CommonNotifications.XmppMsgReceipt, (msg) => MsgReceipt(msg));
     Messenger.Default.Register <VerifingFriend>(this, VerifyFriendLIstToken.DeleteVerifyItem, (item) =>
     {
         App.Current.Dispatcher.Invoke(() =>
         {
             VerifyUserList.Remove(item);
         });
     });
 }
Esempio n. 2
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. 3
0
        public void OnUserNameChanged(string jid, string nickname)
        {
            if (jid.Length > 10)
            {
                return;
            }

            App.Current.Dispatcher.Invoke(() =>
            {
                var item = VerifyUserList.FirstOrDefault(v => v.toUserId == jid);
                if (item != null)
                {
                    item.toNickname = nickname;//更新昵称
                }
            });
        }
Esempio n. 4
0
        /// <summary>
        /// 验证用户信息(加好友)
        /// </summary>
        public BaseResponse VerifyUser(string userName, string ticket, WechatCookie wechatCookie, string cookieStr)
        {
            string             url     = string.Format(WechatUrl.VerifyUserUrl, WechatCommon.GetTicks(), wechatCookie.Pass_Ticket);
            VerifyUserParamter param   = new VerifyUserParamter();
            BaseRequest        request = new BaseRequest();

            request.DeviceID         = DeviceID;
            request.Sid              = wechatCookie.Wxsid;
            request.Skey             = wechatCookie.Skey;
            request.Uin              = wechatCookie.Wxuin;
            param.BaseRequest        = request;
            param.Opcode             = 3;
            param.SceneList          = new int[] { 3 };
            param.SceneListCount     = 1;
            param.skey               = wechatCookie.Skey;
            param.VerifyContent      = "";
            param.VerifyUserListSize = 1;
            IList <VerifyUserList> verifyUserList = new List <VerifyUserList>();
            VerifyUserList         verifyUser     = new VerifyUserList();

            verifyUser.Value            = userName;
            verifyUser.VerifyUserTicket = ticket;
            verifyUserList.Add(verifyUser);
            param.VerifyUserList = verifyUserList;

            string postData = JsonConvert.SerializeObject(param);

            string html = HttpCommon.instance.PostHttp(url, postData, ContentType.json, cookieStr);

            AppLog.WriteInfo(string.Format("协议:{0},结果:{1}", "VerifyUser", html));

            BaseResponse response = new BaseResponse();

            try
            {
                if (!string.IsNullOrEmpty(html) && html != "操作超时")
                {
                    response = JsonConvert.DeserializeObject <BaseResponse>(html);
                }
            }
            catch (Exception ex)
            {
                AppLog.WriteError(ex.Message);
            }
            return(response);
        }
Esempio n. 5
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. 6
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. 7
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);
            }
        }