From f8d7e377e55646f0c9b41de7c44f157384c19dc5 Mon Sep 17 00:00:00 2001 From: Vitor Vieira <155513369+VitorVieiraZ@users.noreply.github.com> Date: Fri, 24 May 2024 10:01:33 -0300 Subject: [PATCH] Handling attempt to upload a project after reaching the project limit (#3450) --- app/synchronizationmanager.cpp | 14 ++++++++++++++ app/synchronizationmanager.h | 1 + core/merginapi.cpp | 2 +- 3 files changed, 16 insertions(+), 1 deletion(-) diff --git a/app/synchronizationmanager.cpp b/app/synchronizationmanager.cpp index c7d2eb276..100040040 100644 --- a/app/synchronizationmanager.cpp +++ b/app/synchronizationmanager.cpp @@ -23,6 +23,7 @@ SynchronizationManager::SynchronizationManager( QObject::connect( mMerginApi, &MerginApi::pushCanceled, this, &SynchronizationManager::onProjectSyncCanceled ); QObject::connect( mMerginApi, &MerginApi::syncProjectFinished, this, &SynchronizationManager::onProjectSyncFinished ); QObject::connect( mMerginApi, &MerginApi::networkErrorOccurred, this, &SynchronizationManager::onProjectSyncFailure ); + QObject::connect( mMerginApi, &MerginApi::projectCreated, this, &SynchronizationManager::onProjectCreated ); QObject::connect( mMerginApi, &MerginApi::projectAttachedToMergin, this, &SynchronizationManager::onProjectAttachedToMergin ); QObject::connect( mMerginApi, &MerginApi::syncProjectStatusChanged, this, &SynchronizationManager::onProjectSyncProgressChanged ); QObject::connect( mMerginApi, &MerginApi::projectReloadNeededAfterSync, this, &SynchronizationManager::onProjectReloadNeededAfterSync ); @@ -230,6 +231,19 @@ void SynchronizationManager::onProjectSyncProgressChanged( const QString &projec } +void SynchronizationManager::onProjectCreated( const QString &projectFullName, bool result ) +{ + // 'projectFullName' is in the format "namespace/projectName" and 'mSyncProcess' stores + // projects that were not previously uploaded to the server in the format "projectName". + QString projectNamespace, projectName; + MerginApi::extractProjectName( projectFullName, projectNamespace, projectName ); + + if ( !result && mSyncProcesses.contains( projectName ) ) + { + mSyncProcesses.remove( projectName ); + } +} + void SynchronizationManager::onProjectSyncFailure( const QString &message, const QString &topic, diff --git a/app/synchronizationmanager.h b/app/synchronizationmanager.h index bad22e6d0..ba3d02448 100644 --- a/app/synchronizationmanager.h +++ b/app/synchronizationmanager.h @@ -86,6 +86,7 @@ class SynchronizationManager : public QObject void onProjectSyncFailure( const QString &message, const QString &topic, int httpCode, const QString &projectFullName ); void onProjectAttachedToMergin( const QString &projectFullName, const QString &previousName ); void onProjectReloadNeededAfterSync( const QString &projectFullName ); + void onProjectCreated( const QString &projectName, bool result ); private: diff --git a/core/merginapi.cpp b/core/merginapi.cpp index 781c8e990..d7dd5cd4f 100644 --- a/core/merginapi.cpp +++ b/core/merginapi.cpp @@ -1181,7 +1181,7 @@ void MerginApi::createProjectFinished() CoreUtils::log( "create " + projectFullName, message ); - emit projectCreated( projectFullName, false ); + emit projectCreated( projectName, false ); if ( showLimitReachedDialog ) {