From 95315ce608ab223efdfa085e2ed90448bdf8f688 Mon Sep 17 00:00:00 2001
From: Ming Rui Zhang <mingrui.zhang@savoirfairelinux.com>
Date: Mon, 16 Aug 2021 15:06:39 -0400
Subject: [PATCH] adapter: move bannedStatusChanged connection out from
 redundant safeInit

Gitlab: #492

Change-Id: I8bab7bc1cd1f5bdbf7c6c54e615a21690dad1585
---
 src/accountadapter.cpp |  4 ----
 src/accountadapter.h   |  2 +-
 src/contactadapter.cpp | 26 ++++++++++++++------------
 src/contactadapter.h   |  4 +++-
 4 files changed, 18 insertions(+), 18 deletions(-)

diff --git a/src/accountadapter.cpp b/src/accountadapter.cpp
index e39c39dec..f81675974 100644
--- a/src/accountadapter.cpp
+++ b/src/accountadapter.cpp
@@ -48,10 +48,6 @@ AccountAdapter::AccountAdapter(AppSettingsManager* settingsManager,
             &AccountAdapter::accountStatusChanged);
 }
 
-void
-AccountAdapter::safeInit()
-{}
-
 NewAccountModel*
 AccountAdapter::getModel()
 {
diff --git a/src/accountadapter.h b/src/accountadapter.h
index 313b2ad0d..c41dfc12c 100644
--- a/src/accountadapter.h
+++ b/src/accountadapter.h
@@ -50,7 +50,7 @@ public:
                             QObject* parent = nullptr);
     ~AccountAdapter() = default;
 
-    void safeInit() override;
+    void safeInit() override {}
 
     // Change to account corresponding to combox box index.
     Q_INVOKABLE void changeAccount(int row);
diff --git a/src/contactadapter.cpp b/src/contactadapter.cpp
index 621cd21d8..96227a737 100644
--- a/src/contactadapter.cpp
+++ b/src/contactadapter.cpp
@@ -26,18 +26,10 @@ ContactAdapter::ContactAdapter(LRCInstance* instance, QObject* parent)
     : QmlAdapterBase(instance, parent)
 {
     selectableProxyModel_.reset(new SelectableProxyModel(this));
-}
-
-void
-ContactAdapter::safeInit()
-{
-    connect(lrcInstance_, &LRCInstance::currentAccountIdChanged, [this] {
-        connect(lrcInstance_->getCurrentContactModel(),
-                &ContactModel::bannedStatusChanged,
-                this,
-                &ContactAdapter::bannedStatusChanged,
-                Qt::UniqueConnection);
-    });
+    if (lrcInstance_) {
+        connectSignals();
+        connect(lrcInstance_, &LRCInstance::currentAccountIdChanged, [this] { connectSignals(); });
+    }
 }
 
 QVariant
@@ -194,3 +186,13 @@ ContactAdapter::contactSelected(int index)
         }
     }
 }
+
+void
+ContactAdapter::connectSignals()
+{
+    connect(lrcInstance_->getCurrentContactModel(),
+            &ContactModel::bannedStatusChanged,
+            this,
+            &ContactAdapter::bannedStatusChanged,
+            Qt::UniqueConnection);
+}
diff --git a/src/contactadapter.h b/src/contactadapter.h
index fa3e645d2..a4c15a23c 100644
--- a/src/contactadapter.h
+++ b/src/contactadapter.h
@@ -86,12 +86,14 @@ public:
 
     using Role = ConversationList::Role;
 
-    void safeInit() override;
+    void safeInit() override {}
 
     Q_INVOKABLE QVariant getContactSelectableModel(int type);
     Q_INVOKABLE void setSearchFilter(const QString& filter);
     Q_INVOKABLE void contactSelected(int index);
 
+    void connectSignals();
+
 Q_SIGNALS:
     void bannedStatusChanged(const QString& uri, bool banned);
 
-- 
GitLab