diff --git a/src/addons/messages/components/conversation-info/conversation-info.module.ts b/src/addons/messages/components/conversation-info/conversation-info.module.ts deleted file mode 100644 index 30b90561c37..00000000000 --- a/src/addons/messages/components/conversation-info/conversation-info.module.ts +++ /dev/null @@ -1,29 +0,0 @@ -// (C) Copyright 2015 Moodle Pty Ltd. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -import { NgModule } from '@angular/core'; -import { CoreSharedModule } from '@/core/shared.module'; -import { AddonMessagesConversationInfoComponent } from './conversation-info.component'; - -export { AddonMessagesConversationInfoComponent }; - -@NgModule({ - declarations: [ - AddonMessagesConversationInfoComponent, - ], - imports: [ - CoreSharedModule, - ], -}) -export class AddonMessagesConversationInfoComponentModule {} diff --git a/src/addons/messages/components/conversation-info/conversation-info.component.ts b/src/addons/messages/components/conversation-info/conversation-info.ts similarity index 96% rename from src/addons/messages/components/conversation-info/conversation-info.component.ts rename to src/addons/messages/components/conversation-info/conversation-info.ts index 3763d64fb4c..3ef54d82cf5 100644 --- a/src/addons/messages/components/conversation-info/conversation-info.component.ts +++ b/src/addons/messages/components/conversation-info/conversation-info.ts @@ -21,6 +21,7 @@ import { import { ActivatedRoute } from '@angular/router'; import { ModalController } from '@singletons'; import { CoreAlerts } from '@services/overlays/alerts'; +import { CoreSharedModule } from '@/core/shared.module'; /** * Component that displays the list of conversations, including group conversations. @@ -28,6 +29,10 @@ import { CoreAlerts } from '@services/overlays/alerts'; @Component({ selector: 'page-addon-messages-conversation-info', templateUrl: 'conversation-info.html', + standalone: true, + imports: [ + CoreSharedModule, + ], }) export class AddonMessagesConversationInfoComponent implements OnInit { @@ -45,7 +50,7 @@ export class AddonMessagesConversationInfoComponent implements OnInit { } /** - * Component loaded. + * @inheritdoc */ ngOnInit(): void { this.fetchData().finally(() => { diff --git a/src/addons/messages/constants.ts b/src/addons/messages/constants.ts index 402afc3f59c..5419a6e3710 100644 --- a/src/addons/messages/constants.ts +++ b/src/addons/messages/constants.ts @@ -24,6 +24,9 @@ export const ADDON_MESSAGES_CONTACT_REQUESTS_COUNT_EVENT = 'addon_messages_conta export const ADDON_MESSAGES_POLL_INTERVAL = 10000; export const ADDON_MESSAGES_PUSH_SIMULATION_COMPONENT = 'AddonMessagesPushSimulation'; +export const ADDON_MESSAGES_PAGE_NAME = 'messages'; +export const ADDON_MESSAGES_SETTINGS_PAGE_NAME = 'messages'; + export const enum AddonMessagesMessagePrivacy { COURSEMEMBER = 0, // Privacy setting for being messaged by anyone within courses user is member. ONLYCONTACTS = 1, // Privacy setting for being messaged only by contacts. diff --git a/src/addons/messages/guards/index.ts b/src/addons/messages/guards/index.ts index f365adba1dd..7e4a40e8dfa 100644 --- a/src/addons/messages/guards/index.ts +++ b/src/addons/messages/guards/index.ts @@ -14,8 +14,8 @@ import { ActivatedRouteSnapshot, CanActivateFn } from '@angular/router'; import { Router } from '@singletons'; -import { AddonMessagesMainMenuHandlerService } from '../services/handlers/mainmenu'; import { AddonMessages } from '../services/messages'; +import { ADDON_MESSAGES_PAGE_NAME } from '../constants'; /** * Guard to redirect to the right page based on the current Moodle site version. @@ -24,7 +24,7 @@ import { AddonMessages } from '../services/messages'; */ export const messagesIndexGuard: CanActivateFn = async (route: ActivatedRouteSnapshot) => { const enabled = AddonMessages.isGroupMessagingEnabled(); - const path = `/main/${AddonMessagesMainMenuHandlerService.PAGE_NAME}/` + ( enabled ? 'group-conversations' : 'index'); + const path = `/main/${ADDON_MESSAGES_PAGE_NAME}/` + ( enabled ? 'group-conversations' : 'index'); const newRoute = Router.parseUrl(path); diff --git a/src/addons/messages/messages-lazy.module.ts b/src/addons/messages/messages-lazy.module.ts index fd571c34eca..823036f53f7 100644 --- a/src/addons/messages/messages-lazy.module.ts +++ b/src/addons/messages/messages-lazy.module.ts @@ -14,13 +14,10 @@ import { conditionalRoutes } from '@/app/app-routing.module'; import { CoreSharedModule } from '@/core/shared.module'; -import { AddonMessagesContacts35Page } from '@addons/messages/pages/contacts-35/contacts'; import { AddonMessagesContactsPage } from '@addons/messages/pages/contacts/contacts'; import { AddonMessagesDiscussionPage } from '@addons/messages/pages/discussion/discussion'; -import { AddonMessagesDiscussions35Page } from '@addons/messages/pages/discussions-35/discussions'; import { AddonMessagesGroupConversationsPage } from '@addons/messages/pages/group-conversations/group-conversations'; import { AddonMessagesSearchPage } from '@addons/messages/pages/search/search'; -import { AddonMessagesMainMenuHandlerService } from '@addons/messages/services/handlers/mainmenu'; import { Injector, NgModule } from '@angular/core'; import { Route, ROUTES, Routes } from '@angular/router'; import { CoreMainMenuComponentsModule } from '@features/mainmenu/components/components.module'; @@ -29,6 +26,7 @@ import { buildTabMainRoutes } from '@features/mainmenu/mainmenu-tab-routing.modu import { CoreSearchComponentsModule } from '@features/search/components/components.module'; import { CoreScreen } from '@services/screen'; import { messagesIndexGuard } from './guards'; +import { ADDON_MESSAGES_PAGE_NAME } from './constants'; /** * Build module routes. @@ -55,16 +53,16 @@ function buildRoutes(injector: Injector): Routes { }, { path: 'index', - data: { mainMenuTabRoot: AddonMessagesMainMenuHandlerService.PAGE_NAME }, - component: AddonMessagesDiscussions35Page, + data: { mainMenuTabRoot: ADDON_MESSAGES_PAGE_NAME }, + loadComponent: () => import('./pages/discussions-35/discussions'), }, { path: 'contacts-35', // 3.5. - component: AddonMessagesContacts35Page, + loadComponent: () => import('./pages/contacts-35/contacts'), }, { path: 'group-conversations', // 3.6 or greater. - data: { mainMenuTabRoot: AddonMessagesMainMenuHandlerService.PAGE_NAME }, + data: { mainMenuTabRoot: ADDON_MESSAGES_PAGE_NAME }, component: AddonMessagesGroupConversationsPage, }, { @@ -88,19 +86,19 @@ function buildRoutes(injector: Injector): Routes { children: discussionRoutes, }, { - path: 'index', - data: { mainMenuTabRoot: AddonMessagesMainMenuHandlerService.PAGE_NAME }, - component: AddonMessagesDiscussions35Page, + path: 'index', // 3.5. + data: { mainMenuTabRoot: ADDON_MESSAGES_PAGE_NAME }, + loadComponent: () => import('./pages/discussions-35/discussions'), children: discussionRoutes, }, { path: 'contacts-35', // 3.5. - component: AddonMessagesContacts35Page, + loadComponent: () => import('./pages/contacts-35/contacts'), children: discussionRoutes, }, { path: 'group-conversations', // 3.6 or greater. - data: { mainMenuTabRoot: AddonMessagesMainMenuHandlerService.PAGE_NAME }, + data: { mainMenuTabRoot: ADDON_MESSAGES_PAGE_NAME }, component: AddonMessagesGroupConversationsPage, children: discussionRoutes, }, @@ -117,7 +115,7 @@ function buildRoutes(injector: Injector): Routes { ...discussionRoutes, { path: 'message-settings', - loadChildren: () => import('./messages-settings-lazy.module'), + loadComponent: () => import('./pages/settings/settings'), }, ...buildTabMainRoutes(injector, { canActivate: [messagesIndexGuard], @@ -132,10 +130,8 @@ function buildRoutes(injector: Injector): Routes { CoreMainMenuComponentsModule, ], declarations: [ - AddonMessagesContacts35Page, AddonMessagesContactsPage, AddonMessagesDiscussionPage, - AddonMessagesDiscussions35Page, AddonMessagesGroupConversationsPage, AddonMessagesSearchPage, ], diff --git a/src/addons/messages/messages-settings-lazy.module.ts b/src/addons/messages/messages-settings-lazy.module.ts deleted file mode 100644 index 15f93258b62..00000000000 --- a/src/addons/messages/messages-settings-lazy.module.ts +++ /dev/null @@ -1,37 +0,0 @@ -// (C) Copyright 2015 Moodle Pty Ltd. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -import { NgModule } from '@angular/core'; -import { RouterModule, Routes } from '@angular/router'; - -import { CoreSharedModule } from '@/core/shared.module'; -import { AddonMessagesSettingsPage } from '@addons/messages/pages/settings/settings'; - -const routes: Routes = [ - { - path: '', - component: AddonMessagesSettingsPage, - }, -]; - -@NgModule({ - imports: [ - RouterModule.forChild(routes), - CoreSharedModule, - ], - declarations: [ - AddonMessagesSettingsPage, - ], -}) -export default class AddonMessagesSettingsLazyModule {} diff --git a/src/addons/messages/messages.module.ts b/src/addons/messages/messages.module.ts index 5f2bfa18376..6047307e018 100644 --- a/src/addons/messages/messages.module.ts +++ b/src/addons/messages/messages.module.ts @@ -19,10 +19,10 @@ import { CoreMainMenuRoutingModule } from '@features/mainmenu/mainmenu-routing.m import { MESSAGES_OFFLINE_SITE_SCHEMA } from './services/database/messages'; import { CORE_SITE_SCHEMAS } from '@services/sites'; import { CoreMainMenuDelegate } from '@features/mainmenu/services/mainmenu-delegate'; -import { AddonMessagesMainMenuHandler, AddonMessagesMainMenuHandlerService } from './services/handlers/mainmenu'; +import { AddonMessagesMainMenuHandler } from './services/handlers/mainmenu'; import { CoreCronDelegate } from '@services/cron'; import { CoreSettingsDelegate } from '@features/settings/services/settings-delegate'; -import { AddonMessagesSettingsHandler, AddonMessagesSettingsHandlerService } from './services/handlers/settings'; +import { AddonMessagesSettingsHandler } from './services/handlers/settings'; import { CoreMainMenuTabRoutingModule } from '@features/mainmenu/mainmenu-tab-routing.module'; import { CoreContentLinksDelegate } from '@features/contentlinks/services/contentlinks-delegate'; import { AddonMessagesIndexLinkHandler } from './services/handlers/index-link'; @@ -37,6 +37,7 @@ import { CoreNetwork } from '@services/network'; import { AddonMessagesSync } from './services/messages-sync'; import { AddonMessagesSyncCronHandler } from './services/handlers/sync-cron'; import { CoreSitePreferencesRoutingModule } from '@features/settings/settings-site-routing.module'; +import { ADDON_MESSAGES_PAGE_NAME, ADDON_MESSAGES_SETTINGS_PAGE_NAME } from './constants'; /** * Get messages services. @@ -57,14 +58,14 @@ export async function getMessagesServices(): Promise[]> { const mainMenuChildrenRoutes: Routes = [ { - path: AddonMessagesMainMenuHandlerService.PAGE_NAME, + path: ADDON_MESSAGES_PAGE_NAME, loadChildren: () => import('./messages-lazy.module'), }, ]; const preferencesRoutes: Routes = [ { - path: AddonMessagesSettingsHandlerService.PAGE_NAME, - loadChildren: () => import('./messages-settings-lazy.module'), + path: ADDON_MESSAGES_SETTINGS_PAGE_NAME, + loadComponent: () => import('./pages/settings/settings'), }, ]; diff --git a/src/addons/messages/pages/contacts-35/contacts.ts b/src/addons/messages/pages/contacts-35/contacts.ts index 6d906cfba17..35a9d685787 100644 --- a/src/addons/messages/pages/contacts-35/contacts.ts +++ b/src/addons/messages/pages/contacts-35/contacts.ts @@ -29,6 +29,8 @@ import { CoreSplitViewComponent } from '@components/split-view/split-view'; import { CoreKeyboard } from '@singletons/keyboard'; import { ADDON_MESSAGES_MEMBER_INFO_CHANGED_EVENT } from '@addons/messages/constants'; import { CoreAlerts } from '@services/overlays/alerts'; +import { CoreSharedModule } from '@/core/shared.module'; +import { CoreSearchComponentsModule } from '@features/search/components/components.module'; /** * Page that displays the list of contacts. @@ -37,8 +39,13 @@ import { CoreAlerts } from '@services/overlays/alerts'; selector: 'addon-messages-contacts', templateUrl: 'contacts.html', styleUrl: '../../messages-common.scss', + standalone: true, + imports: [ + CoreSharedModule, + CoreSearchComponentsModule, + ], }) -export class AddonMessagesContacts35Page implements OnInit, OnDestroy { +export default class AddonMessagesContacts35Page implements OnInit, OnDestroy { @ViewChild(CoreSplitViewComponent) splitView!: CoreSplitViewComponent; diff --git a/src/addons/messages/pages/discussion/discussion.ts b/src/addons/messages/pages/discussion/discussion.ts index 19b84927004..efa1ea76da8 100644 --- a/src/addons/messages/pages/discussion/discussion.ts +++ b/src/addons/messages/pages/discussion/discussion.ts @@ -1251,7 +1251,7 @@ export class AddonMessagesDiscussionPage implements OnInit, OnDestroy, AfterView async viewInfo(): Promise { if (this.isGroup) { const { AddonMessagesConversationInfoComponent } = - await import('@addons/messages/components/conversation-info/conversation-info.module'); + await import('@addons/messages/components/conversation-info/conversation-info'); // Display the group information. const userId = await CoreModals.openSideModal({ diff --git a/src/addons/messages/pages/discussions-35/discussions.ts b/src/addons/messages/pages/discussions-35/discussions.ts index 6e54dd0e5b8..7de9a6f4790 100644 --- a/src/addons/messages/pages/discussions-35/discussions.ts +++ b/src/addons/messages/pages/discussions-35/discussions.ts @@ -34,6 +34,9 @@ import { CoreKeyboard } from '@singletons/keyboard'; import { ADDON_MESSAGES_NEW_MESSAGE_EVENT, ADDON_MESSAGES_READ_CHANGED_EVENT } from '@addons/messages/constants'; import { CorePromiseUtils } from '@singletons/promise-utils'; import { CoreAlerts } from '@services/overlays/alerts'; +import { CoreSharedModule } from '@/core/shared.module'; +import { CoreSearchComponentsModule } from '@features/search/components/components.module'; +import { CoreMainMenuComponentsModule } from '@features/mainmenu/components/components.module'; /** * Page that displays the list of discussions. @@ -42,8 +45,14 @@ import { CoreAlerts } from '@services/overlays/alerts'; selector: 'addon-messages-discussions', templateUrl: 'discussions.html', styleUrl: '../../messages-common.scss', + standalone: true, + imports: [ + CoreSharedModule, + CoreSearchComponentsModule, + CoreMainMenuComponentsModule, + ], }) -export class AddonMessagesDiscussions35Page implements OnInit, OnDestroy { +export default class AddonMessagesDiscussions35Page implements OnInit, OnDestroy { @ViewChild(CoreSplitViewComponent) splitView!: CoreSplitViewComponent; diff --git a/src/addons/messages/pages/settings/settings.ts b/src/addons/messages/pages/settings/settings.ts index a10125230b8..12340848f45 100644 --- a/src/addons/messages/pages/settings/settings.ts +++ b/src/addons/messages/pages/settings/settings.ts @@ -30,6 +30,7 @@ import { CoreErrorHelper } from '@services/error-helper'; import { CoreLoadings } from '@services/overlays/loadings'; import { ADDON_MESSAGES_NOTIFICATION_PREFERENCES_KEY, AddonMessagesMessagePrivacy } from '@addons/messages/constants'; import { CoreAlerts } from '@services/overlays/alerts'; +import { CoreSharedModule } from '@/core/shared.module'; /** * Page that displays the messages settings page. @@ -37,8 +38,12 @@ import { CoreAlerts } from '@services/overlays/alerts'; @Component({ selector: 'page-addon-messages-settings', templateUrl: 'settings.html', + standalone: true, + imports: [ + CoreSharedModule, + ], }) -export class AddonMessagesSettingsPage implements OnInit, OnDestroy { +export default class AddonMessagesSettingsPage implements OnInit, OnDestroy { protected updateTimeout?: number; diff --git a/src/addons/messages/services/handlers/index-link.ts b/src/addons/messages/services/handlers/index-link.ts index 77ef15ad08b..4a4a0c9bdfd 100644 --- a/src/addons/messages/services/handlers/index-link.ts +++ b/src/addons/messages/services/handlers/index-link.ts @@ -18,7 +18,7 @@ import { CoreContentLinksAction } from '@features/contentlinks/services/contentl import { CoreNavigator } from '@services/navigator'; import { makeSingleton } from '@singletons'; import { AddonMessages } from '../messages'; -import { AddonMessagesMainMenuHandlerService } from './mainmenu'; +import { ADDON_MESSAGES_PAGE_NAME } from '@addons/messages/constants'; /** * Content links handler for messaging index. @@ -38,7 +38,7 @@ export class AddonMessagesIndexLinkHandlerService extends CoreContentLinksHandle getActions(): CoreContentLinksAction[] | Promise { return [{ action: async (siteId): Promise => { - await CoreNavigator.navigateToSitePath(AddonMessagesMainMenuHandlerService.PAGE_NAME, { + await CoreNavigator.navigateToSitePath(ADDON_MESSAGES_PAGE_NAME, { siteId, preferCurrentTab: false, }); diff --git a/src/addons/messages/services/handlers/mainmenu.ts b/src/addons/messages/services/handlers/mainmenu.ts index c7a08eedd35..b263bc93fb1 100644 --- a/src/addons/messages/services/handlers/mainmenu.ts +++ b/src/addons/messages/services/handlers/mainmenu.ts @@ -29,6 +29,7 @@ import { makeSingleton } from '@singletons'; import { ADDON_MESSAGES_UNREAD_CONVERSATION_COUNTS_EVENT, ADDON_MESSAGES_CONTACT_REQUESTS_COUNT_EVENT, + ADDON_MESSAGES_PAGE_NAME, } from '@addons/messages/constants'; import { MAIN_MENU_HANDLER_BADGE_UPDATED_EVENT } from '@features/mainmenu/constants'; @@ -38,15 +39,13 @@ import { MAIN_MENU_HANDLER_BADGE_UPDATED_EVENT } from '@features/mainmenu/consta @Injectable({ providedIn: 'root' }) export class AddonMessagesMainMenuHandlerService implements CoreMainMenuHandler, CoreCronHandler { - static readonly PAGE_NAME = 'messages'; - name = 'AddonMessages'; priority = 700; protected handler: CoreMainMenuHandlerToDisplay = { icon: 'fas-comments', title: 'addon.messages.messages', - page: AddonMessagesMainMenuHandlerService.PAGE_NAME, + page: ADDON_MESSAGES_PAGE_NAME, class: 'addon-messages-handler', showBadge: true, badge: '', diff --git a/src/addons/messages/services/handlers/push-click.ts b/src/addons/messages/services/handlers/push-click.ts index c915b88c064..23ddc09fb3a 100644 --- a/src/addons/messages/services/handlers/push-click.ts +++ b/src/addons/messages/services/handlers/push-click.ts @@ -19,7 +19,7 @@ import { CoreNavigator } from '@services/navigator'; import { CoreUtils } from '@singletons/utils'; import { makeSingleton } from '@singletons'; import { AddonMessages } from '../messages'; -import { AddonMessagesMainMenuHandlerService } from './mainmenu'; +import { ADDON_MESSAGES_PAGE_NAME } from '@addons/messages/constants'; /** * Handler for messaging push notifications clicks. @@ -38,7 +38,7 @@ export class AddonMessagesPushClickHandlerService implements CorePushNotificatio * @returns Whether the notification click is handled by this handler */ async handles(notification: AddonMessagesPushNotificationData): Promise { - if (CoreUtils.isTrueOrOne(notification.notif) && notification.name != 'messagecontactrequests') { + if (CoreUtils.isTrueOrOne(notification.notif) && notification.name !== 'messagecontactrequests') { return false; } @@ -72,7 +72,7 @@ export class AddonMessagesPushClickHandlerService implements CorePushNotificatio userId = Number(notification.userfromid); } - await CoreNavigator.navigateToSitePath(AddonMessagesMainMenuHandlerService.PAGE_NAME, { + await CoreNavigator.navigateToSitePath(ADDON_MESSAGES_PAGE_NAME, { siteId: notification.site, preferCurrentTab: false, nextNavigation: conversationId ? diff --git a/src/addons/messages/services/handlers/settings.ts b/src/addons/messages/services/handlers/settings.ts index 2dcf2a384cc..0d2e76914e3 100644 --- a/src/addons/messages/services/handlers/settings.ts +++ b/src/addons/messages/services/handlers/settings.ts @@ -16,6 +16,7 @@ import { Injectable } from '@angular/core'; import { CoreSettingsHandler, CoreSettingsHandlerData } from '@features/settings/services/settings-delegate'; import { makeSingleton } from '@singletons'; import { AddonMessages } from '../messages'; +import { ADDON_MESSAGES_SETTINGS_PAGE_NAME } from '@addons/messages/constants'; /** * Message settings handler. @@ -23,8 +24,6 @@ import { AddonMessages } from '../messages'; @Injectable({ providedIn: 'root' }) export class AddonMessagesSettingsHandlerService implements CoreSettingsHandler { - static readonly PAGE_NAME = 'messages'; - name = 'AddonMessages'; priority = 600; @@ -46,7 +45,7 @@ export class AddonMessagesSettingsHandlerService implements CoreSettingsHandler return { icon: 'fas-comments', title: 'addon.messages.messages', - page: AddonMessagesSettingsHandlerService.PAGE_NAME, + page: ADDON_MESSAGES_SETTINGS_PAGE_NAME, class: 'addon-messages-settings-handler', }; } diff --git a/src/addons/messages/services/messages.ts b/src/addons/messages/services/messages.ts index bce46a17653..ccff97dca0b 100644 --- a/src/addons/messages/services/messages.ts +++ b/src/addons/messages/services/messages.ts @@ -163,11 +163,7 @@ export class AddonMessagesProvider { */ static readonly NOTIFICATION_PREFERENCES_KEY = 'message_provider_moodle_instantmessage'; - protected logger: CoreLogger; - - constructor() { - this.logger = CoreLogger.getInstance('AddonMessages'); - } + protected logger = CoreLogger.getInstance('AddonMessages'); /** * Add a contact. @@ -332,7 +328,6 @@ export class AddonMessagesProvider { * @param conversationIds Conversations to delete. * @param siteId Site ID. If not defined, use current site. * @param userId User ID. If not defined, current user in the site. - * @returns Promise resolved when the conversations have been deleted. */ async deleteConversations(conversationIds: number[], siteId?: string, userId?: number): Promise { const site = await CoreSites.getSite(siteId); @@ -410,7 +405,6 @@ export class AddonMessagesProvider { * * @param id Message ID. * @param userId User we want to delete the message for. If not defined, use current user. - * @returns Promise resolved when the message has been deleted. */ async deleteMessageForAllOnline(id: number, userId?: number): Promise { userId = userId || CoreSites.getCurrentSiteUserId();