Diferentiate between display name and dav display name.
authorCamila Ayres <hello@camilasan.com>
Tue, 29 Oct 2024 20:51:46 +0000 (21:51 +0100)
committerMatthieu Gallien <matthieu.gallien@nextcloud.com>
Fri, 22 Nov 2024 09:51:03 +0000 (10:51 +0100)
Signed-off-by: Camila Ayres <hello@camilasan.com>
src/gui/accountmanager.cpp
src/libsync/account.cpp
src/libsync/account.h

index 0c86f16a05fc3e61aa90515d105e30248b1e1b57..67927066af2c7441d249a3bf82d78df3f62d71b9 100644 (file)
@@ -334,7 +334,7 @@ void AccountManager::saveAccountHelper(Account *acc, QSettings &settings, bool s
     settings.setValue(QLatin1String(versionC), maxAccountVersion);
     settings.setValue(QLatin1String(urlC), acc->_url.toString());
     settings.setValue(QLatin1String(davUserC), acc->_davUser);
-    settings.setValue(QLatin1String(displayNameC), acc->_displayName);
+    settings.setValue(QLatin1String(displayNameC), acc->davDisplayName());
     settings.setValue(QLatin1String(serverVersionC), acc->_serverVersion);
     settings.setValue(QLatin1String(serverColorC), acc->_serverColor);
     settings.setValue(QLatin1String(serverTextColorC), acc->_serverTextColor);
@@ -498,7 +498,7 @@ AccountPtr AccountManager::loadAccountHelper(QSettings &settings)
     acc->_davUser = settings.value(QLatin1String(davUserC)).toString();
 
     acc->_settingsMap.insert(QLatin1String(userC), settings.value(userC));
-    acc->_displayName = settings.value(QLatin1String(displayNameC), "").toString();
+    acc->setDavDisplayName(settings.value(QLatin1String(displayNameC), "").toString());
     const QString authTypePrefix = authType + "_";
     const auto settingsChildKeys = settings.childKeys();
     for (const auto &key : settingsChildKeys) {
@@ -509,6 +509,7 @@ AccountPtr AccountManager::loadAccountHelper(QSettings &settings)
     }
 
     acc->setCredentials(CredentialsFactory::create(authType));
+    acc->setDisplayName(acc->credentials()->user());
 
     acc->setNetworkProxySetting(settings.value(networkProxySettingC).value<Account::AccountNetworkProxySetting>());
     acc->setProxyType(settings.value(networkProxyTypeC).value<QNetworkProxy::ProxyType>());
index 4d64876d541c9b8214c112b3bf4a70203d5b1f48..855eab03ee35656e3403a13655b637f664fb7e70 100644 (file)
@@ -156,13 +156,23 @@ void Account::setAvatar(const QImage &img)
 
 QString Account::displayName() const
 {
-    auto displayName = QString("%1@%2").arg(credentials() ? credentials()->user() : "", _url.host());
+    return _displayName;
+}
+
+void Account::setDisplayName(const QString &username)
+{
+    auto displayName = QString("%1@%2").arg(username, _url.host());
     const auto port = url().port();
     if (port > 0 && port != 80 && port != 443) {
         displayName.append(QLatin1Char(':'));
         displayName.append(QString::number(port));
     }
-    return displayName;
+
+    if (displayName == _displayName) {
+        return;
+    }
+
+    _displayName = displayName;
 }
 
 QString Account::userIdAtHostWithPort() const
@@ -178,12 +188,12 @@ QString Account::userIdAtHostWithPort() const
 
 QString Account::davDisplayName() const
 {
-    return _displayName;
+    return _davDisplayName;
 }
 
 void Account::setDavDisplayName(const QString &newDisplayName)
 {
-    _displayName = newDisplayName;
+    _davDisplayName = newDisplayName;
     emit accountChangedDisplayName();
     emit prettyNameChanged();
 }
index 6333164add153a20d79493b02ed7451276646d89..b280a767b5e831657f4e6392258e3876b70ef1ef 100644 (file)
@@ -146,6 +146,7 @@ public:
 
     /// The name of the account as shown in the toolbar
     [[nodiscard]] QString displayName() const;
+    void setDisplayName(const QString &username);
 
     /// User id in a form 'user@example.de, optionally port is added (if it is not 80 or 443)
     [[nodiscard]] QString userIdAtHostWithPort() const;
@@ -493,6 +494,7 @@ private:
     QWeakPointer<Account> _sharedThis;
     QString _id;
     QString _davUser;
+    QString _davDisplayName;
     QString _displayName;
     QTimer _pushNotificationsReconnectTimer;
 #ifndef TOKEN_AUTH_ONLY