From 12bab965a06591d861d1ec42be89c9397c135a78 Mon Sep 17 00:00:00 2001 From: Mathieu Pellerin Date: Thu, 3 Oct 2024 00:25:14 +0700 Subject: [PATCH] Fix LocalModification flag not properly restored when opening a cloud project prior successfully logging into the server --- src/core/qfieldcloudprojectsmodel.cpp | 26 +++++++++++++++++--------- 1 file changed, 17 insertions(+), 9 deletions(-) diff --git a/src/core/qfieldcloudprojectsmodel.cpp b/src/core/qfieldcloudprojectsmodel.cpp index c4755ea746..4221e75948 100644 --- a/src/core/qfieldcloudprojectsmodel.cpp +++ b/src/core/qfieldcloudprojectsmodel.cpp @@ -57,15 +57,6 @@ QFieldCloudProjectsModel::QFieldCloudProjectsModel() refreshProjectModification( mCurrentProjectId ); } ); - connect( this, &QFieldCloudProjectsModel::modelReset, this, [=]() { - if ( mCurrentProjectId.isEmpty() || !findProject( mCurrentProjectId ) ) - return; - - emit currentProjectDataChanged(); - - refreshProjectModification( mCurrentProjectId ); - } ); - connect( this, &QFieldCloudProjectsModel::dataChanged, this, [=]( const QModelIndex &topLeft, const QModelIndex &bottomRight, const QVector &roles ) { Q_UNUSED( bottomRight ) Q_UNUSED( roles ) @@ -338,9 +329,13 @@ bool QFieldCloudProjectsModel::canSyncProject( const QString &projectId ) const return false; if ( mCurrentProjectId.isEmpty() ) + { return false; + } else if ( projectStatus( projectId ) == ProjectStatus::Idle ) + { return true; + } return false; } @@ -1297,10 +1292,14 @@ void QFieldCloudProjectsModel::projectUpload( const QString &projectId, const bo } if ( !( project->modification & LocalModification ) ) + { return; + } if ( !mLayerObserver->deltaFileWrapper()->toFile() ) + { return; + } if ( deltaFileWrapper->hasError() ) { @@ -1714,6 +1713,15 @@ void QFieldCloudProjectsModel::projectListReceived() { refreshProjectsList( isPublic, projectFetchOffset + mProjectsPerFetch ); } + else + { + // All projects fetched, refresh current project details if found + if ( !mCurrentProjectId.isEmpty() && findProject( mCurrentProjectId ) ) + { + emit currentProjectDataChanged(); + refreshProjectModification( mCurrentProjectId ); + } + } } NetworkReply *QFieldCloudProjectsModel::downloadFile( const QString &projectId, const QString &fileName )