MOBILE-3101 h5p: Make H5P work with the new webview
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…
Reference in New Issue