From 2a077f4e627ea98a4a125cc70c086f7c9b75426a Mon Sep 17 00:00:00 2001 From: Dani Palou Date: Fri, 12 Mar 2021 10:09:38 +0100 Subject: [PATCH] MOBILE-3649 mod: Make module and courseId required in index components --- .../index/addon-mod-assign-index.html | 4 +- .../mod/assign/components/index/index.ts | 18 +++---- .../index/addon-mod-book-index.html | 4 +- src/addons/mod/book/components/index/index.ts | 18 +++---- .../index/addon-mod-folder-index.html | 2 +- .../mod/folder/components/index/index.ts | 22 ++++----- .../mod/forum/components/index/index.ts | 20 ++++---- .../index/addon-mod-imscp-index.html | 2 +- .../mod/imscp/components/index/index.ts | 12 ++--- .../index/addon-mod-lesson-index.html | 2 +- .../mod/lesson/components/index/index.ts | 22 ++++----- src/addons/mod/lesson/pages/index/index.html | 2 +- .../index/addon-mod-page-index.html | 4 +- src/addons/mod/page/components/index/index.ts | 12 ++--- .../index/addon-mod-quiz-index.html | 6 +-- src/addons/mod/quiz/components/index/index.ts | 34 ++++++------- .../index/addon-mod-resource-index.html | 2 +- .../mod/resource/components/index/index.ts | 30 ++++++------ .../components/index/addon-mod-url-index.html | 2 +- src/addons/mod/url/components/index/index.ts | 14 +++--- .../course/classes/main-resource-component.ts | 49 +++++++------------ 21 files changed, 133 insertions(+), 148 deletions(-) diff --git a/src/addons/mod/assign/components/index/addon-mod-assign-index.html b/src/addons/mod/assign/components/index/addon-mod-assign-index.html index 12d416cdc..04e5dd3e5 100644 --- a/src/addons/mod/assign/components/index/addon-mod-assign-index.html +++ b/src/addons/mod/assign/components/index/addon-mod-assign-index.html @@ -35,7 +35,7 @@ + contextLevel="module" [contextInstanceId]="module.id" [courseId]="courseId" (click)="expandDescription($event)"> @@ -136,7 +136,7 @@ + [moduleId]="module.id"> diff --git a/src/addons/mod/assign/components/index/index.ts b/src/addons/mod/assign/components/index/index.ts index ab7786eb0..bb05633bc 100644 --- a/src/addons/mod/assign/components/index/index.ts +++ b/src/addons/mod/assign/components/index/index.ts @@ -120,7 +120,7 @@ export class AddonModAssignIndexComponent extends CoreCourseModuleMainActivityCo (data) => { if (this.assign && data.assignmentId == this.assign.id && data.userId == this.currentUserId) { // Assignment submitted, check completion. - CoreCourse.checkModuleCompletion(this.courseId!, this.module!.completiondata); + CoreCourse.checkModuleCompletion(this.courseId, this.module.completiondata); // Reload data since it can have offline data now. this.showLoadingAndRefresh(true, false); @@ -140,7 +140,7 @@ export class AddonModAssignIndexComponent extends CoreCourseModuleMainActivityCo try { await AddonModAssign.logView(this.assign!.id, this.assign!.name); - CoreCourse.checkModuleCompletion(this.courseId!, this.module!.completiondata); + CoreCourse.checkModuleCompletion(this.courseId, this.module.completiondata); } catch { // Ignore errors. Just don't check Module completion. } @@ -164,11 +164,11 @@ export class AddonModAssignIndexComponent extends CoreCourseModuleMainActivityCo if (this.assign && (this.description || this.assign.introattachments)) { CoreTextUtils.viewText(Translate.instant('core.description'), this.description || '', { component: this.component, - componentId: this.module!.id, + componentId: this.module.id, files: this.assign.introattachments, filter: true, contextLevel: 'module', - instanceId: this.module!.id, + instanceId: this.module.id, courseId: this.courseId, }); } @@ -186,7 +186,7 @@ export class AddonModAssignIndexComponent extends CoreCourseModuleMainActivityCo // Get assignment data. try { - this.assign = await AddonModAssign.getAssignment(this.courseId!, this.module!.id); + this.assign = await AddonModAssign.getAssignment(this.courseId, this.module.id); this.dataRetrieved.emit(this.assign); this.description = this.assign.intro; @@ -200,7 +200,7 @@ export class AddonModAssignIndexComponent extends CoreCourseModuleMainActivityCo this.hasOffline = await AddonModAssignOffline.hasAssignOfflineData(this.assign.id); // Get assignment submissions. - const submissions = await AddonModAssign.getSubmissions(this.assign.id, { cmId: this.module!.id }); + const submissions = await AddonModAssign.getSubmissions(this.assign.id, { cmId: this.module.id }); const time = CoreTimeUtils.timestamp(); this.canViewAllSubmissions = submissions.canviewsubmissions; @@ -244,7 +244,7 @@ export class AddonModAssignIndexComponent extends CoreCourseModuleMainActivityCo try { // Check if the user can view their own submission. - await AddonModAssign.getSubmissionStatus(this.assign.id, { cmId: this.module!.id }); + await AddonModAssign.getSubmissionStatus(this.assign.id, { cmId: this.module.id }); this.canViewOwnSubmission = true; } catch (error) { this.canViewOwnSubmission = false; @@ -269,7 +269,7 @@ export class AddonModAssignIndexComponent extends CoreCourseModuleMainActivityCo const submissionStatus = await AddonModAssign.getSubmissionStatus(this.assign!.id, { groupId: this.group, - cmId: this.module!.id, + cmId: this.module.id, }); this.summary = submissionStatus.gradingsummary; @@ -345,7 +345,7 @@ export class AddonModAssignIndexComponent extends CoreCourseModuleMainActivityCo protected async invalidateContent(): Promise { const promises: Promise[] = []; - promises.push(AddonModAssign.invalidateAssignmentData(this.courseId!)); + promises.push(AddonModAssign.invalidateAssignmentData(this.courseId)); if (this.assign) { promises.push(AddonModAssign.invalidateAllSubmissionData(this.assign.id)); diff --git a/src/addons/mod/book/components/index/addon-mod-book-index.html b/src/addons/mod/book/components/index/addon-mod-book-index.html index 0aaef2eb6..87a5723dc 100644 --- a/src/addons/mod/book/components/index/addon-mod-book-index.html +++ b/src/addons/mod/book/components/index/addon-mod-book-index.html @@ -24,7 +24,7 @@ + contextLevel="module" [contextInstanceId]="module.id" [courseId]="courseId"> @@ -38,7 +38,7 @@ + [contextInstanceId]="module.id" [courseId]="courseId">
{{ 'core.tag.tags' | translate }}: diff --git a/src/addons/mod/book/components/index/index.ts b/src/addons/mod/book/components/index/index.ts index 19d1f0b2e..929fda9a6 100644 --- a/src/addons/mod/book/components/index/index.ts +++ b/src/addons/mod/book/components/index/index.ts @@ -87,7 +87,7 @@ export class AddonModBookIndexComponent extends CoreCourseModuleMainResourceComp const modal = await ModalController.create({ component: AddonModBookTocComponent, componentProps: { - moduleId: this.module!.id, + moduleId: this.module.id, chapters: this.chapters, selected: this.currentChapter, courseId: this.courseId, @@ -129,7 +129,7 @@ export class AddonModBookIndexComponent extends CoreCourseModuleMainResourceComp * @return Resolved when done. */ protected invalidateContent(): Promise { - return AddonModBook.invalidateContent(this.module!.id, this.courseId!); + return AddonModBook.invalidateContent(this.module.id, this.courseId); } /** @@ -143,7 +143,7 @@ export class AddonModBookIndexComponent extends CoreCourseModuleMainResourceComp let downloadResult: CoreCourseResourceDownloadResult | undefined; // Try to get the book data. Ignore errors since this WS isn't available in some Moodle versions. - promises.push(CoreUtils.ignoreErrors(AddonModBook.getBook(this.courseId!, this.module!.id)) + promises.push(CoreUtils.ignoreErrors(AddonModBook.getBook(this.courseId, this.module.id)) .then((book) => { if (!book) { return; @@ -169,8 +169,8 @@ export class AddonModBookIndexComponent extends CoreCourseModuleMainResourceComp try { await Promise.all(promises); - this.contentsMap = AddonModBook.getContentsMap(this.module!.contents); - this.chapters = AddonModBook.getTocList(this.module!.contents); + this.contentsMap = AddonModBook.getContentsMap(this.module.contents); + this.chapters = AddonModBook.getTocList(this.module.contents); if (typeof this.currentChapter == 'undefined' && typeof this.initialChapterId != 'undefined' && this.chapters) { // Initial chapter set. Validate that the chapter exists. @@ -211,7 +211,7 @@ export class AddonModBookIndexComponent extends CoreCourseModuleMainResourceComp this.content?.scrollToTop(); try { - const content = await AddonModBook.getChapterContent(this.contentsMap, chapterId, this.module!.id); + const content = await AddonModBook.getChapterContent(this.contentsMap, chapterId, this.module.id); this.tags = this.tagsEnabled ? this.contentsMap[this.currentChapter].tags : []; @@ -228,14 +228,14 @@ export class AddonModBookIndexComponent extends CoreCourseModuleMainResourceComp // Chapter loaded, log view. We don't return the promise because we don't want to block the user for this. await CoreUtils.ignoreErrors(AddonModBook.logView( - this.module!.instance!, + this.module.instance!, logChapterId ? chapterId : undefined, - this.module!.name, + this.module.name, )); // Module is completed when last chapter is viewed, so we only check completion if the last is reached. if (!this.nextChapter) { - CoreCourse.checkModuleCompletion(this.courseId!, this.module!.completiondata); + CoreCourse.checkModuleCompletion(this.courseId, this.module.completiondata); } } catch (error) { CoreDomUtils.showErrorModalDefault(error, 'addon.mod_book.errorchapter', true); diff --git a/src/addons/mod/folder/components/index/addon-mod-folder-index.html b/src/addons/mod/folder/components/index/addon-mod-folder-index.html index 992d5370f..9262fe900 100644 --- a/src/addons/mod/folder/components/index/addon-mod-folder-index.html +++ b/src/addons/mod/folder/components/index/addon-mod-folder-index.html @@ -26,7 +26,7 @@ + contextLevel="module" [contextInstanceId]="module.id" [courseId]="courseId"> diff --git a/src/addons/mod/folder/components/index/index.ts b/src/addons/mod/folder/components/index/index.ts index 6bb72670a..a3b4b2fae 100644 --- a/src/addons/mod/folder/components/index/index.ts +++ b/src/addons/mod/folder/components/index/index.ts @@ -55,7 +55,7 @@ export class AddonModFolderIndexComponent extends CoreCourseModuleMainResourceCo this.canGetFolder = AddonModFolder.isGetFolderWSAvailable(); if (this.subfolder) { - this.description = this.folderInstance ? this.folderInstance.intro : this.module!.description; + this.description = this.folderInstance ? this.folderInstance.intro : this.module.description; this.loaded = true; this.refreshIcon = CoreConstants.ICON_REFRESH; @@ -67,8 +67,8 @@ export class AddonModFolderIndexComponent extends CoreCourseModuleMainResourceCo await this.loadContent(); try { - await AddonModFolder.logView(this.module!.instance!, this.module!.name); - CoreCourse.checkModuleCompletion(this.courseId!, this.module!.completiondata); + await AddonModFolder.logView(this.module.instance!, this.module.name); + CoreCourse.checkModuleCompletion(this.courseId, this.module.completiondata); } catch { // Ignore errors. } @@ -84,7 +84,7 @@ export class AddonModFolderIndexComponent extends CoreCourseModuleMainResourceCo * @return Resolved when done. */ protected async invalidateContent(): Promise { - await AddonModFolder.invalidateContent(this.module!.id, this.courseId!); + await AddonModFolder.invalidateContent(this.module.id, this.courseId); } /** @@ -96,22 +96,22 @@ export class AddonModFolderIndexComponent extends CoreCourseModuleMainResourceCo protected async fetchContent(refresh = false): Promise { try { if (this.canGetFolder) { - this.folderInstance = await AddonModFolder.getFolder(this.courseId!, this.module!.id); - await CoreCourse.loadModuleContents(this.module!, this.courseId, undefined, false, refresh); + this.folderInstance = await AddonModFolder.getFolder(this.courseId, this.module.id); + await CoreCourse.loadModuleContents(this.module, this.courseId, undefined, false, refresh); } else { - const module = await CoreCourse.getModule(this.module!.id, this.courseId); + const module = await CoreCourse.getModule(this.module.id, this.courseId); - if (!module.contents.length && this.module!.contents.length && !CoreApp.isOnline()) { + if (!module.contents.length && this.module.contents.length && !CoreApp.isOnline()) { // The contents might be empty due to a cached data. Use the old ones. - module.contents = this.module!.contents; + module.contents = this.module.contents; } this.module = module; } this.dataRetrieved.emit(this.folderInstance || this.module); - this.description = this.folderInstance ? this.folderInstance.intro : this.module!.description; - this.subfolder = AddonModFolderHelper.formatContents(this.module!.contents); + this.description = this.folderInstance ? this.folderInstance.intro : this.module.description; + this.subfolder = AddonModFolderHelper.formatContents(this.module.contents); } finally { this.fillContextMenu(refresh); } diff --git a/src/addons/mod/forum/components/index/index.ts b/src/addons/mod/forum/components/index/index.ts index 322df8f67..4c0a44724 100644 --- a/src/addons/mod/forum/components/index/index.ts +++ b/src/addons/mod/forum/components/index/index.ts @@ -135,7 +135,7 @@ export class AddonModForumIndexComponent extends CoreCourseModuleMainActivityCom this.eventReceived.bind(this, false), ); this.changeDiscObserver = CoreEvents.on(AddonModForumProvider.CHANGE_DISCUSSION_EVENT, data => { - if ((this.forum && this.forum.id === data.forumId) || data.cmId === this.module!.id) { + if ((this.forum && this.forum.id === data.forumId) || data.cmId === this.module.id) { AddonModForum.invalidateDiscussionsList(this.forum!.id).finally(() => { if (data.discussionId) { // Discussion changed, search it in the list of discussions. @@ -198,7 +198,7 @@ export class AddonModForumIndexComponent extends CoreCourseModuleMainActivityCom AddonModForum.instance .logView(this.forum.id, this.forum.name) .then(async () => { - CoreCourse.checkModuleCompletion(this.courseId!, this.module!.completiondata); + CoreCourse.checkModuleCompletion(this.courseId, this.module.completiondata); return; }), @@ -324,7 +324,7 @@ export class AddonModForumIndexComponent extends CoreCourseModuleMainActivityCom promises.push( AddonModForum.instance - .getAccessInformation(this.forum.id, { cmId: this.module!.id }) + .getAccessInformation(this.forum.id, { cmId: this.module.id }) .then(async accessInfo => { // Disallow adding discussions if cut-off date is reached and the user has not the // capability to override it. @@ -341,7 +341,7 @@ export class AddonModForumIndexComponent extends CoreCourseModuleMainActivityCom // Use the canAddDiscussion WS to check if the user can pin discussions. promises.push( AddonModForum.instance - .canAddDiscussionToAll(this.forum.id, { cmId: this.module!.id }) + .canAddDiscussionToAll(this.forum.id, { cmId: this.module.id }) .then(async response => { this.canPin = !!response.canpindiscussions; @@ -525,7 +525,7 @@ export class AddonModForumIndexComponent extends CoreCourseModuleMainActivityCom protected async invalidateContent(): Promise { const promises: Promise[] = []; - promises.push(AddonModForum.invalidateForumData(this.courseId!)); + promises.push(AddonModForum.invalidateForumData(this.courseId)); if (this.forum) { promises.push(AddonModForum.invalidateDiscussionsList(this.forum.id)); @@ -546,7 +546,7 @@ export class AddonModForumIndexComponent extends CoreCourseModuleMainActivityCom * @return Promise resolved when done. */ protected sync(): Promise { - return AddonModForumPrefetchHandler.sync(this.module!, this.courseId!); + return AddonModForumPrefetchHandler.sync(this.module, this.courseId); } /** @@ -582,7 +582,7 @@ export class AddonModForumIndexComponent extends CoreCourseModuleMainActivityCom isNewDiscussion: boolean, data: AddonModForumNewDiscussionData | AddonModForumReplyDiscussionData, ): void { - if ((this.forum && this.forum.id === data.forumId) || data.cmId === this.module?.id) { + if ((this.forum && this.forum.id === data.forumId) || data.cmId === this.module.id) { this.showLoadingAndRefresh(false).finally(() => { // If it's a new discussion in tablet mode, try to open it. if (isNewDiscussion && CoreScreen.isTablet) { @@ -606,7 +606,7 @@ export class AddonModForumIndexComponent extends CoreCourseModuleMainActivityCom }); // Check completion since it could be configured to complete once the user adds a new discussion or replies. - CoreCourse.checkModuleCompletion(this.courseId!, this.module!.completiondata); + CoreCourse.checkModuleCompletion(this.courseId, this.module.completiondata); } } @@ -668,7 +668,7 @@ export class AddonModForumIndexComponent extends CoreCourseModuleMainActivityCom componentProps: { discussion, forumId: this.forum!.id, - cmId: this.module!.id, + cmId: this.module.id, }, event, }); @@ -733,7 +733,7 @@ class AddonModForumDiscussionsManager extends CorePageItemsListManager + [contextInstanceId]="module.id" [courseId]="courseId">
diff --git a/src/addons/mod/imscp/components/index/index.ts b/src/addons/mod/imscp/components/index/index.ts index 5f08a8735..e71c5be51 100644 --- a/src/addons/mod/imscp/components/index/index.ts +++ b/src/addons/mod/imscp/components/index/index.ts @@ -59,8 +59,8 @@ export class AddonModImscpIndexComponent extends CoreCourseModuleMainResourceCom await this.loadContent(); try { - await AddonModImscp.logView(this.module!.instance!, this.module!.name); - CoreCourse.checkModuleCompletion(this.courseId!, this.module!.completiondata); + await AddonModImscp.logView(this.module.instance!, this.module.name); + CoreCourse.checkModuleCompletion(this.courseId, this.module.completiondata); } catch { // Ignore errors. } @@ -72,7 +72,7 @@ export class AddonModImscpIndexComponent extends CoreCourseModuleMainResourceCom * @return Resolved when done. */ protected async invalidateContent(): Promise { - await AddonModImscp.invalidateContent(this.module!.id, this.courseId!); + await AddonModImscp.invalidateContent(this.module.id, this.courseId); } /** @@ -85,7 +85,7 @@ export class AddonModImscpIndexComponent extends CoreCourseModuleMainResourceCom let downloadResult: CoreCourseResourceDownloadResult; const promises: Promise[] = []; - promises.push(AddonModImscp.getImscp(this.courseId!, this.module!.id).then((imscp) => { + promises.push(AddonModImscp.getImscp(this.courseId, this.module.id).then((imscp) => { this.description = imscp.intro; this.dataRetrieved.emit(imscp); @@ -101,7 +101,7 @@ export class AddonModImscpIndexComponent extends CoreCourseModuleMainResourceCom try { await Promise.all(promises); - this.items = AddonModImscp.createItemList(this.module!.contents); + this.items = AddonModImscp.createItemList(this.module.contents); if (this.items.length && typeof this.currentItem == 'undefined') { this.currentItem = this.items[0].href; @@ -129,7 +129,7 @@ export class AddonModImscpIndexComponent extends CoreCourseModuleMainResourceCom * @return Promise resolved when done. */ async loadItem(itemId?: string): Promise { - const src = await AddonModImscp.getIframeSrc(this.module!, itemId); + const src = await AddonModImscp.getIframeSrc(this.module, itemId); this.currentItem = itemId; this.previousItem = itemId ? AddonModImscp.getPreviousItem(this.items, itemId) : ''; this.nextItem = itemId ? AddonModImscp.getNextItem(this.items, itemId) : ''; diff --git a/src/addons/mod/lesson/components/index/addon-mod-lesson-index.html b/src/addons/mod/lesson/components/index/addon-mod-lesson-index.html index 676ad9624..b6d7fc159 100644 --- a/src/addons/mod/lesson/components/index/addon-mod-lesson-index.html +++ b/src/addons/mod/lesson/components/index/addon-mod-lesson-index.html @@ -32,7 +32,7 @@ + contextLevel="module" [contextInstanceId]="module.id" [courseId]="courseId"> diff --git a/src/addons/mod/lesson/components/index/index.ts b/src/addons/mod/lesson/components/index/index.ts index 41074093a..125d6f009 100644 --- a/src/addons/mod/lesson/components/index/index.ts +++ b/src/addons/mod/lesson/components/index/index.ts @@ -146,7 +146,7 @@ export class AddonModLessonIndexComponent extends CoreCourseModuleMainActivityCo let lessonReady = true; this.askPassword = false; - this.lesson = await AddonModLesson.getLesson(this.courseId!, this.module!.id); + this.lesson = await AddonModLesson.getLesson(this.courseId, this.module.id); this.dataRetrieved.emit(this.lesson); this.description = this.lesson.intro; // Show description only if intro is present. @@ -156,7 +156,7 @@ export class AddonModLessonIndexComponent extends CoreCourseModuleMainActivityCo await this.syncActivity(showErrors); } - this.accessInfo = await AddonModLesson.getAccessInformation(this.lesson.id, { cmId: this.module!.id }); + this.accessInfo = await AddonModLesson.getAccessInformation(this.lesson.id, { cmId: this.module.id }); this.canManage = this.accessInfo.canmanage; this.canViewReports = this.accessInfo.canviewreports; this.preventReasons = []; @@ -227,7 +227,7 @@ export class AddonModLessonIndexComponent extends CoreCourseModuleMainActivityCo } const promises: Promise[] = []; - const options = { cmId: this.module!.id }; + const options = { cmId: this.module.id }; // Check if there is offline data. promises.push(AddonModLessonSync.hasDataToSync(this.lesson.id, this.accessInfo.attemptscount).then((hasData) => { @@ -293,7 +293,7 @@ export class AddonModLessonIndexComponent extends CoreCourseModuleMainActivityCo protected hasSyncSucceed(result: AddonModLessonSyncResult): boolean { if (result.updated || this.dataSent) { // Check completion status if something was sent. - CoreCourse.checkModuleCompletion(this.courseId!, this.module!.completiondata); + CoreCourse.checkModuleCompletion(this.courseId, this.module.completiondata); } this.dataSent = false; @@ -339,7 +339,7 @@ export class AddonModLessonIndexComponent extends CoreCourseModuleMainActivityCo protected async invalidateContent(): Promise { const promises: Promise[] = []; - promises.push(AddonModLesson.invalidateLessonData(this.courseId!)); + promises.push(AddonModLesson.invalidateLessonData(this.courseId)); if (this.lesson) { promises.push(AddonModLesson.invalidateAccessInformation(this.lesson.id)); @@ -394,7 +394,7 @@ export class AddonModLessonIndexComponent extends CoreCourseModuleMainActivityCo AddonModLesson.logViewLesson(this.lesson.id, this.password, this.lesson.name), ); - CoreCourse.checkModuleCompletion(this.courseId!, this.module!.completiondata); + CoreCourse.checkModuleCompletion(this.courseId, this.module.completiondata); } /** @@ -414,7 +414,7 @@ export class AddonModLessonIndexComponent extends CoreCourseModuleMainActivityCo if (this.hasOffline) { if (continueLast) { pageId = await AddonModLesson.getLastPageSeen(this.lesson.id, this.accessInfo.attemptscount, { - cmId: this.module!.id, + cmId: this.module.id, }); } else { pageId = this.accessInfo.firstpageid; @@ -589,7 +589,7 @@ export class AddonModLessonIndexComponent extends CoreCourseModuleMainActivityCo this.showSpinner = true; try { - await AddonModLessonPrefetchHandler.prefetch(this.module!, this.courseId, true); + await AddonModLessonPrefetchHandler.prefetch(this.module, this.courseId, true); // Success downloading, open lesson. this.playLesson(continueLast); @@ -661,8 +661,8 @@ export class AddonModLessonIndexComponent extends CoreCourseModuleMainActivityCo // The user sent data to server, but not in the sync process. Check if we need to fetch data. await CoreUtils.ignoreErrors(AddonModLessonSync.prefetchAfterUpdate( AddonModLessonPrefetchHandler.instance, - this.module!, - this.courseId!, + this.module, + this.courseId, )); } @@ -677,7 +677,7 @@ export class AddonModLessonIndexComponent extends CoreCourseModuleMainActivityCo */ protected async validatePassword(password: string): Promise { try { - this.lesson = await AddonModLesson.getLessonWithPassword(this.lesson!.id, { password, cmId: this.module!.id }); + this.lesson = await AddonModLesson.getLessonWithPassword(this.lesson!.id, { password, cmId: this.module.id }); this.password = password; } catch (error) { diff --git a/src/addons/mod/lesson/pages/index/index.html b/src/addons/mod/lesson/pages/index/index.html index a245910fa..6871daf92 100644 --- a/src/addons/mod/lesson/pages/index/index.html +++ b/src/addons/mod/lesson/pages/index/index.html @@ -13,7 +13,7 @@ - + diff --git a/src/addons/mod/page/components/index/addon-mod-page-index.html b/src/addons/mod/page/components/index/addon-mod-page-index.html index 3384cd5ac..3a99d22bb 100644 --- a/src/addons/mod/page/components/index/addon-mod-page-index.html +++ b/src/addons/mod/page/components/index/addon-mod-page-index.html @@ -26,7 +26,7 @@ + [componentId]="componentId" contextLevel="module" [contextInstanceId]="module.id" [courseId]="courseId"> @@ -36,7 +36,7 @@
+ [contextInstanceId]="module.id" [courseId]="courseId">

diff --git a/src/addons/mod/page/components/index/index.ts b/src/addons/mod/page/components/index/index.ts index 7cf5feb5a..d8d3cdb61 100644 --- a/src/addons/mod/page/components/index/index.ts +++ b/src/addons/mod/page/components/index/index.ts @@ -59,8 +59,8 @@ export class AddonModPageIndexComponent extends CoreCourseModuleMainResourceComp await this.loadContent(); try { - await AddonModPage.logView(this.module!.instance!, this.module!.name); - CoreCourse.checkModuleCompletion(this.courseId!, this.module!.completiondata); + await AddonModPage.logView(this.module.instance!, this.module.name); + CoreCourse.checkModuleCompletion(this.courseId, this.module.completiondata); } catch { // Ignore errors. } @@ -72,7 +72,7 @@ export class AddonModPageIndexComponent extends CoreCourseModuleMainResourceComp * @return Resolved when done. */ protected async invalidateContent(): Promise { - await AddonModPage.invalidateContent(this.module!.id, this.courseId!); + await AddonModPage.invalidateContent(this.module.id, this.courseId); } /** @@ -92,9 +92,9 @@ export class AddonModPageIndexComponent extends CoreCourseModuleMainResourceComp // Get the module to get the latest title and description. Data should've been updated in download. if (this.canGetPage) { - getPagePromise = AddonModPage.getPageData(this.courseId!, this.module!.id); + getPagePromise = AddonModPage.getPageData(this.courseId, this.module.id); } else { - getPagePromise = CoreCourse.getModule(this.module!.id, this.courseId!); + getPagePromise = CoreCourse.getModule(this.module.id, this.courseId); } promises.push(getPagePromise.then((page) => { @@ -133,7 +133,7 @@ export class AddonModPageIndexComponent extends CoreCourseModuleMainResourceComp })); // Get the page HTML. - promises.push(AddonModPageHelper.getPageHtml(this.module!.contents, this.module!.id).then((content) => { + promises.push(AddonModPageHelper.getPageHtml(this.module.contents, this.module.id).then((content) => { this.contents = content; this.warning = downloadResult?.failed ? this.getErrorDownloadingSomeFilesMessage(downloadResult.error!) : ''; diff --git a/src/addons/mod/quiz/components/index/addon-mod-quiz-index.html b/src/addons/mod/quiz/components/index/addon-mod-quiz-index.html index 87dd74a24..18d2667bc 100644 --- a/src/addons/mod/quiz/components/index/addon-mod-quiz-index.html +++ b/src/addons/mod/quiz/components/index/addon-mod-quiz-index.html @@ -28,7 +28,7 @@ + contextLevel="module" [contextInstanceId]="module.id" [courseId]="courseId"> @@ -117,7 +117,7 @@

{{ 'addon.mod_quiz.comment' | translate }}

+ contextLevel="module" [contextInstanceId]="module.id" [courseId]="courseId">

@@ -125,7 +125,7 @@

{{ 'addon.mod_quiz.overallfeedback' | translate }}

+ contextLevel="module" [contextInstanceId]="module.id" [courseId]="courseId">

diff --git a/src/addons/mod/quiz/components/index/index.ts b/src/addons/mod/quiz/components/index/index.ts index 46b9c15e7..8f10dcc82 100644 --- a/src/addons/mod/quiz/components/index/index.ts +++ b/src/addons/mod/quiz/components/index/index.ts @@ -129,7 +129,7 @@ export class AddonModQuizIndexComponent extends CoreCourseModuleMainActivityComp try { await AddonModQuiz.logViewQuiz(this.quiz.id, this.quiz.name); - CoreCourse.checkModuleCompletion(this.courseId!, this.module!.completiondata); + CoreCourse.checkModuleCompletion(this.courseId, this.module.completiondata); } catch { // Ignore errors. } @@ -162,7 +162,7 @@ export class AddonModQuizIndexComponent extends CoreCourseModuleMainActivityComp this.showStatusSpinner = true; try { - await AddonModQuizPrefetchHandler.prefetch(this.module!, this.courseId, true); + await AddonModQuizPrefetchHandler.prefetch(this.module, this.courseId, true); // Success downloading, open quiz. this.openQuiz(); @@ -190,7 +190,7 @@ export class AddonModQuizIndexComponent extends CoreCourseModuleMainActivityComp protected async fetchContent(refresh: boolean = false, sync: boolean = false, showErrors: boolean = false): Promise { try { // First get the quiz instance. - const quiz = await AddonModQuiz.getQuiz(this.courseId!, this.module!.id); + const quiz = await AddonModQuiz.getQuiz(this.courseId, this.module.id); this.gradeMethodReadable = AddonModQuiz.getQuizGradeMethod(quiz.grademethod); this.now = Date.now(); @@ -231,7 +231,7 @@ export class AddonModQuizIndexComponent extends CoreCourseModuleMainActivityComp } // Get quiz access info. - this.quizAccessInfo = await AddonModQuiz.getQuizAccessInformation(quiz.id, { cmId: this.module!.id }); + this.quizAccessInfo = await AddonModQuiz.getQuizAccessInformation(quiz.id, { cmId: this.module.id }); this.showReviewColumn = this.quizAccessInfo.canreviewmyattempts; this.accessRules = this.quizAccessInfo.accessrules; @@ -242,7 +242,7 @@ export class AddonModQuizIndexComponent extends CoreCourseModuleMainActivityComp } // Get question types in the quiz. - const types = await AddonModQuiz.getQuizRequiredQtypes(quiz.id, { cmId: this.module!.id }); + const types = await AddonModQuiz.getQuizRequiredQtypes(quiz.id, { cmId: this.module.id }); this.unsupportedQuestions = AddonModQuiz.getUnsupportedQuestions(types); this.hasSupportedQuestions = !!types.find((type) => type != 'random' && this.unsupportedQuestions.indexOf(type) == -1); @@ -265,10 +265,10 @@ export class AddonModQuizIndexComponent extends CoreCourseModuleMainActivityComp protected async getAttempts(quiz: AddonModQuizQuizData): Promise { // Get access information of last attempt (it also works if no attempts made). - this.attemptAccessInfo = await AddonModQuiz.getAttemptAccessInformation(quiz.id, 0, { cmId: this.module!.id }); + this.attemptAccessInfo = await AddonModQuiz.getAttemptAccessInformation(quiz.id, 0, { cmId: this.module.id }); // Get attempts. - const attempts = await AddonModQuiz.getUserAttempts(quiz.id, { cmId: this.module!.id }); + const attempts = await AddonModQuiz.getUserAttempts(quiz.id, { cmId: this.module.id }); this.attempts = await this.treatAttempts(quiz, attempts); @@ -386,7 +386,7 @@ export class AddonModQuizIndexComponent extends CoreCourseModuleMainActivityComp if (quiz.showFeedbackColumn) { // Get the quiz overall feedback. const response = await AddonModQuiz.getFeedbackForGrade(quiz.id, this.gradebookData.grade, { - cmId: this.module!.id, + cmId: this.module.id, }); this.overallFeedback = response.feedbacktext; @@ -404,14 +404,14 @@ export class AddonModQuizIndexComponent extends CoreCourseModuleMainActivityComp } // If we go to auto review it means an attempt was finished. Check completion status. - CoreCourse.checkModuleCompletion(this.courseId!, this.module!.completiondata); + CoreCourse.checkModuleCompletion(this.courseId, this.module.completiondata); // Verify that user can see the review. const attemptId = this.autoReview.attemptId; if (this.quizAccessInfo?.canreviewmyattempts) { try { - await AddonModQuiz.getAttemptReview(attemptId, { page: -1, cmId: this.module!.id }); + await AddonModQuiz.getAttemptReview(attemptId, { page: -1, cmId: this.module.id }); await CoreNavigator.navigate(`review/${attemptId}`); } catch { @@ -429,7 +429,7 @@ export class AddonModQuizIndexComponent extends CoreCourseModuleMainActivityComp protected hasSyncSucceed(result: AddonModQuizSyncResult): boolean { if (result.attemptFinished) { // An attempt was finished, check completion status. - CoreCourse.checkModuleCompletion(this.courseId!, this.module!.completiondata); + CoreCourse.checkModuleCompletion(this.courseId, this.module.completiondata); } // If the sync call isn't rejected it means the sync was successful. @@ -488,7 +488,7 @@ export class AddonModQuizIndexComponent extends CoreCourseModuleMainActivityComp protected async invalidateContent(): Promise { const promises: Promise[] = []; - promises.push(AddonModQuiz.invalidateQuizData(this.courseId!)); + promises.push(AddonModQuiz.invalidateQuizData(this.courseId)); if (this.quiz) { promises.push(AddonModQuiz.invalidateUserAttemptsForUser(this.quiz.id)); @@ -497,7 +497,7 @@ export class AddonModQuizIndexComponent extends CoreCourseModuleMainActivityComp promises.push(AddonModQuiz.invalidateAttemptAccessInformation(this.quiz.id)); promises.push(AddonModQuiz.invalidateCombinedReviewOptionsForUser(this.quiz.id)); promises.push(AddonModQuiz.invalidateUserBestGradeForUser(this.quiz.id)); - promises.push(AddonModQuiz.invalidateGradeFromGradebook(this.courseId!)); + promises.push(AddonModQuiz.invalidateGradeFromGradebook(this.courseId)); } await Promise.all(promises); @@ -536,7 +536,7 @@ export class AddonModQuizIndexComponent extends CoreCourseModuleMainActivityComp CoreNavigator.navigate('player', { params: { - moduleUrl: this.module?.url, + moduleUrl: this.module.url, }, }); } @@ -594,7 +594,7 @@ export class AddonModQuizIndexComponent extends CoreCourseModuleMainActivityComp } // Get combined review options. - promises.push(AddonModQuiz.getCombinedReviewOptions(quiz.id, { cmId: this.module!.id }).then((options) => { + promises.push(AddonModQuiz.getCombinedReviewOptions(quiz.id, { cmId: this.module.id }).then((options) => { this.options = options; return; @@ -633,11 +633,11 @@ export class AddonModQuizIndexComponent extends CoreCourseModuleMainActivityComp * @return Promise resolved when done. */ protected async getQuizGrade(quiz: AddonModQuizQuizData): Promise { - this.bestGrade = await AddonModQuiz.getUserBestGrade(quiz.id, { cmId: this.module!.id }); + this.bestGrade = await AddonModQuiz.getUserBestGrade(quiz.id, { cmId: this.module.id }); try { // Get gradebook grade. - const data = await AddonModQuiz.getGradeFromGradebook(this.courseId!, this.module!.id); + const data = await AddonModQuiz.getGradeFromGradebook(this.courseId, this.module.id); if (data) { this.gradebookData = { diff --git a/src/addons/mod/resource/components/index/addon-mod-resource-index.html b/src/addons/mod/resource/components/index/addon-mod-resource-index.html index 56757e8d1..9c5f81c23 100644 --- a/src/addons/mod/resource/components/index/addon-mod-resource-index.html +++ b/src/addons/mod/resource/components/index/addon-mod-resource-index.html @@ -22,7 +22,7 @@ + [contextInstanceId]="module.id" [courseId]="courseId"> diff --git a/src/addons/mod/resource/components/index/index.ts b/src/addons/mod/resource/components/index/index.ts index 4b1c9b8cf..c6afd4d61 100644 --- a/src/addons/mod/resource/components/index/index.ts +++ b/src/addons/mod/resource/components/index/index.ts @@ -64,8 +64,8 @@ export class AddonModResourceIndexComponent extends CoreCourseModuleMainResource await this.loadContent(); try { - await AddonModResource.logView(this.module!.instance!, this.module!.name); - CoreCourse.checkModuleCompletion(this.courseId!, this.module!.completiondata); + await AddonModResource.logView(this.module.instance!, this.module.name); + CoreCourse.checkModuleCompletion(this.courseId, this.module.completiondata); } catch { // Ignore errors. } @@ -77,7 +77,7 @@ export class AddonModResourceIndexComponent extends CoreCourseModuleMainResource * @return Resolved when done. */ protected async invalidateContent(): Promise { - return AddonModResource.invalidateContent(this.module!.id, this.courseId!); + return AddonModResource.invalidateContent(this.module.id, this.courseId); } /** @@ -88,9 +88,9 @@ export class AddonModResourceIndexComponent extends CoreCourseModuleMainResource */ protected async fetchContent(refresh?: boolean): Promise { // Load module contents if needed. Passing refresh is needed to force reloading contents. - await CoreCourse.loadModuleContents(this.module!, this.courseId, undefined, false, refresh); + await CoreCourse.loadModuleContents(this.module, this.courseId, undefined, false, refresh); - if (!this.module!.contents || !this.module!.contents.length) { + if (!this.module.contents || !this.module.contents.length) { throw new CoreError(Translate.instant('core.filenotfound')); } @@ -99,11 +99,11 @@ export class AddonModResourceIndexComponent extends CoreCourseModuleMainResource // Get the resource instance to get the latest name/description and to know if it's embedded. if (this.canGetResource) { - resource = await CoreUtils.ignoreErrors(AddonModResource.getResourceData(this.courseId!, this.module!.id)); + resource = await CoreUtils.ignoreErrors(AddonModResource.getResourceData(this.courseId, this.module.id)); this.description = resource?.intro || ''; options = resource?.displayoptions ? CoreTextUtils.unserialize(resource.displayoptions) : {}; } else { - resource = await CoreUtils.ignoreErrors(CoreCourse.getModule(this.module!.id, this.courseId)); + resource = await CoreUtils.ignoreErrors(CoreCourse.getModule(this.module.id, this.courseId)); this.description = resource?.description || ''; options = resource?.customdata ? CoreTextUtils.unserialize(CoreTextUtils.parseJSON(resource.customdata)) : {}; } @@ -114,9 +114,9 @@ export class AddonModResourceIndexComponent extends CoreCourseModuleMainResource this.dataRetrieved.emit(resource); } - if (AddonModResourceHelper.isDisplayedInIframe(this.module!)) { + if (AddonModResourceHelper.isDisplayedInIframe(this.module)) { const downloadResult = await this.downloadResourceIfNeeded(refresh, true); - const src = await AddonModResourceHelper.getIframeSrc(this.module!); + const src = await AddonModResourceHelper.getIframeSrc(this.module); this.mode = 'iframe'; if (this.src && src.toString() == this.src.toString()) { @@ -137,11 +137,11 @@ export class AddonModResourceIndexComponent extends CoreCourseModuleMainResource return; } - if (resource && 'display' in resource && AddonModResourceHelper.isDisplayedEmbedded(this.module!, resource.display)) { + if (resource && 'display' in resource && AddonModResourceHelper.isDisplayedEmbedded(this.module, resource.display)) { this.mode = 'embedded'; this.warning = ''; - this.contentText = await AddonModResourceHelper.getEmbeddedHtml(this.module!, this.courseId!); + this.contentText = await AddonModResourceHelper.getEmbeddedHtml(this.module, this.courseId); this.mode = this.contentText.length > 0 ? 'embedded' : 'external'; } else { this.mode = 'external'; @@ -158,20 +158,20 @@ export class AddonModResourceIndexComponent extends CoreCourseModuleMainResource * @return Promise resolved when done. */ async open(): Promise { - let downloadable = await CoreCourseModulePrefetchDelegate.isModuleDownloadable(this.module!, this.courseId!); + let downloadable = await CoreCourseModulePrefetchDelegate.isModuleDownloadable(this.module, this.courseId); if (downloadable) { // Check if the main file is downloadle. // This isn't done in "isDownloadable" to prevent extra WS calls in the course page. - downloadable = await AddonModResourceHelper.isMainFileDownloadable(this.module!); + downloadable = await AddonModResourceHelper.isMainFileDownloadable(this.module); if (downloadable) { - return AddonModResourceHelper.openModuleFile(this.module!, this.courseId!); + return AddonModResourceHelper.openModuleFile(this.module, this.courseId); } } // The resource cannot be downloaded, open the activity in browser. - await CoreSites.getCurrentSite()?.openInBrowserWithAutoLoginIfSameSite(this.module!.url!); + await CoreSites.getCurrentSite()?.openInBrowserWithAutoLoginIfSameSite(this.module.url!); } } diff --git a/src/addons/mod/url/components/index/addon-mod-url-index.html b/src/addons/mod/url/components/index/addon-mod-url-index.html index 11392ce43..10bc4fbc2 100644 --- a/src/addons/mod/url/components/index/addon-mod-url-index.html +++ b/src/addons/mod/url/components/index/addon-mod-url-index.html @@ -16,7 +16,7 @@ + [componentId]="componentId" contextLevel="module" [contextInstanceId]="module.id" [courseId]="courseId">
diff --git a/src/addons/mod/url/components/index/index.ts b/src/addons/mod/url/components/index/index.ts index 75b80f768..0409c7e4c 100644 --- a/src/addons/mod/url/components/index/index.ts +++ b/src/addons/mod/url/components/index/index.ts @@ -75,7 +75,7 @@ export class AddonModUrlIndexComponent extends CoreCourseModuleMainResourceCompo * @return Resolved when done. */ protected async invalidateContent(): Promise { - await AddonModUrl.invalidateContent(this.module!.id, this.courseId!); + await AddonModUrl.invalidateContent(this.module.id, this.courseId); } /** @@ -90,7 +90,7 @@ export class AddonModUrlIndexComponent extends CoreCourseModuleMainResourceCompo throw null; } // Fetch the module data. - const url = await AddonModUrl.getUrl(this.courseId!, this.module!.id); + const url = await AddonModUrl.getUrl(this.courseId, this.module.id); this.name = url.name; this.description = url.intro; @@ -102,17 +102,17 @@ export class AddonModUrlIndexComponent extends CoreCourseModuleMainResourceCompo } // Try to load module contents, it's needed to get the URL with parameters. - await CoreCourse.loadModuleContents(this.module!, this.courseId, undefined, false, refresh, undefined, 'url'); + await CoreCourse.loadModuleContents(this.module, this.courseId, undefined, false, refresh, undefined, 'url'); // Always use the URL from the module because it already includes the parameters. - this.url = this.module!.contents[0] && this.module!.contents[0].fileurl ? this.module!.contents[0].fileurl : undefined; + this.url = this.module.contents[0] && this.module.contents[0].fileurl ? this.module.contents[0].fileurl : undefined; await this.calculateDisplayOptions(url); } catch { // Fallback in case is not prefetched or not available. const mod = - await CoreCourse.getModule(this.module!.id, this.courseId, undefined, false, false, undefined, 'url'); + await CoreCourse.getModule(this.module.id, this.courseId, undefined, false, false, undefined, 'url'); this.name = mod.name; this.description = mod.description; @@ -167,8 +167,8 @@ export class AddonModUrlIndexComponent extends CoreCourseModuleMainResourceCompo */ protected async logView(): Promise { try { - await AddonModUrl.logView(this.module!.instance!, this.module!.name); - CoreCourse.checkModuleCompletion(this.courseId!, this.module!.completiondata); + await AddonModUrl.logView(this.module.instance!, this.module.name); + CoreCourse.checkModuleCompletion(this.courseId, this.module.completiondata); } catch { // Ignore errors. } diff --git a/src/core/features/course/classes/main-resource-component.ts b/src/core/features/course/classes/main-resource-component.ts index 0b849707c..c28628247 100644 --- a/src/core/features/course/classes/main-resource-component.ts +++ b/src/core/features/course/classes/main-resource-component.ts @@ -50,8 +50,8 @@ export type CoreCourseResourceDownloadResult = { }) export class CoreCourseModuleMainResourceComponent implements OnInit, OnDestroy, CoreCourseModuleMainComponent { - @Input() module?: CoreCourseModule; // The module of the component. - @Input() courseId?: number; // Course ID the component belongs to. + @Input() module!: CoreCourseModule; // The module of the component. + @Input() courseId!: number; // Course ID the component belongs to. @Output() dataRetrieved = new EventEmitter(); // Called to notify changes the index page from the main component. loaded = false; // If the component has been loaded. @@ -90,10 +90,10 @@ export class CoreCourseModuleMainResourceComponent implements OnInit, OnDestroy, */ async ngOnInit(): Promise { this.siteId = CoreSites.getCurrentSiteId(); - this.description = this.module?.description; - this.componentId = this.module?.id; - this.externalUrl = this.module?.url; - this.courseId = this.courseId || this.module?.course; + this.description = this.module.description; + this.componentId = this.module.id; + this.externalUrl = this.module.url; + this.courseId = this.courseId || this.module.course!; this.blog = await AddonBlog.isPluginEnabled(); } @@ -107,6 +107,7 @@ export class CoreCourseModuleMainResourceComponent implements OnInit, OnDestroy, */ async doRefresh(refresher?: CustomEvent | null, done?: () => void, showErrors: boolean = false): Promise { if (!this.loaded || !this.module) { + // Module can be undefined if course format changes from single activity to weekly/topics. return; } @@ -193,12 +194,8 @@ export class CoreCourseModuleMainResourceComponent implements OnInit, OnDestroy, * Fill the context menu options */ protected fillContextMenu(refresh: boolean = false): void { - if (!this.module) { - return; - } - // All data obtained, now fill the context menu. - CoreCourseHelper.fillContextMenu(this, this.module, this.courseId!, refresh, this.component); + CoreCourseHelper.fillContextMenu(this, this.module, this.courseId, refresh, this.component); } /** @@ -215,10 +212,10 @@ export class CoreCourseModuleMainResourceComponent implements OnInit, OnDestroy, expandDescription(): void { CoreTextUtils.viewText(Translate.instant('core.description'), this.description!, { component: this.component, - componentId: this.module?.id, + componentId: this.module.id, filter: true, contextLevel: 'module', - instanceId: this.module?.id, + instanceId: this.module.id, courseId: this.courseId, }); } @@ -227,7 +224,7 @@ export class CoreCourseModuleMainResourceComponent implements OnInit, OnDestroy, * Go to blog posts. */ async gotoBlog(): Promise { - const params: Params = { cmId: this.module?.id }; + const params: Params = { cmId: this.module.id }; CoreNavigator.navigateToSitePath(AddonBlogMainMenuHandlerService.PAGE_NAME, { params }); } @@ -238,11 +235,7 @@ export class CoreCourseModuleMainResourceComponent implements OnInit, OnDestroy, * @param done Function to call when done. */ prefetch(done?: () => void): void { - if (!this.module) { - return; - } - - CoreCourseHelper.contextMenuPrefetch(this, this.module, this.courseId!, done); + CoreCourseHelper.contextMenuPrefetch(this, this.module, this.courseId, done); } /** @@ -251,17 +244,13 @@ export class CoreCourseModuleMainResourceComponent implements OnInit, OnDestroy, * @param done Function to call when done. */ removeFiles(done?: () => void): void { - if (!this.module) { - return; - } - if (this.prefetchStatus == CoreConstants.DOWNLOADING) { CoreDomUtils.showAlertTranslated(undefined, 'core.course.cannotdeletewhiledownloading'); return; } - CoreCourseHelper.confirmAndRemoveFiles(this.module, this.courseId!, done); + CoreCourseHelper.confirmAndRemoveFiles(this.module, this.courseId, done); } /** @@ -309,13 +298,13 @@ export class CoreCourseModuleMainResourceComponent implements OnInit, OnDestroy, * @return Promise resolved when done. */ protected async setStatusListener(): Promise { - if (typeof this.statusObserver != 'undefined' || !this.module) { + if (typeof this.statusObserver != 'undefined') { return; } // Listen for changes on this module status. this.statusObserver = CoreEvents.on(CoreEvents.PACKAGE_STATUS_CHANGED, (data) => { - if (!this.module || data.componentId != this.module.id || data.component != this.component) { + if (data.componentId != this.module.id || data.component != this.component) { return; } @@ -327,7 +316,7 @@ export class CoreCourseModuleMainResourceComponent implements OnInit, OnDestroy, }, this.siteId); // Also, get the current status. - const status = await CoreCourseModulePrefetchDelegate.getModuleStatus(this.module, this.courseId!); + const status = await CoreCourseModulePrefetchDelegate.getModuleStatus(this.module, this.courseId); this.currentStatus = status; this.showStatus(status); @@ -350,17 +339,13 @@ export class CoreCourseModuleMainResourceComponent implements OnInit, OnDestroy, failed: false, }; - if (!this.module) { - return result; - } - // Get module status to determine if it needs to be downloaded. await this.setStatusListener(); if (this.currentStatus != CoreConstants.DOWNLOADED) { // Download content. This function also loads module contents if needed. try { - await CoreCourseModulePrefetchDelegate.downloadModule(this.module, this.courseId!); + await CoreCourseModulePrefetchDelegate.downloadModule(this.module, this.courseId); // If we reach here it means the download process already loaded the contents, no need to do it again. contentsAlreadyLoaded = true;