Merge pull request #2735 from dpalou/MOBILE-3724

MOBILE-3724 lti: Launch in browser by default in 3.11+
main
Pau Ferrer Ocaña 2021-05-03 11:38:36 +02:00 committed by GitHub
commit 6aa4a502a9
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 49 additions and 2 deletions

View File

@ -61,7 +61,7 @@ export class AddonModLtiHelperProvider {
const modal = await CoreDomUtils.showModalLoading();
try {
const openInBrowser = await AddonModLti.isOpenInAppBrowserDisabled(siteId);
const openInBrowser = await AddonModLti.shouldLaunchInBrowser(siteId);
if (openInBrowser) {
const site = await CoreSites.getSite(siteId);

View File

@ -184,8 +184,35 @@ export class AddonModLtiProvider {
await site.invalidateWsCacheForKey(this.getLtiLaunchDataCacheKey(id));
}
/**
* Check if open LTI in browser via site with auto-login is disabled.
* This setting was added in 3.11.
*
* @param siteId Site ID. If not defined, current site.
* @return Promise resolved with boolean: whether it's disabled.
*/
async isLaunchViaSiteDisabled(siteId?: string): Promise<boolean> {
const site = await CoreSites.getSite(siteId);
return this.isLaunchViaSiteDisabledInSite(site);
}
/**
* Check if open LTI in browser via site with auto-login is disabled.
* This setting was added in 3.11.
*
* @param site Site. If not defined, current site.
* @return Whether it's disabled.
*/
isLaunchViaSiteDisabledInSite(site?: CoreSite): boolean {
site = site || CoreSites.getCurrentSite();
return !!site?.isFeatureDisabled('CoreCourseModuleDelegate_AddonModLti:launchViaSite');
}
/**
* Check if open in InAppBrowser is disabled.
* This setting was removed in Moodle 3.11 because the default behaviour of the app changed.
*
* @param siteId Site ID. If not defined, current site.
* @return Promise resolved with boolean: whether it's disabled.
@ -198,6 +225,7 @@ export class AddonModLtiProvider {
/**
* Check if open in InAppBrowser is disabled.
* This setting was removed in Moodle 3.11 because the default behaviour of the app changed.
*
* @param site Site. If not defined, current site.
* @return Whether it's disabled.
@ -239,7 +267,7 @@ export class AddonModLtiProvider {
* @param siteId Site ID. If not defined, current site.
* @return Promise resolved when the WS call is successful.
*/
logView(id: number, name?: string, siteId?: string): Promise<any> {
logView(id: number, name?: string, siteId?: string): Promise<void> {
const params: AddonModLtiViewLtiWSParams = {
ltiid: id,
};
@ -256,6 +284,24 @@ export class AddonModLtiProvider {
);
}
/**
* Check whether the LTI should be launched in browser via the site with auto-login.
*
* @param siteId Site ID.
* @return Promise resolved with boolean.
*/
async shouldLaunchInBrowser(siteId?: string): Promise<boolean> {
const site = await CoreSites.getSite(siteId);
if (site.isVersionGreaterEqualThan('3.11')) {
// In 3.11+, launch in browser by default unless it's disabled.
return !this.isLaunchViaSiteDisabledInSite(site);
} else {
// In old sites the default behaviour is to launch in InAppBrowser.
return this.isOpenInAppBrowserDisabledInSite(site);
}
}
}
export const AddonModLti = makeSingleton(AddonModLtiProvider);

View File

@ -79,6 +79,7 @@ export class CoreSite {
'3.8': 2019111800,
'3.9': 2020061500,
'3.10': 2020110900,
'3.11': 2021051000, // @todo: Replace with the right version once it's released.
};
// Possible cache update frequencies.