From 8230fb863c4da44f8dbd0caa3104c873d9d59d94 Mon Sep 17 00:00:00 2001 From: Andreas Traczyk <andreas.traczyk@savoirfairelinux.com> Date: Mon, 10 May 2021 16:26:16 -0400 Subject: [PATCH] adapters: handle injecting lrcinstance with zero accounts Change-Id: I1ec652c60620cf4e7e1caad7fd00ddf1aa40d64d --- src/conversationlistmodel.cpp | 3 +++ src/conversationsadapter.cpp | 17 ++++++++--------- src/lrcinstance.cpp | 21 ++++++++++++++++++--- 3 files changed, 29 insertions(+), 12 deletions(-) diff --git a/src/conversationlistmodel.cpp b/src/conversationlistmodel.cpp index cd3fd035a..a14f1818b 100644 --- a/src/conversationlistmodel.cpp +++ b/src/conversationlistmodel.cpp @@ -24,6 +24,9 @@ ConversationListModel::ConversationListModel(LRCInstance* instance, QObject* parent) : ConversationListModelBase(instance, parent) { + if (!model_) + return; + connect( model_, &ConversationModel::beginInsertRows, diff --git a/src/conversationsadapter.cpp b/src/conversationsadapter.cpp index ade05c597..1d1c7ed4f 100644 --- a/src/conversationsadapter.cpp +++ b/src/conversationsadapter.cpp @@ -99,8 +99,6 @@ ConversationsAdapter::ConversationsAdapter(SystemTray* systemTray, Q_EMIT convSrcModel_->dataChanged(index, index); }); - updateConversationFilterData(); - #ifdef Q_OS_LINUX // notification responses connect(systemTray_, @@ -188,15 +186,8 @@ ConversationsAdapter::onCurrentAccountIdChanged() { lrcInstance_->deselectConversation(); - convSrcModel_.reset(new ConversationListModel(lrcInstance_)); - convModel_->bindSourceModel(convSrcModel_.get()); - searchSrcModel_.reset(new SearchResultsListModel(lrcInstance_)); - searchModel_->bindSourceModel(searchSrcModel_.get()); - connectConversationModel(); - updateConversationFilterData(); - set_currentTypeFilter(lrcInstance_->getCurrentAccountInfo().profileInfo.type); } @@ -502,6 +493,14 @@ ConversationsAdapter::connectConversationModel(bool updateFilter) if (updateFilter) { currentTypeFilter_ = profile::Type::INVALID; } + + convSrcModel_.reset(new ConversationListModel(lrcInstance_)); + convModel_->bindSourceModel(convSrcModel_.get()); + searchSrcModel_.reset(new SearchResultsListModel(lrcInstance_)); + searchModel_->bindSourceModel(searchSrcModel_.get()); + + updateConversationFilterData(); + return true; } diff --git a/src/lrcinstance.cpp b/src/lrcinstance.cpp index facb7be48..d6c6fd5bf 100644 --- a/src/lrcinstance.cpp +++ b/src/lrcinstance.cpp @@ -210,19 +210,34 @@ LRCInstance::getConversationFromCallId(const QString& callId, const QString& acc ConversationModel* LRCInstance::getCurrentConversationModel() { - return getCurrentAccountInfo().conversationModel.get(); + try { + const auto& accInfo = getCurrentAccountInfo(); + return accInfo.conversationModel.get(); + } catch (...) { + return nullptr; + } } NewCallModel* LRCInstance::getCurrentCallModel() { - return getCurrentAccountInfo().callModel.get(); + try { + const auto& accInfo = getCurrentAccountInfo(); + return accInfo.callModel.get(); + } catch (...) { + return nullptr; + } } ContactModel* LRCInstance::getCurrentContactModel() { - return getCurrentAccountInfo().contactModel.get(); + try { + const auto& accInfo = getCurrentAccountInfo(); + return accInfo.contactModel.get(); + } catch (...) { + return nullptr; + } } const QString& -- GitLab