diff --git a/src/addons/mod/scorm/classes/data-model-12.ts b/src/addons/mod/scorm/classes/data-model-12.ts index 3fb1609cd..7f7f48582 100644 --- a/src/addons/mod/scorm/classes/data-model-12.ts +++ b/src/addons/mod/scorm/classes/data-model-12.ts @@ -510,8 +510,9 @@ export class AddonModScormDataModel12 { // Load default values. for (const element in this.dataModel[scoId]) { if (element.match(/\.n\./) === null) { - if (this.dataModel[scoId][element].defaultvalue !== undefined) { - this.currentUserData[scoId].userdata[element] = this.dataModel[scoId][element].defaultvalue!; + const defaultValue = this.dataModel[scoId][element].defaultvalue; + if (defaultValue !== undefined) { + this.currentUserData[scoId].userdata[element] = defaultValue; } } } @@ -519,8 +520,9 @@ export class AddonModScormDataModel12 { // Load initial user data for current SCO. for (const element in this.def[scoId]) { if (element.match(/\.n\./) === null) { - if (this.dataModel[scoId][element].defaultvalue !== undefined) { - this.currentUserData[scoId].userdata[element] = this.dataModel[scoId][element].defaultvalue!; + const defaultValue = this.dataModel[scoId][element].defaultvalue; + if (defaultValue !== undefined) { + this.currentUserData[scoId].userdata[element] = defaultValue; } else if (this.defExtra[scoId][element] !== undefined) { // Check in user data values. this.currentUserData[scoId].userdata[element] = this.defExtra[scoId][element]; @@ -808,7 +810,7 @@ export class AddonModScormDataModel12 { if (this.dataModel[this.scoId][elementModel] !== undefined) { if (this.dataModel[this.scoId][elementModel].mod != 'r') { - expression = new RegExp(this.dataModel[this.scoId][elementModel].format!); + expression = new RegExp(this.dataModel[this.scoId][elementModel].format ?? ''); value = value + ''; const matches = value.match(expression); diff --git a/src/addons/mod/scorm/pages/player/player.ts b/src/addons/mod/scorm/pages/player/player.ts index cdf25d82b..8303adb5d 100644 --- a/src/addons/mod/scorm/pages/player/player.ts +++ b/src/addons/mod/scorm/pages/player/player.ts @@ -415,7 +415,7 @@ export class AddonModScormPlayerPage implements OnInit, OnDestroy { this.scorm, sco.id, this.attempt, - this.userData!, + this.userData ?? {}, this.mode, this.offline, this.canSaveTracks, diff --git a/src/addons/mod/scorm/services/handlers/prefetch.ts b/src/addons/mod/scorm/services/handlers/prefetch.ts index c4ffb9112..b935d1f61 100644 --- a/src/addons/mod/scorm/services/handlers/prefetch.ts +++ b/src/addons/mod/scorm/services/handlers/prefetch.ts @@ -89,7 +89,7 @@ export class AddonModScormPrefetchHandlerService extends CoreCourseActivityPrefe ]); // Success, return the hash. - return scorm.sha1hash!; + return scorm.sha1hash ?? ''; } /** @@ -112,7 +112,7 @@ export class AddonModScormPrefetchHandlerService extends CoreCourseActivityPrefe const packageUrl = AddonModScorm.getPackageUrl(scorm); // Get the folder where the unzipped files will be. - const dirPath = await AddonModScorm.getScormFolder(scorm.moduleurl!); + const dirPath = await AddonModScorm.getScormFolder(scorm.moduleurl ?? ''); // Notify that the download is starting. onProgress && onProgress({ message: 'core.downloading' }); @@ -282,7 +282,7 @@ export class AddonModScormPrefetchHandlerService extends CoreCourseActivityPrefe const scorm = await this.getScorm(module, courseId); // Get the folder where SCORM should be unzipped. - const path = await AddonModScorm.getScormFolder(scorm.moduleurl!); + const path = await AddonModScorm.getScormFolder(scorm.moduleurl ?? ''); return CoreFile.getDirectorySize(path); } @@ -388,7 +388,7 @@ export class AddonModScormPrefetchHandlerService extends CoreCourseActivityPrefe const scorm = await this.getScorm(module, courseId, siteId); // Get the folder where SCORM should be unzipped. - const path = await AddonModScorm.getScormFolder(scorm.moduleurl!); + const path = await AddonModScorm.getScormFolder(scorm.moduleurl ?? ''); const promises: Promise[] = []; diff --git a/src/addons/mod/scorm/services/scorm-offline.ts b/src/addons/mod/scorm/services/scorm-offline.ts index 9f9874486..a7a188102 100644 --- a/src/addons/mod/scorm/services/scorm-offline.ts +++ b/src/addons/mod/scorm/services/scorm-offline.ts @@ -484,7 +484,7 @@ export class AddonModScormOfflineProvider { response[scoId] = { scoid: scoId, userdata: { - userid: userId!, + userid: userId ?? site.getUserId(), scoid: scoId, timemodified: 0, }, @@ -492,7 +492,7 @@ export class AddonModScormOfflineProvider { }; } - response[scoId].userdata[entry.element] = entry.value!; + response[scoId].userdata[entry.element] = entry.value ?? ''; if (entry.timemodified > Number(response[scoId].userdata.timemodified)) { response[scoId].userdata.timemodified = entry.timemodified; } diff --git a/src/addons/mod/scorm/services/scorm-sync.ts b/src/addons/mod/scorm/services/scorm-sync.ts index 19d073614..f3100d10c 100644 --- a/src/addons/mod/scorm/services/scorm-sync.ts +++ b/src/addons/mod/scorm/services/scorm-sync.ts @@ -777,7 +777,7 @@ export class AddonModScormSyncProvider extends CoreCourseActivitySyncBaseProvide lastOffline, newAttemptsSameOrder, newAttemptsAtEnd, - lastOfflineData.timecreated!, + lastOfflineData.timecreated ?? 0, lastOfflineData.incomplete, warnings, siteId, @@ -812,7 +812,7 @@ export class AddonModScormSyncProvider extends CoreCourseActivitySyncBaseProvide lastOffline, newAttemptsSameOrder, newAttemptsAtEnd, - lastOfflineData.timecreated!, + lastOfflineData.timecreated ?? 0, lastOfflineData.incomplete, warnings, siteId, diff --git a/src/addons/mod/scorm/services/scorm.ts b/src/addons/mod/scorm/services/scorm.ts index 87c9fa072..756721a61 100644 --- a/src/addons/mod/scorm/services/scorm.ts +++ b/src/addons/mod/scorm/services/scorm.ts @@ -357,8 +357,8 @@ export class AddonModScormProvider { element = '!'; } else if (reOther.test(element)) { // Other symbols = | <> . - matches = element.match(reOther)!; - element = matches[1].trim(); + matches = element.match(reOther) ?? []; + element = matches[1]?.trim(); if (trackData[element] !== undefined) { let value = matches[3].trim().replace(/('|")/gi, ''); @@ -968,7 +968,7 @@ export class AddonModScormProvider { return launchUrl; } - const dirPath = await CoreFilepool.getPackageDirUrlByUrl(siteId, scorm.moduleurl!); + const dirPath = await CoreFilepool.getPackageDirUrlByUrl(siteId, scorm.moduleurl ?? ''); return CoreText.concatenatePaths(dirPath, launchUrl); } @@ -1573,7 +1573,7 @@ export class AddonModScormProvider { userData?: AddonModScormUserDataMap, ): boolean { if (offline) { - return AddonModScormOffline.saveTracksSync(scorm, scoId, attempt, tracks, userData!); + return AddonModScormOffline.saveTracksSync(scorm, scoId, attempt, tracks, userData ?? {}); } else { const success = this.saveTracksSyncOnline(scoId, attempt, tracks);