From 5dad1680e6e490cdf340ce829134d7d3bd79384c Mon Sep 17 00:00:00 2001 From: AsamK Date: Fri, 28 Aug 2015 01:21:55 +0200 Subject: [PATCH] Implement history for distant chat Uses the same history config as private chat --- libretroshare/src/chat/distantchat.cc | 4 ++-- libretroshare/src/pqi/p3historymgr.cc | 20 +++++++++++++++++-- retroshare-gui/src/gui/chat/ChatWidget.cpp | 5 ++++- .../src/gui/im_history/ImHistoryBrowser.cpp | 2 +- 4 files changed, 25 insertions(+), 6 deletions(-) diff --git a/libretroshare/src/chat/distantchat.cc b/libretroshare/src/chat/distantchat.cc index 399baf20a..e69e9aad8 100644 --- a/libretroshare/src/chat/distantchat.cc +++ b/libretroshare/src/chat/distantchat.cc @@ -1019,8 +1019,8 @@ bool DistantChatService::getDistantChatStatus(const RsGxsId& gxs_id,uint32_t& st { status = it->second.status ; - if(from_gxs_id != NULL) - *from_gxs_id = it->second.own_gxs_id ; + if(from_gxs_id != NULL) + *from_gxs_id = it->second.own_gxs_id ; return true ; } diff --git a/libretroshare/src/pqi/p3historymgr.cc b/libretroshare/src/pqi/p3historymgr.cc index ee720160a..60f279bd2 100644 --- a/libretroshare/src/pqi/p3historymgr.cc +++ b/libretroshare/src/pqi/p3historymgr.cc @@ -99,7 +99,17 @@ void p3HistoryMgr::addMessage(const ChatMessage& cm) enabled = true; } - // not handled: private distant chat + if (cm.chat_id.isGxsId() && mPrivateEnable == true) { + if (cm.incoming) { + peerName = cm.chat_id.toGxsId().toStdString(); + } else { + uint32_t status; + RsGxsId from_gxs_id; + if (rsMsgs->getDistantChatStatus(cm.chat_id.toGxsId(), status, &from_gxs_id)) + peerName = from_gxs_id.toStdString(); + } + enabled = true; + } if(enabled == false) return; @@ -387,7 +397,10 @@ bool p3HistoryMgr::chatIdToVirtualPeerId(ChatId chat_id, RsPeerId &peer_id) return true; } - // not handled: private distant chat + if (chat_id.isGxsId()) { + peer_id = RsPeerId(chat_id.toGxsId()); + return true; + } return false; } @@ -423,6 +436,9 @@ bool p3HistoryMgr::getMessages(const ChatId &chatId, std::list &msgs if (chatId.isLobbyId() && mLobbyEnable == true) { enabled = true; } + if (chatId.isGxsId() && mPrivateEnable == true) { + enabled = true; + } if(enabled == false) return false; diff --git a/retroshare-gui/src/gui/chat/ChatWidget.cpp b/retroshare-gui/src/gui/chat/ChatWidget.cpp index 71df585db..b5adf84d7 100644 --- a/retroshare-gui/src/gui/chat/ChatWidget.cpp +++ b/retroshare-gui/src/gui/chat/ChatWidget.cpp @@ -298,6 +298,9 @@ void ChatWidget::init(const ChatId &chat_id, const QString &title) // initialize first custom state string QString customStateString = QString::fromUtf8(rsMsgs->getCustomStateString(chatId.toPeerId()).c_str()); updatePeersCustomStateString(QString::fromStdString(chatId.toPeerId().toStdString()), customStateString); + } else if (chatType() == CHATTYPE_DISTANT){ + hist_chat_type = RS_HISTORY_TYPE_PRIVATE ; + messageCount = Settings->getPrivateChatHistoryCount(); } else if(chatId.isBroadcast()){ hist_chat_type = RS_HISTORY_TYPE_PUBLIC; messageCount = Settings->getPublicChatHistoryCount(); @@ -325,7 +328,7 @@ void ChatWidget::init(const ChatId &chat_id, const QString &title) continue; QString name; - if (chatId.isLobbyId()) { + if (chatId.isLobbyId() || chatId.isGxsId()) { RsIdentityDetails details; if (rsIdentity->getIdDetails(RsGxsId(historyIt->peerName), details)) name = QString::fromUtf8(details.mNickname.c_str()); diff --git a/retroshare-gui/src/gui/im_history/ImHistoryBrowser.cpp b/retroshare-gui/src/gui/im_history/ImHistoryBrowser.cpp index a59f71656..f2d15a8c6 100644 --- a/retroshare-gui/src/gui/im_history/ImHistoryBrowser.cpp +++ b/retroshare-gui/src/gui/im_history/ImHistoryBrowser.cpp @@ -275,7 +275,7 @@ void ImHistoryBrowser::fillItem(QListWidgetItem *itemWidget, HistoryMsg& msg) QString messageText = RsHtml().formatText(NULL, QString::fromUtf8(msg.message.c_str()), formatTextFlag); QString name; - if (m_chatId.isLobbyId()) { + if (m_chatId.isLobbyId() || m_chatId.isGxsId()) { RsIdentityDetails details; if (rsIdentity->getIdDetails(RsGxsId(msg.peerName), details)) name = QString::fromUtf8(details.mNickname.c_str());