diff --git a/src/lrcinstance.cpp b/src/lrcinstance.cpp index 88385327f01e81a0236f32dc757d1b383b2d954d..cd947070c940bca68d298653b44bb8dc7463def2 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 b3145de462ad8de0482bab327f539287ba41bd36..3433710a9d1e40c0b855461fc2f0624edc5faa88 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_;