Make sure that the libcloudprovider integration is using a valid D-Bus path
authorCorentin Noël <corentin@elementary.io>
Thu, 30 Jan 2020 20:01:23 +0000 (21:01 +0100)
committerCorentin Noël <corentin@elementary.io>
Thu, 30 Jan 2020 20:05:13 +0000 (21:05 +0100)
Set a simple unique identifier per folder to ensure that it is always unique.

Fixes https://github.com/nextcloud/desktop/issues/1704

Signed-off-by: Corentin Noël <corentin@elementary.io>
src/gui/cloudproviders/cloudprovidermanager.cpp
src/gui/cloudproviders/cloudprovidermanager.h
src/gui/cloudproviders/cloudproviderwrapper.cpp
src/gui/cloudproviders/cloudproviderwrapper.h

index eaf2f2cb5d5e3499189281942d4558959a167ba2..892f60abd1904657c0a7e9c315ae5068a66c6cfd 100644 (file)
@@ -52,8 +52,8 @@ void CloudProviderManager::registerSignals()
 CloudProviderManager::CloudProviderManager(QObject *parent) : QObject(parent)
 {
     _map = new QMap<QString, CloudProviderWrapper*>();
-    QString busName = QString(LIBCLOUDPROVIDERS_DBUS_BUS_NAME);
-    g_bus_own_name (G_BUS_TYPE_SESSION, busName.toAscii().data(), G_BUS_NAME_OWNER_FLAGS_NONE, nullptr, on_name_acquired, nullptr, this, nullptr);
+    _folder_index = 0;
+    g_bus_own_name (G_BUS_TYPE_SESSION, LIBCLOUDPROVIDERS_DBUS_BUS_NAME, G_BUS_NAME_OWNER_FLAGS_NONE, nullptr, on_name_acquired, nullptr, this, nullptr);
 }
 
 void CloudProviderManager::slotFolderListChanged(const Folder::Map &folderMap)
@@ -72,7 +72,7 @@ void CloudProviderManager::slotFolderListChanged(const Folder::Map &folderMap)
     while (j.hasNext()) {
         j.next();
         if (!_map->contains(j.key())) {
-            auto *cpo = new CloudProviderWrapper(this, j.value(), _providerExporter);
+            auto *cpo = new CloudProviderWrapper(this, j.value(), _folder_index++, _providerExporter);
             _map->insert(j.key(), cpo);
         }
     }
index f37d1f0b47db4d84549a48920d1225867a050f78..17aafc5dc07a82a08f006825a3f29ca521739726 100644 (file)
@@ -36,6 +36,7 @@ public slots:
 
 private:
     QMap<QString, CloudProviderWrapper*> *_map;
+    unsigned int _folder_index;
 };
 
 #endif // CLOUDPROVIDERMANAGER_H
index 62118409ed87f6632b74ca180d2dc790734644ba..f4e2a7606543d049ee111a3a63faeb702020da96 100644 (file)
@@ -33,13 +33,13 @@ using namespace OCC;
 
 GSimpleActionGroup *actionGroup = nullptr;
 
-CloudProviderWrapper::CloudProviderWrapper(QObject *parent, Folder *folder, CloudProvidersProviderExporter* cloudprovider) : QObject(parent)
+CloudProviderWrapper::CloudProviderWrapper(QObject *parent, Folder *folder, int folderId, CloudProvidersProviderExporter* cloudprovider) : QObject(parent)
   , _folder(folder)
 {
     GMenuModel *model;
     GActionGroup *action_group;
     _recentlyChanged = new QList<QPair<QString, QString>>();
-    QString accountName = QString("Account%1Folder%2").arg(folder->alias(), folder->accountState()->account()->id());
+    QString accountName = QString("Folder/%1").arg(folderId);
 
     _cloudProvider = CLOUD_PROVIDERS_PROVIDER_EXPORTER(cloudprovider);
     _cloudProviderAccount = cloud_providers_account_exporter_new(_cloudProvider, accountName.toUtf8().data());
index b1ffc9c9fbeab7db5c4c5312081bd01a278840e0..24830c89a3857c2b451f894d8b4161773d905ec6 100644 (file)
@@ -38,7 +38,7 @@ class CloudProviderWrapper : public QObject
 {
     Q_OBJECT
 public:
-    explicit CloudProviderWrapper(QObject *parent = nullptr, Folder *folder = nullptr, CloudProvidersProviderExporter* cloudprovider = nullptr);
+    explicit CloudProviderWrapper(QObject *parent = nullptr, Folder *folder = nullptr, int folderId = 0, CloudProvidersProviderExporter* cloudprovider = nullptr);
     ~CloudProviderWrapper();
     CloudProvidersAccountExporter* accountExporter();
     Folder* folder();