//只能实例化一次 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); }
/// <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(); } }
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, "Русский язык должен быть в самом низу списка поскольку это язык локалии"); }
/// <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("不是好友不保存"); } } }
/// <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); } }
/// <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); } } } }