Update config value when serverHasValidSubscription when accounts are added or removed.
authorCamila Ayres <hello@camilasan.com>
Thu, 17 Oct 2024 18:55:19 +0000 (20:55 +0200)
committerCamila Ayres <hello@camilasan.com>
Thu, 31 Oct 2024 12:06:03 +0000 (13:06 +0100)
To give priority to server susbscriptions and keep listing the right update channels.

Signed-off-by: Camila Ayres <hello@camilasan.com>
src/gui/accountmanager.cpp
src/gui/accountmanager.h
src/gui/settingsdialog.cpp

index 95baf7a2121ce52e6654943e87a8aef395e2fcd3..a6b96d45b918c34f819ab3e65fb5bafef3106a82 100644 (file)
@@ -611,10 +611,30 @@ void AccountManager::deleteAccount(OCC::AccountState *account)
 
     account->account()->deleteAppToken();
 
+    // clean up config from subscriptions if the account removed was the only with valid subscription
+    if (account->account()->serverHasValidSubscription()) {
+        updateServerHasValidSubscriptionConfig();
+    }
+
     emit accountSyncConnectionRemoved(account);
     emit accountRemoved(account);
 }
 
+void AccountManager::updateServerHasValidSubscriptionConfig()
+{
+    auto serverHasValidSubscription = false;
+    for (const auto &account : _accounts) {
+        if (!account->account()->serverHasValidSubscription()) {
+            continue;
+        }
+
+        serverHasValidSubscription = true;
+        break;
+    }
+
+    ConfigFile().setServerHasValidSubscription(serverHasValidSubscription);
+}
+
 AccountPtr AccountManager::createAccount()
 {
     const auto acc = Account::create();
@@ -675,6 +695,12 @@ void AccountManager::addAccountState(AccountState *const accountState)
     AccountStatePtr ptr(accountState);
     _accounts << ptr;
     ptr->trySignIn();
+
+    // update config subscriptions if the account added is the only with valid subscription
+    if (accountState->account()->serverHasValidSubscription() && !ConfigFile().serverHasValidSubscription()) {
+        updateServerHasValidSubscriptionConfig();
+    }
+
     emit accountAdded(accountState);
 }
 
index 768f902ef3c999be097963f6728764aac889732c..85a244ced4fb59ab8cbd824d4534b8467c33ac89 100644 (file)
@@ -129,6 +129,9 @@ private:
     // Adds an account to the tracked list, emitting accountAdded()
     void addAccountState(AccountState *const accountState);
 
+    // update config serverHasValidSubscription when accounts list changes
+    void updateServerHasValidSubscriptionConfig();
+
     AccountManager() = default;
     QList<AccountStatePtr> _accounts;
     /// Account ids from settings that weren't read
index bd14bb71b043da61f0b39b366cfd2a4ad14c72f7..429808d66ee1ac3b3703744ec65e907d59676e5a 100644 (file)
@@ -128,6 +128,7 @@ SettingsDialog::SettingsDialog(ownCloudGui *gui, QWidget *parent)
     // Connect styleChanged events to our widgets, so they can adapt (Dark-/Light-Mode switching)
     connect(this, &SettingsDialog::styleChanged, generalSettings, &GeneralSettings::slotStyleChanged);
     connect(AccountManager::instance(), &AccountManager::accountAdded, generalSettings, &GeneralSettings::loadUpdateChannelsList);
+    connect(AccountManager::instance(), &AccountManager::accountRemoved, generalSettings, &GeneralSettings::loadUpdateChannelsList);
     connect(AccountManager::instance(), &AccountManager::capabilitiesChanged, generalSettings, &GeneralSettings::loadUpdateChannelsList);
 
     QAction *networkAction = createColorAwareAction(QLatin1String(":/client/theme/network.svg"), tr("Network"));