From 6e2bfc5286be8e509d292ba9be3ec025cbce7b0d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Pau=20Ferrer=20Oca=C3=B1a?= Date: Thu, 14 Oct 2021 15:05:53 +0200 Subject: [PATCH] MOBILE-3686 courses: Move my courses to a main menu tab --- src/core/features/courses/courses.module.ts | 24 +++++++++--- .../services/handlers/courses-index-link.ts | 12 ++---- ...courses-home.ts => my-courses-mainmenu.ts} | 37 ++++++------------- 3 files changed, 33 insertions(+), 40 deletions(-) rename src/core/features/courses/services/handlers/{my-courses-home.ts => my-courses-mainmenu.ts} (60%) diff --git a/src/core/features/courses/courses.module.ts b/src/core/features/courses/courses.module.ts index 25129ac4a..925858cc0 100644 --- a/src/core/features/courses/courses.module.ts +++ b/src/core/features/courses/courses.module.ts @@ -15,9 +15,12 @@ import { APP_INITIALIZER, NgModule, Type } from '@angular/core'; import { Routes } from '@angular/router'; import { CoreContentLinksDelegate } from '@features/contentlinks/services/contentlinks-delegate'; +import { CoreMainMenuRoutingModule } from '@features/mainmenu/mainmenu-routing.module'; +import { CoreMainMenuTabRoutingModule } from '@features/mainmenu/mainmenu-tab-routing.module'; import { CoreMainMenuHomeRoutingModule } from '@features/mainmenu/pages/home/home-routing.module'; import { CoreMainMenuHomeDelegate } from '@features/mainmenu/services/home-delegate'; +import { CoreMainMenuDelegate } from '@features/mainmenu/services/mainmenu-delegate'; import { CorePushNotificationsDelegate } from '@features/pushnotifications/services/push-delegate'; import { CoreCoursesProvider } from './services/courses'; import { CoreCoursesHelperProvider } from './services/courses-helper'; @@ -28,7 +31,10 @@ import { CoreCoursesIndexLinkHandler } from './services/handlers/courses-index-l import { CoreDashboardHomeHandler, CoreDashboardHomeHandlerService } from './services/handlers/dashboard-home'; import { CoreCoursesDashboardLinkHandler } from './services/handlers/dashboard-link'; import { CoreCoursesEnrolPushClickHandler } from './services/handlers/enrol-push-click'; -import { CoreCoursesMyCoursesHomeHandler, CoreCoursesMyCoursesHomeHandlerService } from './services/handlers/my-courses-home'; +import { + CoreCoursesMyCoursesHomeHandler, + CoreCoursesMyCoursesMainMenuHandlerService, +} from './services/handlers/my-courses-mainmenu'; import { CoreCoursesRequestPushClickHandler } from './services/handlers/request-push-click'; export const CORE_COURSES_SERVICES: Type[] = [ @@ -42,10 +48,6 @@ const mainMenuHomeChildrenRoutes: Routes = [ path: CoreDashboardHomeHandlerService.PAGE_NAME, loadChildren: () => import('./pages/dashboard/dashboard.module').then(m => m.CoreCoursesDashboardPageModule), }, - { - path: CoreCoursesMyCoursesHomeHandlerService.PAGE_NAME, - loadChildren: () => import('./pages/list/list.module').then(m => m.CoreCoursesListPageModule), - }, ]; const mainMenuHomeSiblingRoutes: Routes = [ @@ -55,20 +57,30 @@ const mainMenuHomeSiblingRoutes: Routes = [ }, ]; +const mainMenuTabRoutes: Routes = [ + { + path: CoreCoursesMyCoursesMainMenuHandlerService.PAGE_NAME, + loadChildren: () => import('./pages/list/list.module').then(m => m.CoreCoursesListPageModule), + }, +]; + @NgModule({ imports: [ CoreMainMenuHomeRoutingModule.forChild({ children: mainMenuHomeChildrenRoutes, siblings: mainMenuHomeSiblingRoutes, }), + CoreMainMenuRoutingModule.forChild({ children: mainMenuTabRoutes }), + CoreMainMenuTabRoutingModule.forChild(mainMenuTabRoutes), ], + exports: [CoreMainMenuRoutingModule], providers: [ { provide: APP_INITIALIZER, multi: true, useValue: () => { CoreMainMenuHomeDelegate.registerHandler(CoreDashboardHomeHandler.instance); - CoreMainMenuHomeDelegate.registerHandler(CoreCoursesMyCoursesHomeHandler.instance); + CoreMainMenuDelegate.registerHandler(CoreCoursesMyCoursesHomeHandler.instance); CoreContentLinksDelegate.registerHandler(CoreCoursesCourseLinkHandler.instance); CoreContentLinksDelegate.registerHandler(CoreCoursesIndexLinkHandler.instance); CoreContentLinksDelegate.registerHandler(CoreCoursesDashboardLinkHandler.instance); diff --git a/src/core/features/courses/services/handlers/courses-index-link.ts b/src/core/features/courses/services/handlers/courses-index-link.ts index 2ff9c3f92..4ca26a580 100644 --- a/src/core/features/courses/services/handlers/courses-index-link.ts +++ b/src/core/features/courses/services/handlers/courses-index-link.ts @@ -18,7 +18,7 @@ import { CoreContentLinksHandlerBase } from '@features/contentlinks/classes/base import { CoreContentLinksAction } from '@features/contentlinks/services/contentlinks-delegate'; import { CoreNavigator } from '@services/navigator'; import { makeSingleton } from '@singletons'; -import { CoreCoursesMyCoursesHomeHandlerService } from './my-courses-home'; +import { CoreCoursesMyCoursesMainMenuHandlerService } from './my-courses-mainmenu'; /** * Handler to treat links to course index (list of courses). @@ -31,17 +31,12 @@ export class CoreCoursesIndexLinkHandlerService extends CoreContentLinksHandlerB pattern = /\/course\/?(index\.php.*)?$/; /** - * Get the list of actions for a link (url). - * - * @param siteIds List of sites the URL belongs to. - * @param url The URL to treat. - * @param params The params of the URL. E.g. 'mysite.com?id=1' -> {id: 1} - * @return List of (or promise resolved with list of) actions. + * @inheritdoc */ getActions(siteIds: string[], url: string, params: Params): CoreContentLinksAction[] { return [{ action: (siteId): void => { - let pageName = CoreCoursesMyCoursesHomeHandlerService.PAGE_NAME; + let pageName = CoreCoursesMyCoursesMainMenuHandlerService.PAGE_NAME; const pageParams: Params = {}; if (params.categoryid) { @@ -51,7 +46,6 @@ export class CoreCoursesIndexLinkHandlerService extends CoreContentLinksHandlerB pageParams.mode = 'all'; } - CoreNavigator.navigateToSitePath(pageName, { params: pageParams, siteId }); }, }]; diff --git a/src/core/features/courses/services/handlers/my-courses-home.ts b/src/core/features/courses/services/handlers/my-courses-mainmenu.ts similarity index 60% rename from src/core/features/courses/services/handlers/my-courses-home.ts rename to src/core/features/courses/services/handlers/my-courses-mainmenu.ts index 3e75bf5a8..3c3991a5c 100644 --- a/src/core/features/courses/services/handlers/my-courses-home.ts +++ b/src/core/features/courses/services/handlers/my-courses-mainmenu.ts @@ -13,39 +13,29 @@ // limitations under the License. import { Injectable } from '@angular/core'; -import { CoreMainMenuHomeHandler, CoreMainMenuHomeHandlerToDisplay } from '@features/mainmenu/services/home-delegate'; +import { CoreMainMenuHandler, CoreMainMenuHandlerData } from '@features/mainmenu/services/mainmenu-delegate'; import { CoreSiteHomeHomeHandler } from '@features/sitehome/services/handlers/sitehome-home'; +import { CoreSites } from '@services/sites'; import { makeSingleton } from '@singletons'; import { CoreCourses } from '../courses'; import { CoreDashboardHomeHandler } from './dashboard-home'; /** - * Handler to add my courses into home page. + * Handler to add my courses into main menu. */ @Injectable({ providedIn: 'root' }) -export class CoreCoursesMyCoursesHomeHandlerService implements CoreMainMenuHomeHandler { +export class CoreCoursesMyCoursesMainMenuHandlerService implements CoreMainMenuHandler { static readonly PAGE_NAME = 'courses'; name = 'CoreCoursesMyCourses'; - priority = 900; + priority = 850; /** - * Check if the handler is enabled on a site level. - * - * @return Whether or not the handler is enabled on a site level. + * @inheritdoc */ - isEnabled(): Promise { - return this.isEnabledForSite(); - } - - /** - * Check if the handler is enabled on a certain site. - * - * @param siteId Site ID. If not defined, current site. - * @return Whether or not the handler is enabled on a site level. - */ - async isEnabledForSite(siteId?: string): Promise { + async isEnabled(): Promise { + const siteId = CoreSites.getCurrentSiteId(); const disabled = await CoreCourses.isMyCoursesDisabled(siteId); if (disabled) { @@ -59,20 +49,17 @@ export class CoreCoursesMyCoursesHomeHandlerService implements CoreMainMenuHomeH } /** - * Returns the data needed to render the handler. - * - * @return Data needed to render the handler. + * @inheritdoc */ - getDisplayData(): CoreMainMenuHomeHandlerToDisplay { + getDisplayData(): CoreMainMenuHandlerData { return { title: 'core.courses.mycourses', - page: CoreCoursesMyCoursesHomeHandlerService.PAGE_NAME, + page: CoreCoursesMyCoursesMainMenuHandlerService.PAGE_NAME, class: 'core-courses-my-courses-handler', icon: 'fas-graduation-cap', - selectPriority: 900, }; } } -export const CoreCoursesMyCoursesHomeHandler = makeSingleton(CoreCoursesMyCoursesHomeHandlerService); +export const CoreCoursesMyCoursesHomeHandler = makeSingleton(CoreCoursesMyCoursesMainMenuHandlerService);