From b00d61fc904286bdbdbbde5b31809b7012b075a0 Mon Sep 17 00:00:00 2001 From: Ming Rui Zhang <mingrui.zhang@savoirfairelinux.com> Date: Tue, 5 Oct 2021 14:59:47 -0400 Subject: [PATCH] lrcinstance: clear the interaction cache when switching the conversation Gitlab: #550 Change-Id: I713af229a3f90ca9d6b3e526ae3c710e7f573c66 --- src/lrcinstance.cpp | 19 +++++++++++++++++++ src/lrcinstance.h | 9 ++++++++- 2 files changed, 27 insertions(+), 1 deletion(-) diff --git a/src/lrcinstance.cpp b/src/lrcinstance.cpp index 88385327f..cd947070c 100644 --- a/src/lrcinstance.cpp +++ b/src/lrcinstance.cpp @@ -428,3 +428,22 @@ LRCInstance::getCurrentCallId() return QString(); } } + +QString +LRCInstance::get_selectedConvUid() +{ + return selectedConvUid_; +} + +void +LRCInstance::set_selectedConvUid(QString selectedConvUid) +{ + if (selectedConvUid_ != selectedConvUid) { + auto& accInfo = accountModel().getAccountInfo(get_currentAccountId()); + auto& convModel = accInfo.conversationModel; + convModel->clearInteractionsCache(selectedConvUid_); + + selectedConvUid_ = selectedConvUid; + Q_EMIT selectedConvUidChanged(); + } +} diff --git a/src/lrcinstance.h b/src/lrcinstance.h index b3145de46..3433710a9 100644 --- a/src/lrcinstance.h +++ b/src/lrcinstance.h @@ -55,7 +55,8 @@ using getConvPredicate = std::function<bool(const conversation::Info& conv)>; class LRCInstance : public QObject { Q_OBJECT - QML_PROPERTY(QString, selectedConvUid) + Q_PROPERTY(QString selectedConvUid READ get_selectedConvUid WRITE set_selectedConvUid NOTIFY + selectedConvUidChanged) QML_PROPERTY(QString, currentAccountId) QML_RO_PROPERTY(lrc::api::profile::Type, currentAccountType) QML_PROPERTY(bool, currentAccountAvatarSet) @@ -123,8 +124,13 @@ public: bool hasActiveCall(bool withVideo = false); VectorString getConferenceSubcalls(const QString& callId); + QString get_selectedConvUid(); + + void set_selectedConvUid(QString selectedConvUid = ""); + Q_SIGNALS: void accountListChanged(); + void selectedConvUidChanged(); void restoreAppRequested(); void notificationClicked(); void quitEngineRequested(); @@ -136,6 +142,7 @@ private: std::unique_ptr<RenderManager> renderer_; std::unique_ptr<UpdateManager> updateManager_; + QString selectedConvUid_; MapStringString contentDrafts_; MapStringString lastConferences_; -- GitLab