Skip to content

Commit 17a6d95

Browse files
authored
Merge pull request #4599 from dpalou/MOBILE-4842
MOBILE-4842 h5p: Fix delete content files on lib upgrade
2 parents f1652e0 + 6358d11 commit 17a6d95

File tree

3 files changed

+10
-25
lines changed

3 files changed

+10
-25
lines changed

src/core/classes/sqlitedb.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -435,6 +435,7 @@ export class SQLiteDB {
435435
/**
436436
* Execute a SQL query.
437437
* IMPORTANT: Use this function only if you cannot use any of the other functions in this API.
438+
* Please notice that the rows property in the result cannot be converted to an array using Array.from().
438439
*
439440
* @param sql SQL query to execute.
440441
* @param params Query parameters.

src/core/features/h5p/classes/file-storage.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -200,9 +200,9 @@ export class CoreH5PFileStorage {
200200
'WHERE hcl.libraryid = ?';
201201
const queryArgs = [libraryId];
202202

203-
const result = await db.execute(query, queryArgs);
203+
const entries = await db.getRecordsSql<{foldername: string}>(query, queryArgs);
204204

205-
await Promise.all(Array.from(result.rows).map(async (entry: {foldername: string}) => {
205+
await Promise.all(entries.map(async (entry) => {
206206
try {
207207
// Delete the index.html.
208208
await this.deleteContentIndex(entry.foldername, site.getId());

src/core/features/h5p/classes/framework.ts

Lines changed: 7 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -58,6 +58,7 @@ import { CoreFilepool } from '@services/filepool';
5858
import { CoreFileHelper } from '@services/file-helper';
5959
import { CoreUrl, CoreUrlPartNames } from '@singletons/url';
6060
import { CorePromiseUtils } from '@singletons/promise-utils';
61+
import { CoreArray } from '@singletons/array';
6162

6263
/**
6364
* Equivalent to Moodle's implementation of H5PFrameworkInterface.
@@ -654,15 +655,7 @@ export class CoreH5PFramework {
654655
'l1.minorversion < l2.minorversion)) ' +
655656
'WHERE l1.addto IS NOT NULL AND l2.machinename IS NULL';
656657

657-
const result = await db.execute(query);
658-
659-
const addons: CoreH5PLibraryAddonData[] = [];
660-
661-
for (let i = 0; i < result.rows.length; i++) {
662-
addons.push(this.parseLibAddonData(result.rows.item(i)));
663-
}
664-
665-
return addons;
658+
return await db.getRecordsSql<CoreH5PLibraryAddonData>(query);
666659
}
667660

668661
/**
@@ -762,17 +755,9 @@ export class CoreH5PFramework {
762755

763756
query += ' ORDER BY hcl.weight';
764757

765-
const result = await db.execute(query, queryArgs);
766-
767-
const dependencies: {[machineName: string]: CoreH5PContentDependencyData} = {};
758+
const dependencies = await db.getRecordsSql<CoreH5PContentDependencyData>(query, queryArgs);
768759

769-
for (let i = 0; i < result.rows.length; i++) {
770-
const dependency = result.rows.item(i);
771-
772-
dependencies[dependency.machineName] = dependency;
773-
}
774-
775-
return dependencies;
760+
return CoreArray.toObject(dependencies, 'machineName');
776761
}
777762

778763
/**
@@ -831,18 +816,17 @@ export class CoreH5PFramework {
831816

832817
const db = await CoreSites.getSiteDb(siteId);
833818

834-
const result = await db.execute(sql, sqlParams);
819+
const dependencies = await db.getRecordsSql<LibraryDependency>(sql, sqlParams);
835820

836-
for (let i = 0; i < result.rows.length; i++) {
837-
const dependency: LibraryDependency = result.rows.item(i);
821+
dependencies.forEach((dependency) => {
838822
const key = `${dependency.dependencytype}Dependencies`;
839823

840824
libraryData[key].push({
841825
machineName: dependency.machinename,
842826
majorVersion: dependency.majorversion,
843827
minorVersion: dependency.minorversion,
844828
});
845-
}
829+
});
846830

847831
return libraryData;
848832
}

0 commit comments

Comments
 (0)