]> dgit.raspbian.org Git - nextcloud-desktop.git/commitdiff
Do not send account details to File Provider extension through socket controller...
authorClaudio Cambra <claudio.cambra@nextcloud.com>
Sat, 11 Mar 2023 14:40:56 +0000 (15:40 +0100)
committerClaudio Cambra <claudio.cambra@nextcloud.com>
Fri, 12 May 2023 05:21:29 +0000 (13:21 +0800)
Signed-off-by: Claudio Cambra <claudio.cambra@nextcloud.com>
src/gui/macOS/fileprovidersocketcontroller.cpp
src/gui/macOS/fileprovidersocketcontroller.h

index 8463de50e64b32f2c5b685b391b53a233056cb40..57671c3710f60363cb88dcc295a4ae9e74cd969f 100644 (file)
@@ -135,11 +135,44 @@ void FileProviderSocketController::requestFileProviderDomainInfo() const
     sendMessage(requestMessage);
 }
 
+void FileProviderSocketController::slotAccountStateChanged(const AccountState::State state)
+{
+    switch(state) {
+    case AccountState::Disconnected:
+    case AccountState::ConfigurationError:
+    case AccountState::NetworkError:
+    case AccountState::ServiceUnavailable:
+    case AccountState::MaintenanceMode:
+        // Do nothing, File Provider will by itself figure out connection issue
+        break;
+    case AccountState::SignedOut:
+    case AccountState::AskingCredentials:
+        // Notify File Provider that it should show the not authenticated message
+        break;
+    case AccountState::Connected:
+        // Provide credentials
+        sendAccountDetails();
+        break;
+    }
+}
+
 void FileProviderSocketController::sendAccountDetails() const
 {
     Q_ASSERT(_accountState);
     const auto account = _accountState->account();
     Q_ASSERT(account);
+
+    qCDebug(lcFileProviderSocketController) << "About to send account details to file provider extension"
+                                            << account->displayName();
+
+    connect(_accountState.data(), &AccountState::stateChanged, this, &FileProviderSocketController::slotAccountStateChanged);
+
+    if (!_accountState->isConnected()) {
+        qCDebug(lcFileProviderSocketController) << "Not sending account details yet as account is not connected"
+                                                << account->displayName();
+        return;
+    }
+
     const auto credentials = account->credentials();
     Q_ASSERT(credentials);
     const auto accountUser = credentials->user();
index ad40300bec3c4b96baa60dd94e278e91c8ddde63..4826dc95e11e720e37b310138e551619126c6df7 100644 (file)
@@ -43,6 +43,8 @@ private slots:
     void slotSocketDestroyed(const QObject * const object);
     void slotReadyRead();
 
+    void slotAccountStateChanged(const AccountState::State state);
+
     void parseReceivedLine(const QString &receivedLine);
     void requestFileProviderDomainInfo() const;
     void sendAccountDetails() const;