From 8b2512c5130143e79fc014594de45ef6718b1d29 Mon Sep 17 00:00:00 2001 From: Mingrui Zhang <mingrui.zhang@savoirfairelinux.com> Date: Tue, 15 Dec 2020 13:49:19 -0500 Subject: [PATCH] messagesadapter: clear conversation uid cache if it is currently selected For clearConversationHistory and removeConversation Gitlab: #252 Change-Id: I3008cf20ddace5d3395465bd328a460c72e4c07f --- .../ConversationSmartListContextMenu.qml | 4 ++-- .../components/ConversationSmartListView.qml | 16 +++++++------- src/messagesadapter.cpp | 21 +++++++++++++++++++ src/messagesadapter.h | 4 ++++ src/utilsadapter.cpp | 12 ----------- src/utilsadapter.h | 4 ---- 6 files changed, 34 insertions(+), 27 deletions(-) diff --git a/src/mainview/components/ConversationSmartListContextMenu.qml b/src/mainview/components/ConversationSmartListContextMenu.qml index 1d22d1b76..9f600940c 100644 --- a/src/mainview/components/ConversationSmartListContextMenu.qml +++ b/src/mainview/components/ConversationSmartListContextMenu.qml @@ -59,7 +59,7 @@ Item { ContextMenuGenerator.addMenuItem(qsTr("Clear conversation"), "qrc:/images/icons/ic_clear_24px.svg", function (){ - UtilsAdapter.clearConversationHistory( + MessagesAdapter.clearConversationHistory( responsibleAccountId, responsibleConvUid) }) @@ -68,7 +68,7 @@ Item { ContextMenuGenerator.addMenuItem(qsTr("Remove contact"), "qrc:/images/icons/round-remove_circle-24px.svg", function (){ - UtilsAdapter.removeConversation( + MessagesAdapter.removeConversation( responsibleAccountId, responsibleConvUid) }) diff --git a/src/mainview/components/ConversationSmartListView.qml b/src/mainview/components/ConversationSmartListView.qml index d6a9a472c..4256c330d 100644 --- a/src/mainview/components/ConversationSmartListView.qml +++ b/src/mainview/components/ConversationSmartListView.qml @@ -119,10 +119,9 @@ ListView { sequence: "Ctrl+Shift+L" context: Qt.ApplicationShortcut enabled: root.visible - onActivated: { - UtilsAdapter.clearConversationHistory(AccountAdapter.currentAccountId, - UtilsAdapter.getCurrConvId()) - } + onActivated: MessagesAdapter.clearConversationHistory( + AccountAdapter.currentAccountId, + UtilsAdapter.getCurrConvId()) } Shortcut { @@ -138,11 +137,10 @@ ListView { sequence: "Ctrl+Shift+Delete" context: Qt.ApplicationShortcut enabled: root.visible - onActivated: { - UtilsAdapter.removeConversation(AccountAdapter.currentAccountId, - UtilsAdapter.getCurrConvId(), - false) - } + onActivated: MessagesAdapter.removeConversation( + AccountAdapter.currentAccountId, + UtilsAdapter.getCurrConvId(), + false) } Shortcut { diff --git a/src/messagesadapter.cpp b/src/messagesadapter.cpp index cb3a12c57..84e59b32b 100644 --- a/src/messagesadapter.cpp +++ b/src/messagesadapter.cpp @@ -665,6 +665,8 @@ MessagesAdapter::refuseInvitation(const QString& convUid) const auto currentConvUid = convUid.isEmpty() ? LRCInstance::getCurrentConvUid() : convUid; LRCInstance::getCurrentConversationModel()->removeConversation(currentConvUid, false); setInvitation(false); + if (convUid == currentConvUid_) + currentConvUid_.clear(); emit navigateToWelcomePageRequested(); } @@ -674,6 +676,25 @@ MessagesAdapter::blockConversation(const QString& convUid) const auto currentConvUid = convUid.isEmpty() ? LRCInstance::getCurrentConvUid() : convUid; LRCInstance::getCurrentConversationModel()->removeConversation(currentConvUid, true); setInvitation(false); + if (convUid == currentConvUid_) + currentConvUid_.clear(); emit contactBanned(); emit navigateToWelcomePageRequested(); } + +void +MessagesAdapter::clearConversationHistory(const QString& accountId, const QString& uid) +{ + LRCInstance::getAccountInfo(accountId).conversationModel->clearHistory(uid); + if (uid == currentConvUid_) + currentConvUid_.clear(); +} + +void +MessagesAdapter::removeConversation(const QString& accountId, const QString& uid, bool banContact) +{ + LRCInstance::getAccountInfo(accountId).conversationModel->removeConversation(uid, banContact); + if (uid == currentConvUid_) + currentConvUid_.clear(); + emit navigateToWelcomePageRequested(); +} diff --git a/src/messagesadapter.h b/src/messagesadapter.h index 27abe5ac8..a6925bb10 100644 --- a/src/messagesadapter.h +++ b/src/messagesadapter.h @@ -41,6 +41,10 @@ protected: Q_INVOKABLE void connectConversationModel(); Q_INVOKABLE void sendContactRequest(); Q_INVOKABLE void updateConversationForAddedContact(); + Q_INVOKABLE void removeConversation(const QString& accountId, + const QString& uid, + bool banContact = false); + Q_INVOKABLE void clearConversationHistory(const QString& accountId, const QString& uid); /* * JS Q_INVOKABLE. diff --git a/src/utilsadapter.cpp b/src/utilsadapter.cpp index 70124de99..d17ebd012 100644 --- a/src/utilsadapter.cpp +++ b/src/utilsadapter.cpp @@ -157,18 +157,6 @@ UtilsAdapter::setConversationFilter(const QString& filter) LRCInstance::getCurrentConversationModel()->setFilter(filter); } -void -UtilsAdapter::clearConversationHistory(const QString& accountId, const QString& uid) -{ - LRCInstance::getAccountInfo(accountId).conversationModel->clearHistory(uid); -} - -void -UtilsAdapter::removeConversation(const QString& accountId, const QString& uid, bool banContact) -{ - LRCInstance::getAccountInfo(accountId).conversationModel->removeConversation(uid, banContact); -} - const QString UtilsAdapter::getCurrConvId() { diff --git a/src/utilsadapter.h b/src/utilsadapter.h index a0442204c..b8615af08 100644 --- a/src/utilsadapter.h +++ b/src/utilsadapter.h @@ -43,10 +43,6 @@ public: Q_INVOKABLE bool createStartupLink(); Q_INVOKABLE QString GetRingtonePath(); Q_INVOKABLE bool checkStartupLink(); - Q_INVOKABLE void removeConversation(const QString& accountId, - const QString& uid, - bool banContact = false); - Q_INVOKABLE void clearConversationHistory(const QString& accountId, const QString& uid); Q_INVOKABLE void setConversationFilter(const QString& filter); Q_INVOKABLE int getTotalUnreadMessages(); Q_INVOKABLE int getTotalPendingRequest(); -- GitLab