From 78d512f92eac1def0d45bd377388aa4a002a2501 Mon Sep 17 00:00:00 2001 From: Dani Palou Date: Wed, 21 Aug 2019 16:23:42 +0200 Subject: [PATCH] MOBILE-3068 course: Fix not enrolled error when prefetch course --- .../coursecompletion/providers/course-option-handler.ts | 6 ++++++ src/addon/coursecompletion/providers/coursecompletion.ts | 1 + src/classes/site.ts | 8 ++++---- 3 files changed, 11 insertions(+), 4 deletions(-) diff --git a/src/addon/coursecompletion/providers/course-option-handler.ts b/src/addon/coursecompletion/providers/course-option-handler.ts index d6a08f6e9..d0483b68a 100644 --- a/src/addon/coursecompletion/providers/course-option-handler.ts +++ b/src/addon/coursecompletion/providers/course-option-handler.ts @@ -97,6 +97,12 @@ export class AddonCourseCompletionCourseOptionHandler implements CoreCourseOptio return this.courseCompletionProvider.getCompletion(course.id, undefined, { getFromCache: false, emergencyCache: false + }).catch((error) => { + if (error && error.errorcode == 'notenroled') { + // Not enrolled error, probably a teacher. Ignore error. + } else { + return Promise.reject(error); + } }); } } diff --git a/src/addon/coursecompletion/providers/coursecompletion.ts b/src/addon/coursecompletion/providers/coursecompletion.ts index 262bb8e3b..0a79a4766 100644 --- a/src/addon/coursecompletion/providers/coursecompletion.ts +++ b/src/addon/coursecompletion/providers/coursecompletion.ts @@ -110,6 +110,7 @@ export class AddonCourseCompletionProvider { preSets.cacheKey = this.getCompletionCacheKey(courseId, userId); preSets.updateFrequency = preSets.updateFrequency || CoreSite.FREQUENCY_SOMETIMES; + preSets.cacheErrors = ['notenroled']; return site.read('core_completion_get_course_completion_status', data, preSets).then((data) => { if (data.completionstatus) { diff --git a/src/classes/site.ts b/src/classes/site.ts index 07bf12cca..18be199e1 100644 --- a/src/classes/site.ts +++ b/src/classes/site.ts @@ -750,15 +750,15 @@ export class CoreSite { // Save the error instead of deleting the cache entry so the same content is displayed in offline. this.saveToCache(method, data, error, preSets); - return Promise.reject(error); - } else if (typeof preSets.emergencyCache !== 'undefined' && !preSets.emergencyCache) { - this.logger.debug(`WS call '${method}' failed. Emergency cache is forbidden, rejecting.`); - return Promise.reject(error); } else if (preSets.cacheErrors && preSets.cacheErrors.indexOf(error.errorcode) != -1) { // Save the error instead of deleting the cache entry so the same content is displayed in offline. this.saveToCache(method, data, error, preSets); + return Promise.reject(error); + } else if (typeof preSets.emergencyCache !== 'undefined' && !preSets.emergencyCache) { + this.logger.debug(`WS call '${method}' failed. Emergency cache is forbidden, rejecting.`); + return Promise.reject(error); }