Merge pull request #2952 from dpalou/MOBILE-2282
MOBILE-2282 login: Call getPublicConfig in background when loading sitemain
commit
14c019c268
|
@ -532,10 +532,8 @@ export class CoreNavigatorService {
|
||||||
|
|
||||||
const pathRoot = /^[^/]+/.exec(path)?.[0] ?? '';
|
const pathRoot = /^[^/]+/.exec(path)?.[0] ?? '';
|
||||||
const currentMainMenuTab = this.getCurrentMainMenuTab();
|
const currentMainMenuTab = this.getCurrentMainMenuTab();
|
||||||
const isMainMenuTab = await CoreUtils.ignoreErrors(
|
const isMainMenuTab = pathRoot === currentMainMenuTab || (!currentMainMenuTab && path === DEFAULT_MAIN_MENU_TAB) ||
|
||||||
CoreMainMenu.isMainMenuTab(pathRoot),
|
await CoreUtils.ignoreErrors(CoreMainMenu.isMainMenuTab(pathRoot), false);
|
||||||
false,
|
|
||||||
);
|
|
||||||
|
|
||||||
if (!options.preferCurrentTab && isMainMenuTab) {
|
if (!options.preferCurrentTab && isMainMenuTab) {
|
||||||
return this.navigate(`/main/${path}`, options);
|
return this.navigate(`/main/${path}`, options);
|
||||||
|
|
|
@ -722,10 +722,11 @@ export class CoreSitesProvider {
|
||||||
|
|
||||||
const siteId = this.getCurrentSiteId();
|
const siteId = this.getCurrentSiteId();
|
||||||
const downloadUrl = CoreApp.getAppStoreUrl(storesConfig);
|
const downloadUrl = CoreApp.getAppStoreUrl(storesConfig);
|
||||||
|
let promise: Promise<unknown>;
|
||||||
|
|
||||||
if (downloadUrl != null) {
|
if (downloadUrl != null) {
|
||||||
// Do not block interface.
|
// Do not block interface.
|
||||||
CoreDomUtils.showConfirm(
|
promise = CoreDomUtils.showConfirm(
|
||||||
Translate.instant('core.updaterequireddesc', { $a: config.tool_mobile_minimumversion }),
|
Translate.instant('core.updaterequireddesc', { $a: config.tool_mobile_minimumversion }),
|
||||||
Translate.instant('core.updaterequired'),
|
Translate.instant('core.updaterequired'),
|
||||||
Translate.instant('core.download'),
|
Translate.instant('core.download'),
|
||||||
|
@ -734,19 +735,20 @@ export class CoreSitesProvider {
|
||||||
// Do nothing.
|
// Do nothing.
|
||||||
});
|
});
|
||||||
} else {
|
} else {
|
||||||
CoreDomUtils.showAlert(
|
// Do not block interface.
|
||||||
|
promise = CoreDomUtils.showAlert(
|
||||||
Translate.instant('core.updaterequired'),
|
Translate.instant('core.updaterequired'),
|
||||||
Translate.instant('core.updaterequireddesc', { $a: config.tool_mobile_minimumversion }),
|
Translate.instant('core.updaterequireddesc', { $a: config.tool_mobile_minimumversion }),
|
||||||
);
|
).then((alert) => alert.onWillDismiss());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
promise.finally(() => {
|
||||||
if (siteId) {
|
if (siteId) {
|
||||||
// Logout the currentSite.
|
// Logout the currentSite and expire the token.
|
||||||
await this.logout();
|
this.logout();
|
||||||
|
this.setSiteLoggedOut(siteId, true);
|
||||||
// Always expire the token.
|
|
||||||
await this.setSiteLoggedOut(siteId, true);
|
|
||||||
}
|
}
|
||||||
|
});
|
||||||
|
|
||||||
throw new CoreError('Current app version is lower than required version.');
|
throw new CoreError('Current app version is lower than required version.');
|
||||||
}
|
}
|
||||||
|
@ -803,24 +805,27 @@ export class CoreSitesProvider {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
let config: CoreSitePublicConfigResponse | undefined;
|
|
||||||
|
|
||||||
try {
|
|
||||||
config = await site.getPublicConfig();
|
|
||||||
} catch (error) {
|
|
||||||
// Error getting config, maybe the user is offline.
|
|
||||||
}
|
|
||||||
|
|
||||||
try {
|
|
||||||
await this.checkApplication(config);
|
|
||||||
|
|
||||||
this.login(siteId);
|
this.login(siteId);
|
||||||
// Update site info. We don't block the UI.
|
// Get some data in background, don't block the UI.
|
||||||
|
this.getPublicConfigAndCheckApplication(site);
|
||||||
this.updateSiteInfo(siteId);
|
this.updateSiteInfo(siteId);
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
} catch (error) {
|
}
|
||||||
return false;
|
|
||||||
|
/**
|
||||||
|
* 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);
|
||||||
|
} catch {
|
||||||
|
// Ignore errors, maybe the user is offline.
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue