@@ -582,22 +582,48 @@ export class CoreSitesProvider {
582582 }
583583
584584 // Create a "candidate" site to fetch the site info.
585- const candidateSite = this . sitesFactory . makeSite ( undefined , siteUrl , token , undefined , privateToken ) ;
585+ let candidateSite = this . sitesFactory . makeSite ( undefined , siteUrl , token , undefined , privateToken ) ,
586+ isNewSite = true ;
586587
587588 return candidateSite . fetchSiteInfo ( ) . then ( ( info ) => {
588589 const result = this . isValidMoodleVersion ( info ) ;
589590 if ( result == this . VALID_VERSION ) {
590- // Set site ID and info.
591591 const siteId = this . createSiteID ( info . siteurl , info . username ) ;
592- candidateSite . setId ( siteId ) ;
593- candidateSite . setInfo ( info ) ;
594592
595- // Create database tables before login and before any WS call.
596- return this . migrateSiteSchemas ( candidateSite ) . then ( ( ) => {
593+ // Check if the site already exists.
594+ return this . getSite ( siteId ) . catch ( ( ) => {
595+ // Not exists.
596+ } ) . then ( ( site ) => {
597+ if ( site ) {
598+ // Site already exists, update its data and use it.
599+ isNewSite = false ;
600+ candidateSite = site ;
601+ candidateSite . setToken ( token ) ;
602+ candidateSite . setPrivateToken ( privateToken ) ;
603+ candidateSite . setInfo ( info ) ;
604+
605+ } else {
606+ // New site, set site ID and info.
607+ isNewSite = true ;
608+ candidateSite . setId ( siteId ) ;
609+ candidateSite . setInfo ( info ) ;
610+
611+ // Create database tables before login and before any WS call.
612+ return this . migrateSiteSchemas ( candidateSite ) ;
613+ }
614+
615+ } ) . then ( ( ) => {
597616
598617 // Try to get the site config.
599- return this . getSiteConfig ( candidateSite ) . then ( ( config ) => {
600- candidateSite . setConfig ( config ) ;
618+ return this . getSiteConfig ( candidateSite ) . catch ( ( error ) => {
619+ // Ignore errors if it's not a new site, we'll use the config already stored.
620+ if ( isNewSite ) {
621+ return Promise . reject ( error ) ;
622+ }
623+ } ) . then ( ( config ) => {
624+ if ( typeof config != 'undefined' ) {
625+ candidateSite . setConfig ( config ) ;
626+ }
601627
602628 // Add site to sites list.
603629 this . addSite ( siteId , siteUrl , token , info , privateToken , config ) ;
0 commit comments