forked from EVOgeek/Vmeda.Online
		
	MOBILE-3101 h5p: Make H5P work with the new webview
This commit is contained in:
		
							parent
							
								
									8b9635e675
								
							
						
					
					
						commit
						830089e094
					
				| @ -27,6 +27,7 @@ import { CoreH5PUtilsProvider } from './utils'; | ||||
| import { CoreH5PContentValidator } from '../classes/content-validator'; | ||||
| import { TranslateService } from '@ngx-translate/core'; | ||||
| import { FileEntry } from '@ionic-native/file'; | ||||
| import { makeSingleton } from '@singletons/core.singletons'; | ||||
| 
 | ||||
| /** | ||||
|  * Service to provide H5P functionalities. | ||||
| @ -410,7 +411,7 @@ export class CoreH5PProvider { | ||||
|      * @return Promise resolved with all of the files content in one string. | ||||
|      */ | ||||
|     protected concatenateFiles(assets: CoreH5PDependencyAsset[], type: string): Promise<string> { | ||||
|         const basePath = this.fileProvider.getBasePathInstant(); | ||||
|         const basePath = this.fileProvider.convertFileSrc(this.fileProvider.getBasePathInstant()); | ||||
|         let content = '', | ||||
|             promise = Promise.resolve(); // Use a chain of promises so the order is kept.
 | ||||
| 
 | ||||
| @ -495,7 +496,8 @@ export class CoreH5PProvider { | ||||
| 
 | ||||
|             const contentId = this.getContentId(id), | ||||
|                 basePath = this.fileProvider.getBasePathInstant(), | ||||
|                 contentUrl = this.textUtils.concatenatePaths(basePath, this.getContentFolderPath(content.folderName, site.getId())); | ||||
|                 contentUrl = this.fileProvider.convertFileSrc(this.textUtils.concatenatePaths( | ||||
|                         basePath, this.getContentFolderPath(content.folderName, site.getId()))); | ||||
| 
 | ||||
|             // Create the settings needed for the content.
 | ||||
|             const contentSettings = { | ||||
| @ -560,6 +562,40 @@ export class CoreH5PProvider { | ||||
|         }); | ||||
|     } | ||||
| 
 | ||||
|     /** | ||||
|      * Delete all content indexes of all sites from filesystem. | ||||
|      * | ||||
|      * @return Promise resolved when done. | ||||
|      */ | ||||
|     async deleteAllContentIndexes(): Promise<void> { | ||||
|         const siteIds = await this.sitesProvider.getSitesIds(); | ||||
| 
 | ||||
|         await Promise.all(siteIds.map((siteId) => this.deleteAllContentIndexesForSite(siteId))); | ||||
|     } | ||||
| 
 | ||||
|     /** | ||||
|      * Delete all content indexes for a certain site from filesystem. | ||||
|      * | ||||
|      * @param siteId Site ID. If not defined, current site. | ||||
|      * @return Promise resolved when done. | ||||
|      */ | ||||
|     async deleteAllContentIndexesForSite(siteId?: string): Promise<void> { | ||||
| 
 | ||||
|         const site = await this.sitesProvider.getSite(siteId); | ||||
| 
 | ||||
|         const records = await site.getDb().getAllRecords(this.CONTENT_TABLE); | ||||
| 
 | ||||
|         const promises = records.map(async (record) => { | ||||
|             try { | ||||
|                 await this.fileProvider.removeFile(this.getContentIndexPath(record.foldername, site.getId())); | ||||
|             } catch (err) { | ||||
|                 // Ignore errors, maybe the file doesn't exist.
 | ||||
|             } | ||||
|         }); | ||||
| 
 | ||||
|         await Promise.all(promises); | ||||
|     } | ||||
| 
 | ||||
|     /** | ||||
|      * Delete cached assets from DB and filesystem. | ||||
|      * | ||||
| @ -1033,12 +1069,11 @@ export class CoreH5PProvider { | ||||
|             settings.loadedJs = []; | ||||
|             settings.loadedCss = []; | ||||
| 
 | ||||
|             const libUrl = this.getCoreH5PPath(), | ||||
|                 relPath = this.urlUtils.removeProtocolAndWWW(libUrl); | ||||
|             const libUrl = this.getCoreH5PPath(); | ||||
| 
 | ||||
|             // Add core stylesheets.
 | ||||
|             CoreH5PProvider.STYLES.forEach((style) => { | ||||
|                 settings.core.styles.push(relPath + style); | ||||
|                 settings.core.styles.push(libUrl + style); | ||||
|                 cssRequires.push(libUrl + style); | ||||
|             }); | ||||
| 
 | ||||
| @ -1279,8 +1314,10 @@ export class CoreH5PProvider { | ||||
| 
 | ||||
|             return { | ||||
|                 baseUrl: this.fileProvider.getWWWPath(), | ||||
|                 url: this.textUtils.concatenatePaths(basePath, this.getExternalH5PFolderPath(site.getId())), | ||||
|                 urlLibraries: this.textUtils.concatenatePaths(basePath, this.getLibrariesFolderPath(site.getId())), | ||||
|                 url: this.fileProvider.convertFileSrc(this.textUtils.concatenatePaths( | ||||
|                         basePath, this.getExternalH5PFolderPath(site.getId()))), | ||||
|                 urlLibraries: this.fileProvider.convertFileSrc(this.textUtils.concatenatePaths( | ||||
|                         basePath, this.getLibrariesFolderPath(site.getId()))), | ||||
|                 postUserStatistics: false, | ||||
|                 ajax: ajaxPaths, | ||||
|                 saveFreq: false, | ||||
| @ -2623,6 +2660,8 @@ export class CoreH5PProvider { | ||||
|     } | ||||
| } | ||||
| 
 | ||||
| export class CoreH5P extends makeSingleton(CoreH5PProvider) {} | ||||
| 
 | ||||
| /** | ||||
|  * Display options behaviour constants. | ||||
|  */ | ||||
|  | ||||
| @ -17,6 +17,7 @@ import { CoreConfigProvider } from './config'; | ||||
| import { CoreInitHandler, CoreInitDelegate } from './init'; | ||||
| import { CoreLoggerProvider } from './logger'; | ||||
| import { CoreConfigConstants } from '../configconstants'; | ||||
| import { CoreH5P } from '@core/h5p/providers/h5p'; | ||||
| import { makeSingleton } from '@singletons/core.singletons'; | ||||
| 
 | ||||
| /** | ||||
| @ -34,7 +35,8 @@ export class CoreUpdateManagerProvider implements CoreInitHandler { | ||||
|     protected VERSION_APPLIED = 'version_applied'; | ||||
|     protected logger; | ||||
| 
 | ||||
|     constructor(logger: CoreLoggerProvider, private configProvider: CoreConfigProvider) { | ||||
|     constructor(logger: CoreLoggerProvider, | ||||
|             protected configProvider: CoreConfigProvider) { | ||||
|         this.logger = logger.getInstance('CoreUpdateManagerProvider'); | ||||
|     } | ||||
| 
 | ||||
| @ -44,21 +46,24 @@ export class CoreUpdateManagerProvider implements CoreInitHandler { | ||||
|      * | ||||
|      * @return Promise resolved when the update process finishes. | ||||
|      */ | ||||
|     load(): Promise<any> { | ||||
|         const promises = [], | ||||
|             versionCode = CoreConfigConstants.versioncode; | ||||
|     async load(): Promise<any> { | ||||
|         const promises = []; | ||||
|         const versionCode = CoreConfigConstants.versioncode; | ||||
| 
 | ||||
|         return this.configProvider.get(this.VERSION_APPLIED, 0).then((versionApplied: number) => { | ||||
|         const versionApplied: number = await this.configProvider.get(this.VERSION_APPLIED, 0); | ||||
| 
 | ||||
|             // Put here the code to treat app updates.
 | ||||
|         if (versionCode >= 3900 && versionApplied < 3900 && versionApplied > 0) { | ||||
|             promises.push(CoreH5P.instance.deleteAllContentIndexes()); | ||||
|         } | ||||
| 
 | ||||
|             return Promise.all(promises).then(() => { | ||||
|                 return this.configProvider.set(this.VERSION_APPLIED, versionCode); | ||||
|             }).catch((error) => { | ||||
|                 this.logger.error(`Error applying update from ${versionApplied} to ${versionCode}`, error); | ||||
|             }); | ||||
|         }); | ||||
|         try { | ||||
|             await Promise.all(promises); | ||||
| 
 | ||||
|             await this.configProvider.set(this.VERSION_APPLIED, versionCode); | ||||
|         } catch (error) { | ||||
|             this.logger.error(`Error applying update from ${versionApplied} to ${versionCode}`, error); | ||||
|         } | ||||
|     } | ||||
| } | ||||
| 
 | ||||
| export class CoreUpdateManager extends makeSingleton<CoreUpdateManagerProvider>(CoreUpdateManagerProvider) {} | ||||
| export class CoreUpdateManager extends makeSingleton(CoreUpdateManagerProvider) {} | ||||
|  | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user