diff --git a/src/core/services/navigator.ts b/src/core/services/navigator.ts index 2e3ad5a0c..6e5e471de 100644 --- a/src/core/services/navigator.ts +++ b/src/core/services/navigator.ts @@ -532,10 +532,8 @@ export class CoreNavigatorService { const pathRoot = /^[^/]+/.exec(path)?.[0] ?? ''; const currentMainMenuTab = this.getCurrentMainMenuTab(); - const isMainMenuTab = await CoreUtils.ignoreErrors( - CoreMainMenu.isMainMenuTab(pathRoot), - false, - ); + const isMainMenuTab = pathRoot === currentMainMenuTab || (!currentMainMenuTab && path === DEFAULT_MAIN_MENU_TAB) || + await CoreUtils.ignoreErrors(CoreMainMenu.isMainMenuTab(pathRoot), false); if (!options.preferCurrentTab && isMainMenuTab) { return this.navigate(`/main/${path}`, options); diff --git a/src/core/services/sites.ts b/src/core/services/sites.ts index 46beb0c78..291d3ca5e 100644 --- a/src/core/services/sites.ts +++ b/src/core/services/sites.ts @@ -722,10 +722,11 @@ export class CoreSitesProvider { const siteId = this.getCurrentSiteId(); const downloadUrl = CoreApp.getAppStoreUrl(storesConfig); + let promise: Promise; if (downloadUrl != null) { // Do not block interface. - CoreDomUtils.showConfirm( + promise = CoreDomUtils.showConfirm( Translate.instant('core.updaterequireddesc', { $a: config.tool_mobile_minimumversion }), Translate.instant('core.updaterequired'), Translate.instant('core.download'), @@ -734,19 +735,20 @@ export class CoreSitesProvider { // Do nothing. }); } else { - CoreDomUtils.showAlert( + // Do not block interface. + promise = CoreDomUtils.showAlert( Translate.instant('core.updaterequired'), Translate.instant('core.updaterequireddesc', { $a: config.tool_mobile_minimumversion }), - ); + ).then((alert) => alert.onWillDismiss()); } - if (siteId) { - // Logout the currentSite. - await this.logout(); - - // Always expire the token. - await this.setSiteLoggedOut(siteId, true); - } + promise.finally(() => { + if (siteId) { + // Logout the currentSite and expire the token. + this.logout(); + this.setSiteLoggedOut(siteId, true); + } + }); throw new CoreError('Current app version is lower than required version.'); } @@ -803,24 +805,27 @@ export class CoreSitesProvider { return false; } - let config: CoreSitePublicConfigResponse | undefined; + this.login(siteId); + // Get some data in background, don't block the UI. + this.getPublicConfigAndCheckApplication(site); + this.updateSiteInfo(siteId); - try { - config = await site.getPublicConfig(); - } catch (error) { - // Error getting config, maybe the user is offline. - } + return true; + } + /** + * Get site public config and check if app can access the site. + * + * @param site Site. + * @return Promise resolved when done. + */ + protected async getPublicConfigAndCheckApplication(site: CoreSite): Promise { try { + const config = await site.getPublicConfig(); + await this.checkApplication(config); - - this.login(siteId); - // Update site info. We don't block the UI. - this.updateSiteInfo(siteId); - - return true; - } catch (error) { - return false; + } catch { + // Ignore errors, maybe the user is offline. } }