From cfc1c80e1586a8b8350016b6f7ec5a1d34adb839 Mon Sep 17 00:00:00 2001
From: Andreas Traczyk <andreas.traczyk@savoirfairelinux.com>
Date: Wed, 4 Sep 2019 11:43:01 -0400
Subject: [PATCH] callwidget: fix deselection of conversation when changing
 account

Change-Id: If16a9371cfc182cdff7bd87205674483fb596633
---
 callwidget.cpp     | 8 ++++++--
 lrcinstance.h      | 4 ++--
 settingswidget.cpp | 4 ++--
 3 files changed, 10 insertions(+), 6 deletions(-)

diff --git a/callwidget.cpp b/callwidget.cpp
index 4667a20..1c4d25e 100644
--- a/callwidget.cpp
+++ b/callwidget.cpp
@@ -798,7 +798,7 @@ CallWidget::setSelectedAccount(const std::string& accountId)
     // First, we get back to the welcome view (except if in call)
     if (ui->stackedWidget->currentWidget() != ui->videoPage &&
         ui->stackedWidget->currentWidget() != ui->welcomePage) {
-        Utils::setStackWidget(ui->stackedWidget, ui->welcomePage);
+        backToWelcomePage();
     }
 
     // We setup the ringIdLabel and the QRCode
@@ -1176,6 +1176,10 @@ CallWidget::selectConversation( const lrc::api::conversation::Info& item,
 void
 CallWidget::deselectConversation()
 {
+    if (LRCInstance::getSelectedConvUid().empty()) {
+        return;
+    }
+
     auto currentConversationModel = LRCInstance::getCurrentConversationModel();
 
     if (currentConversationModel == nullptr) {
@@ -1183,7 +1187,7 @@ CallWidget::deselectConversation()
     }
 
     currentConversationModel->selectConversation("");
-    LRCInstance::setSelectedConvId("");
+    LRCInstance::setSelectedConvId();
 
     ui->smartList->selectionModel()->clear();
     disconnect(imConnection_);
diff --git a/lrcinstance.h b/lrcinstance.h
index a66f715..9b3b8ac 100644
--- a/lrcinstance.h
+++ b/lrcinstance.h
@@ -121,7 +121,7 @@ public:
         return instance().selectedAccountId_;
     };
 
-    static void setSelectedAccountId(const std::string& accountId) {
+    static void setSelectedAccountId(const std::string& accountId = {}) {
         instance().selectedAccountId_ = accountId;
         QSettings settings("jami.net", "Jami");
         settings.setValue(SettingsKey::selectedAccount, QString::fromStdString(accountId));
@@ -131,7 +131,7 @@ public:
         return instance().selectedConvUid_;
     };
 
-    static void setSelectedConvId(const std::string& convUid) {
+    static void setSelectedConvId(const std::string& convUid = {}) {
         instance().selectedConvUid_ = convUid;
     };
 
diff --git a/settingswidget.cpp b/settingswidget.cpp
index 68caee5..f961688 100644
--- a/settingswidget.cpp
+++ b/settingswidget.cpp
@@ -492,13 +492,13 @@ void SettingsWidget::delAccountSlot()
     auto ret = delDialog.exec();
 
     if (ret == QDialog::Accepted) {
-        LRCInstance::setSelectedAccountId("");
+        LRCInstance::setSelectedAccountId();
 
         if (!LRCInstance::accountModel().getAccountList().size()) {
             emit NavigationRequested(ScreenEnum::WizardScreen);
 
         } else {
-            LRCInstance::setSelectedConvId("");
+            LRCInstance::setSelectedConvId();
             emit NavigationRequested(ScreenEnum::CallScreen);
         }
     }
-- 
GitLab