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