forked from CIT/Vmeda.Online
		
	Merge pull request #2735 from dpalou/MOBILE-3724
MOBILE-3724 lti: Launch in browser by default in 3.11+
This commit is contained in:
		
						commit
						6aa4a502a9
					
				@ -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);
 | 
			
		||||
 | 
			
		||||
@ -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);
 | 
			
		||||
 | 
			
		||||
@ -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.
 | 
			
		||||
 | 
			
		||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user