@@ -97,12 +97,14 @@ QString ActiveProject::projectFullName() const
9797
9898bool ActiveProject::load ( const QString &filePath )
9999{
100- updateProjectMetadata ();
101100 return forceLoad ( filePath, false );
102101}
103102
104103bool ActiveProject::forceLoad ( const QString &filePath, bool force )
105104{
105+ // update user's role each time a project is opened, following #3174
106+ updateProjectMetadata ();
107+
106108 CoreUtils::log ( QStringLiteral ( " Project loading" ), filePath + " " + ( force ? " true" : " false" ) );
107109
108110 // clear autosync
@@ -567,6 +569,7 @@ bool ActiveProject::updateProjectMetadata()
567569 QNetworkReply *reply = mMerginApi ->getProjectInfo ( projectFullName () );
568570 if ( !reply )
569571 {
572+ restoreCachedRole ();
570573 return false ;
571574 }
572575
@@ -589,24 +592,24 @@ void ActiveProject::updateProjectMetadataReplyFinished()
589592 QByteArray data = r->readAll ();
590593
591594 MerginProjectMetadata serverProject = MerginProjectMetadata::fromJson ( data );
592-
593595 QString role = serverProject.role ;
594596 setProjectRole ( role );
595597 }
596598 else
597599 {
598- QString serverMsg = mMerginApi ->extractServerErrorMsg ( r->readAll () );
599-
600- QString projectDir = mQgsProject ->absolutePath ();
601- MerginProjectMetadata cachedProjectMetadata = MerginProjectMetadata::fromCachedJson ( mLocalProject .projectDir + " /" + mMerginApi ->sMetadataFile );
602-
603- QString role = cachedProjectMetadata.role ;
604- setProjectRole ( role );
600+ restoreCachedRole ();
605601 }
606602
607603 r->deleteLater ();
608604}
609605
606+ void ActiveProject::restoreCachedRole ()
607+ {
608+ MerginProjectMetadata cachedProjectMetadata = MerginProjectMetadata::fromCachedJson ( mLocalProject .projectDir + " /" + mMerginApi ->sMetadataFile );
609+ QString role = cachedProjectMetadata.role ;
610+ setProjectRole ( role );
611+ }
612+
610613QString ActiveProject::projectRole () const
611614{
612615 return mProjectRole ;
0 commit comments