forked from CIT/Vmeda.Online
		
	MOBILE-2282 login: Call getPublicConfig in background when loading site
This commit is contained in:
		
							parent
							
								
									d1dcd71e74
								
							
						
					
					
						commit
						7d06bb5285
					
				@ -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);
 | 
			
		||||
 | 
			
		||||
@ -713,10 +713,11 @@ export class CoreSitesProvider {
 | 
			
		||||
 | 
			
		||||
            const siteId = this.getCurrentSiteId();
 | 
			
		||||
            const downloadUrl = CoreApp.getAppStoreUrl(storesConfig);
 | 
			
		||||
            let promise: Promise<unknown>;
 | 
			
		||||
 | 
			
		||||
            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'),
 | 
			
		||||
@ -725,19 +726,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.');
 | 
			
		||||
        }
 | 
			
		||||
@ -794,24 +796,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<void> {
 | 
			
		||||
        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.
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user