From 46cc61cc016afe0aa2b86058d298640ef2f22368 Mon Sep 17 00:00:00 2001 From: Noel De Martin Date: Thu, 28 Nov 2019 17:18:13 +0100 Subject: [PATCH] MOBILE-3235 core: Add enumeration defining available context levels --- .../activitymodules/activitymodules.ts | 24 +++++++++++++------ src/core/constants.ts | 12 ++++++++++ 2 files changed, 29 insertions(+), 7 deletions(-) diff --git a/src/addon/block/activitymodules/components/activitymodules/activitymodules.ts b/src/addon/block/activitymodules/components/activitymodules/activitymodules.ts index 512e93b52..adc6e9173 100644 --- a/src/addon/block/activitymodules/components/activitymodules/activitymodules.ts +++ b/src/addon/block/activitymodules/components/activitymodules/activitymodules.ts @@ -16,7 +16,7 @@ import { Component, OnInit, Injector, Input } from '@angular/core'; import { CoreCourseProvider } from '@core/course/providers/course'; import { CoreCourseModuleDelegate } from '@core/course/providers/module-delegate'; import { CoreBlockBaseComponent } from '@core/block/classes/base-block-component'; -import { CoreConstants } from '@core/constants'; +import { CoreConstants, ContextLevel } from '@core/constants'; import { TranslateService } from '@ngx-translate/core'; import { CoreSitesProvider } from '@providers/sites'; @@ -29,7 +29,7 @@ import { CoreSitesProvider } from '@providers/sites'; }) export class AddonBlockActivityModulesComponent extends CoreBlockBaseComponent implements OnInit { @Input() block: any; // The block to render. - @Input() contextLevel: string; // The context where the block will be used. + @Input() contextLevel: ContextLevel; // The context where the block will be used. @Input() instanceId: number; // The instance ID associated with the context level. entries: any[] = []; @@ -65,11 +65,7 @@ export class AddonBlockActivityModulesComponent extends CoreBlockBaseComponent i * @return Promise resolved when done. */ protected fetchContent(): Promise { - const courseId = this.contextLevel === 'course' - ? this.instanceId - : this.sitesProvider.getCurrentSiteHomeId(); - - return this.courseProvider.getSections(courseId, false, true).then((sections) => { + return this.courseProvider.getSections(this.getCourseId(), false, true).then((sections) => { this.entries = []; const archetypes = {}, @@ -127,4 +123,18 @@ export class AddonBlockActivityModulesComponent extends CoreBlockBaseComponent i } }); } + + /** + * Obtain the appropiate course id for the block. + * + * @return Course id. + */ + protected getCourseId(): number { + switch (this.contextLevel) { + case ContextLevel.Course: + return this.instanceId; + default: + return this.sitesProvider.getCurrentSiteHomeId(); + } + } } diff --git a/src/core/constants.ts b/src/core/constants.ts index de6898658..ac5a28de1 100644 --- a/src/core/constants.ts +++ b/src/core/constants.ts @@ -12,6 +12,18 @@ // See the License for the specific language governing permissions and // limitations under the License. +/** + * Context levels enumeration. + */ +export const enum ContextLevel { + System = 'system', + User = 'user', + Category = 'category', + Course = 'course', + ActivityModule = 'module', + Block = 'block', +} + /** * Static class to contain all the core constants. */