From 9b93a0450cbcd0f1133deffcf33add22c8b852d9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Pau=20Ferrer=20Oca=C3=B1a?= Date: Fri, 7 Jan 2022 13:34:19 +0100 Subject: [PATCH] MOBILE-3787 assign: Fix non-null checks --- .../mod/assign/components/index/index.ts | 54 +++++++++++-------- .../components/submission/submission.ts | 8 +-- 2 files changed, 35 insertions(+), 27 deletions(-) diff --git a/src/addons/mod/assign/components/index/index.ts b/src/addons/mod/assign/components/index/index.ts index 0aa2a9a8e..84e64cb19 100644 --- a/src/addons/mod/assign/components/index/index.ts +++ b/src/addons/mod/assign/components/index/index.ts @@ -79,8 +79,8 @@ export class AddonModAssignIndexComponent extends CoreCourseModuleMainActivityCo submissionStatusDraft = AddonModAssignProvider.SUBMISSION_STATUS_DRAFT; needGrading = AddonModAssignProvider.NEED_GRADING; - protected currentUserId?: number; // Current user ID. - protected currentSite?: CoreSite; // Current user ID. + protected currentUserId!: number; // Current user ID. + protected currentSite!: CoreSite; // Current site. protected syncEventName = AddonModAssignSyncProvider.AUTO_SYNCED; // Observers. @@ -93,6 +93,9 @@ export class AddonModAssignIndexComponent extends CoreCourseModuleMainActivityCo @Optional() courseContentsPage?: CoreCourseContentsPage, ) { super('AddonModLessonIndexComponent', content, courseContentsPage); + + this.currentSite = CoreSites.getRequiredCurrentSite(); + this.currentUserId = this.currentSite.getUserId(); } /** @@ -101,9 +104,6 @@ export class AddonModAssignIndexComponent extends CoreCourseModuleMainActivityCo async ngOnInit(): Promise { super.ngOnInit(); - this.currentUserId = CoreSites.getCurrentSiteUserId(); - this.currentSite = CoreSites.getCurrentSite(); - // Listen to events. this.savedObserver = CoreEvents.on( AddonModAssignProvider.SUBMISSION_SAVED_EVENT, @@ -139,8 +139,12 @@ export class AddonModAssignIndexComponent extends CoreCourseModuleMainActivityCo await this.loadContent(false, true); + if (!this.assign) { + return; + } + try { - await AddonModAssign.logView(this.assign!.id, this.assign!.name); + await AddonModAssign.logView(this.assign.id, this.assign.name); CoreCourse.checkModuleCompletion(this.courseId, this.module.completiondata); } catch { // Ignore errors. Just don't check Module completion. @@ -148,10 +152,10 @@ export class AddonModAssignIndexComponent extends CoreCourseModuleMainActivityCo if (this.canViewAllSubmissions) { // User can see all submissions, log grading view. - CoreUtils.ignoreErrors(AddonModAssign.logGradingView(this.assign!.id, this.assign!.name)); + CoreUtils.ignoreErrors(AddonModAssign.logGradingView(this.assign.id, this.assign.name)); } else if (this.canViewOwnSubmission) { // User can only see their own submission, log view the user submission. - CoreUtils.ignoreErrors(AddonModAssign.logSubmissionView(this.assign!.id, this.assign!.name)); + CoreUtils.ignoreErrors(AddonModAssign.logSubmissionView(this.assign.id, this.assign.name)); } } @@ -266,7 +270,11 @@ export class AddonModAssignIndexComponent extends CoreCourseModuleMainActivityCo async setGroup(groupId = 0): Promise { this.group = groupId; - const submissionStatus = await AddonModAssign.getSubmissionStatus(this.assign!.id, { + if (!this.assign) { + return; + } + + const submissionStatus = await AddonModAssign.getSubmissionStatus(this.assign.id, { groupId: this.group, cmId: this.module.id, }); @@ -278,10 +286,10 @@ export class AddonModAssignIndexComponent extends CoreCourseModuleMainActivityCo return; } - if (this.summary?.warnofungroupedusers === true) { + if (this.summary.warnofungroupedusers === true) { this.summary.warnofungroupedusers = 'ungroupedusers'; } else { - switch (this.summary?.warnofungroupedusers) { + switch (this.summary.warnofungroupedusers) { case AddonModAssignProvider.WARN_GROUPS_REQUIRED: this.summary.warnofungroupedusers = 'ungroupedusers'; break; @@ -386,16 +394,16 @@ export class AddonModAssignIndexComponent extends CoreCourseModuleMainActivityCo * @return True if refresh is needed, false otherwise. */ protected isRefreshSyncNeeded(syncEventData: AddonModAssignAutoSyncData): boolean { - if (this.assign && syncEventData.assignId == this.assign.id) { - if (syncEventData.warnings && syncEventData.warnings.length) { - // Show warnings. - CoreDomUtils.showErrorModal(syncEventData.warnings[0]); - } - - return true; + if (!this.assign || syncEventData.assignId != this.assign.id) { + return false; } - return false; + if (syncEventData.warnings && syncEventData.warnings.length) { + // Show warnings. + CoreDomUtils.showErrorModal(syncEventData.warnings[0]); + } + + return true; } /** @@ -403,8 +411,12 @@ export class AddonModAssignIndexComponent extends CoreCourseModuleMainActivityCo * * @return Promise resolved when done. */ - protected sync(): Promise { - return AddonModAssignSync.syncAssign(this.assign!.id); + protected async sync(): Promise { + if (!this.assign) { + return; + } + + await AddonModAssignSync.syncAssign(this.assign.id); } /** diff --git a/src/addons/mod/assign/components/submission/submission.ts b/src/addons/mod/assign/components/submission/submission.ts index 5b7b69785..290feb84e 100644 --- a/src/addons/mod/assign/components/submission/submission.ts +++ b/src/addons/mod/assign/components/submission/submission.ts @@ -612,11 +612,7 @@ export class AddonModAssignSubmissionComponent implements OnInit, OnDestroy, Can // If we have data about the grader, get its profile. if (feedback.grade && feedback.grade.grader > 0) { - try { - this.grader = await CoreUser.getProfile(feedback.grade.grader, this.courseId); - } catch { - // Ignore errors. - } + this.grader = await CoreUtils.ignoreErrors(CoreUser.getProfile(feedback.grade.grader, this.courseId)); } else { delete this.grader; } @@ -633,7 +629,7 @@ export class AddonModAssignSubmissionComponent implements OnInit, OnDestroy, Can if (feedback.grade && feedback.grade.grade && !this.grade.grade) { const parsedGrade = parseFloat(feedback.grade.grade); - this.grade!.grade = parsedGrade >= 0 ? parsedGrade : undefined; + this.grade.grade = parsedGrade >= 0 ? parsedGrade : undefined; this.grade.gradebookGrade = CoreUtils.formatFloat(this.grade.grade); this.originalGrades.grade = this.grade.grade; }