diff --git a/src/addon/mod/resource/providers/helper.ts b/src/addon/mod/resource/providers/helper.ts index b6d0f3aa6..ad461c6a5 100644 --- a/src/addon/mod/resource/providers/helper.ts +++ b/src/addon/mod/resource/providers/helper.ts @@ -113,7 +113,8 @@ export class AddonModResourceHelperProvider { * @return {boolean} Whether the resource should be displayed embeded. */ isDisplayedEmbedded(module: any, display: number): boolean { - if (!module.contents.length || !this.fileProvider.isAvailable() || this.isNextcloudFile(module)) { + if (!module.contents.length || !this.fileProvider.isAvailable() || + (!this.sitesProvider.getCurrentSite().isVersionGreaterEqualThan('3.7') && this.isNextcloudFile(module))) { return false; } diff --git a/src/addon/mod/resource/providers/prefetch-handler.ts b/src/addon/mod/resource/providers/prefetch-handler.ts index 7c05f8fbc..bd439d42d 100644 --- a/src/addon/mod/resource/providers/prefetch-handler.ts +++ b/src/addon/mod/resource/providers/prefetch-handler.ts @@ -130,7 +130,12 @@ export class AddonModResourcePrefetchHandler extends CoreCourseResourcePrefetchH * @return {Promise} Promise resolved with true if downloadable, resolved with false otherwise. */ isDownloadable(module: any, courseId: number): Promise { - // Don't allow downloading Nextcloud files for now. + if (this.sitesProvider.getCurrentSite().isVersionGreaterEqualThan('3.7')) { + // Nextcloud files are downloadable from 3.7 onwards. + return Promise.resolve(true); + } + + // Don't allow downloading Nextcloud files in older sites. return this.loadContents(module, courseId, false).then(() => { return !this.resourceHelper.isNextcloudFile(module); }); diff --git a/src/core/course/components/module/module.ts b/src/core/course/components/module/module.ts index a22125152..ed1c7bbf4 100644 --- a/src/core/course/components/module/module.ts +++ b/src/core/course/components/module/module.ts @@ -86,12 +86,15 @@ export class CoreCourseModuleComponent implements OnInit, OnDestroy { if (data.componentId === this.module.id && this.prefetchHandler && data.component === this.prefetchHandler.component) { + // Call determineModuleStatus to get the right status to display. + const status = this.prefetchDelegate.determineModuleStatus(this.module, data.status); + if (this.downloadEnabled) { // Download is enabled, show the status. - this.showStatus(data.status); + this.showStatus(status); } else if (this.module.handlerData.updateStatus) { // Download isn't enabled but the handler defines a updateStatus function, call it anyway. - this.module.handlerData.updateStatus(data.status); + this.module.handlerData.updateStatus(status); } } }, this.sitesProvider.getCurrentSiteId()); diff --git a/src/core/course/providers/module-prefetch-delegate.ts b/src/core/course/providers/module-prefetch-delegate.ts index 25aae46ab..7bad6fa23 100644 --- a/src/core/course/providers/module-prefetch-delegate.ts +++ b/src/core/course/providers/module-prefetch-delegate.ts @@ -387,6 +387,8 @@ export class CoreCourseModulePrefetchDelegate extends CoreDelegate { } } else if (handler.determineStatus) { // The handler implements a determineStatus function. Apply it. + canCheck = canCheck || this.canCheckUpdates(); + return handler.determineStatus(module, status, canCheck); } }