示例#1
0
    //只能实例化一次
    public static ChatHistoryManager GetInstance()
    {
        if (chatHistoryManager == null)
        {
            chatHistoryManager = new ChatHistoryManager();
        }

        return(chatHistoryManager);
    }
 public void TestMust_Get2ChatsForLastDays()
 {
     var db = new MockSQLite();
     var languageManager = new LanguageManager(db);
     var chatHistoryManager = new ChatHistoryManager(db);
     var chatManager = new ChatManager(db, languageManager, chatHistoryManager);
     var list = chatManager.GetChatsForLastDays(5);
     Assert.IsTrue(list.Count == 2);
 }
示例#3
0
    /// <summary>
    /// 按钮发送消息
    /// </summary>
    public void ButSendChatMsg()
    {
        if (CreateMyselfMsgText(I_Content.text))//先生成UI消息
        {
            SendInfo.SendChatMessage(friendInfo.friend_id, I_Content.text);

            ChatHistoryManager.GetInstance().SaveChatHistory(friendInfo, 0, I_Content.text);
            //清空
            TextClear();
        }
    }
示例#4
0
    private void OnDestroy()
    {
        print("关闭程序");

        //关闭套接字连接
        ConnectInfo.GetInstance().CloseSocket();

        //清理监听器
        ReceiveManage.GetInstance().Close();

        //退出时保存聊天记录
        ChatHistoryManager.GetInstance().ExitAndSave();
    }
        protected override void OnCreate(Bundle savedInstanceState)
        {
            base.OnCreate(savedInstanceState);

            base.ActionBar.NavigationMode = ActionBarNavigationMode.Tabs;

            var languageManager = new LanguageManager(SqlLiteInstance.DB);
            var chatHistoryManager = new ChatHistoryManager(SqlLiteInstance.DB);
            presenter = new DirectionsPresenter(this, new ChatManager(SqlLiteInstance.DB, languageManager, chatHistoryManager), languageManager);

            addTab("Recent", Resource.Layout.DirectionsRecent, new Action(()=> presenter.SelectedRecentLanguagesEvent()));
            addTab("All languages", Resource.Layout.DirectionsAll, new Action(()=> presenter.SelectedAllLanguagesEvent(Locale.Default.Language)));
        }
        public void TestMust_GetListRecentDirections()
        {
            //arrange
            var db = new MockSQLite();
            var languageManager = new LanguageManager(db);
            var mockView = new MockDirectionsView();
            var chatHistoryManager = new ChatHistoryManager(db);
            var presenter = new DirectionsPresenter(mockView, new ChatManager(db, languageManager, chatHistoryManager), languageManager);

            //act
            presenter.SelectedRecentLanguagesEvent();

            //assert
            Assert.AreEqual(2, mockView.listDirectionsRecent.Count);
            Assert.AreEqual(1, mockView.listDirectionsRecent[0].ChatId);//порядок важен
            Assert.AreEqual(2, mockView.listDirectionsRecent[1].ChatId);//порядок важен
        }
        public void TestMust_GetListAllDirections()
        {
            //arrange
            var db = new MockSQLite();
            var languageManager = new LanguageManager(db);
            var mockView = new MockDirectionsView();
            var chatHistoryManager = new ChatHistoryManager(db);
            var presenter = new DirectionsPresenter(mockView, new ChatManager(db, languageManager, chatHistoryManager), languageManager);

            //act
            presenter.SelectedAllLanguagesEvent("en");

            //assert
            Assert.GreaterOrEqual(6, mockView.listLanguages.Count, "Количество элементов меньше ожидаемого");
            Assert.IsTrue(mockView.listLanguages.Exists(i => i.NameLocal == "Русский"), "В коллекции нет Русского языка, а должен быть");
            Assert.IsTrue(mockView.listLanguages.Exists(i => i.NameLocal == "English"), "В коллекции нет Английского языка, а должен быть");
        }
        public void TestMust_FoundCurrentLocaleLanguageAtBottomList()
        {
            //arrange
            var db = new MockSQLite();
            var languageManager = new LanguageManager(db);
            var mockView = new MockDirectionsView();
            var chatHistoryManager = new ChatHistoryManager(db);
            var presenter = new DirectionsPresenter(mockView, new ChatManager(db, languageManager, chatHistoryManager), languageManager);
            string localeLanguage = "ru";

            //act
            presenter.SelectedAllLanguagesEvent(localeLanguage);

            //assert
            Assert.GreaterOrEqual(6, mockView.listLanguages.Count, "Количество элементов меньше ожидаемого");
            Assert.IsTrue(mockView.listLanguages[mockView.listLanguages.Count - 1].NameShort == localeLanguage, "Русский язык должен быть в самом низу списка поскольку это язык локалии");
        }
示例#9
0
 /// <summary>
 /// 插入离线留言消息
 /// </summary>
 /// <param name="info"></param>
 private void InsertOfflineMessage(FriendInfo info)
 {
     //检查是否已经生成UI通讯录UI
     if (!lobbyManager.friendInfos.ContainsKey(info.friend_id))
     {
         if (info.friend_attest == 1)
         {
             foreach (var msg in info.chat_message)
             {
                 //插入历史聊天记录
                 ChatHistoryManager.GetInstance().SaveChatHistory(friendInfos[info.friend_id], 1, msg.msg);
             }
         }
         else
         {
             Debug.Log("不是好友不保存");
         }
     }
 }
示例#10
0
    /// <summary>
    /// 将接收消息
    /// 查找消息好友id
    /// </summary>
    /// <param name="pack"></param>
    public void ReceiveMessage(DataPackage pack)
    {
        if (pack.requestType == RequestType.chat)
        {
            // 用Loom的方法在Unity主线程中调用
            Loom.QueueOnMainThread((param) =>
            {
                if (UI_LobbyManager.myselfInfo.user_id.Equals(pack.userInfo.user_id))
                {
                    //判断聊天面板是否存在好友聊天面板
                    if (ui_ChatPanels.ContainsKey(pack.friendId))
                    {
                        string msg = System.Text.Encoding.UTF8.GetString(pack.data);

                        //创建消息
                        ui_ChatPanels[pack.friendId].CreateFriendMsgText(msg);

                        //插入历史聊天记录
                        ChatHistoryManager.GetInstance().SaveChatHistory(UI_LobbyManager.lobbyManager.friendInfos[pack.friendId], 1, msg);
                    }
                    else
                    {
                        //判断通讯录里是否有好友
                        if (UI_LobbyManager.lobbyManager.friendInfos.ContainsKey(pack.friendId))
                        {
                            //创建面板
                            UI_MessageControl.setFriend(UI_LobbyManager.lobbyManager.friendInfos[pack.friendId]);

                            /*
                             * 加入Dictionary,但是刷新不出来,第二次接收消息时才能刷新
                             */
                            ui_ChatPanels[pack.friendId].CreateFriendMsgText(System.Text.Encoding.UTF8.GetString(pack.data));
                        }
                    }
                }
                else
                {
                    Debug.LogError("不是自己好友的消息");
                    Debug.Log("聊天:" + LitJson.JsonMapper.ToJson(pack));
                }
            }, null);
        }
    }
示例#11
0
    /// <summary>
    /// 加载历史聊天记录
    /// </summary>
    void LoadLocalHistories()
    {
        if (ChatHistoryManager.GetInstance().LoadChatHistory() != null)
        {
            //加载本地所有好友信息
            foreach (FriendInfo localFriend in ChatHistoryManager.GetInstance().LoadChatHistory())
            {
                //调用委托实例消息列表
                UI_MessageControl.setFriend(localFriend);

                //调用委托实例通讯录列表
                UI_ContactsManager.setFriend(localFriend);

                if (!friendInfos.ContainsKey(localFriend.friend_id))
                {
                    friendInfos.Add(localFriend.friend_id, localFriend);
                }
            }
        }
    }