From 46cec40cfeacd86259c9ff32c96e208db528af2d Mon Sep 17 00:00:00 2001 From: Dani Palou Date: Thu, 10 Dec 2020 13:21:05 +0100 Subject: [PATCH] MOBILE-3592 user: Make delegate and handlers singleton --- .../checkbox/checkbox.module.ts | 8 +++----- .../checkbox/services/handlers/checkbox.ts | 5 ++++- .../datetime/datetime.module.ts | 8 +++----- .../datetime/services/handlers/datetime.ts | 5 ++++- .../userprofilefield/menu/menu.module.ts | 8 +++----- .../menu/services/handlers/menu.ts | 5 ++++- .../text/services/handlers/text.ts | 5 ++++- .../userprofilefield/text/text.module.ts | 8 +++----- .../textarea/services/handlers/textarea.ts | 5 ++++- .../textarea/textarea.module.ts | 8 +++----- .../login/pages/email-signup/email-signup.ts | 5 ++--- .../user-profile-field/user-profile-field.ts | 6 +----- .../user/pages/profile/profile.page.ts | 13 ++++++------ .../user/services/{db => database}/user.ts | 0 .../user/services/handlers/profile-link.ts | 5 ++++- .../user/services/handlers/profile-mail.ts | 9 ++++++--- .../user/services/handlers/sync-cron.ts | 5 ++++- .../features/user/services/user-delegate.ts | 13 ++++++------ .../features/user/services/user-helper.ts | 4 +--- .../features/user/services/user-offline.ts | 6 ++---- .../services/user-profile-field-delegate.ts | 9 +++++---- src/core/features/user/services/user.ts | 6 ++---- src/core/features/user/user.module.ts | 20 ++++++++----------- 23 files changed, 83 insertions(+), 83 deletions(-) rename src/core/features/user/services/{db => database}/user.ts (100%) diff --git a/src/addons/userprofilefield/checkbox/checkbox.module.ts b/src/addons/userprofilefield/checkbox/checkbox.module.ts index d6134503c..4b232c5e2 100644 --- a/src/addons/userprofilefield/checkbox/checkbox.module.ts +++ b/src/addons/userprofilefield/checkbox/checkbox.module.ts @@ -39,11 +39,9 @@ import { CoreComponentsModule } from '@components/components.module'; { provide: APP_INITIALIZER, multi: true, - deps: [CoreUserProfileFieldDelegate, AddonUserProfileFieldCheckboxHandler], - useFactory: ( - userProfileFieldDelegate: CoreUserProfileFieldDelegate, - handler: AddonUserProfileFieldCheckboxHandler, - ) => () => userProfileFieldDelegate.registerHandler(handler), + deps: [], + useFactory: () => () => + CoreUserProfileFieldDelegate.instance.registerHandler(AddonUserProfileFieldCheckboxHandler.instance), }, ], exports: [ diff --git a/src/addons/userprofilefield/checkbox/services/handlers/checkbox.ts b/src/addons/userprofilefield/checkbox/services/handlers/checkbox.ts index 02d31fd4e..f085e2f3b 100644 --- a/src/addons/userprofilefield/checkbox/services/handlers/checkbox.ts +++ b/src/addons/userprofilefield/checkbox/services/handlers/checkbox.ts @@ -17,13 +17,14 @@ import { Injectable, Type } from '@angular/core'; import { AuthEmailSignupProfileField } from '@features/login/services/login-helper'; import { CoreUserProfileField } from '@features/user/services/user'; import { CoreUserProfileFieldHandler, CoreUserProfileFieldHandlerData } from '@features/user/services/user-profile-field-delegate'; +import { makeSingleton } from '@singletons'; import { AddonUserProfileFieldCheckboxComponent } from '../../component/checkbox'; /** * Checkbox user profile field handlers. */ @Injectable({ providedIn: 'root' }) -export class AddonUserProfileFieldCheckboxHandler implements CoreUserProfileFieldHandler { +export class AddonUserProfileFieldCheckboxHandlerService implements CoreUserProfileFieldHandler { name = 'AddonUserProfileFieldCheckbox'; type = 'checkbox'; @@ -74,3 +75,5 @@ export class AddonUserProfileFieldCheckboxHandler implements CoreUserProfileFiel } } + +export class AddonUserProfileFieldCheckboxHandler extends makeSingleton(AddonUserProfileFieldCheckboxHandlerService) {} diff --git a/src/addons/userprofilefield/datetime/datetime.module.ts b/src/addons/userprofilefield/datetime/datetime.module.ts index 02cd226f4..4d9625d8a 100644 --- a/src/addons/userprofilefield/datetime/datetime.module.ts +++ b/src/addons/userprofilefield/datetime/datetime.module.ts @@ -41,11 +41,9 @@ import { CorePipesModule } from '@pipes/pipes.module'; { provide: APP_INITIALIZER, multi: true, - deps: [CoreUserProfileFieldDelegate, AddonUserProfileFieldDatetimeHandler], - useFactory: ( - userProfileFieldDelegate: CoreUserProfileFieldDelegate, - handler: AddonUserProfileFieldDatetimeHandler, - ) => () => userProfileFieldDelegate.registerHandler(handler), + deps: [], + useFactory: () => () => + CoreUserProfileFieldDelegate.instance.registerHandler(AddonUserProfileFieldDatetimeHandler.instance), }, ], exports: [ diff --git a/src/addons/userprofilefield/datetime/services/handlers/datetime.ts b/src/addons/userprofilefield/datetime/services/handlers/datetime.ts index b35feb867..5a1ab635f 100644 --- a/src/addons/userprofilefield/datetime/services/handlers/datetime.ts +++ b/src/addons/userprofilefield/datetime/services/handlers/datetime.ts @@ -18,13 +18,14 @@ import { AuthEmailSignupProfileField } from '@features/login/services/login-help import { CoreUserProfileField } from '@features/user/services/user'; import { CoreUserProfileFieldHandler, CoreUserProfileFieldHandlerData } from '@features/user/services/user-profile-field-delegate'; import { CoreTimeUtils } from '@services/utils/time'; +import { makeSingleton } from '@singletons'; import { AddonUserProfileFieldDatetimeComponent } from '../../component/datetime'; /** * Datetime user profile field handlers. */ @Injectable({ providedIn: 'root' }) -export class AddonUserProfileFieldDatetimeHandler implements CoreUserProfileFieldHandler { +export class AddonUserProfileFieldDatetimeHandlerService implements CoreUserProfileFieldHandler { name = 'AddonUserProfileFieldDatetime'; type = 'datetime'; @@ -76,3 +77,5 @@ export class AddonUserProfileFieldDatetimeHandler implements CoreUserProfileFiel } } + +export class AddonUserProfileFieldDatetimeHandler extends makeSingleton(AddonUserProfileFieldDatetimeHandlerService) {} diff --git a/src/addons/userprofilefield/menu/menu.module.ts b/src/addons/userprofilefield/menu/menu.module.ts index e91183197..792d82624 100644 --- a/src/addons/userprofilefield/menu/menu.module.ts +++ b/src/addons/userprofilefield/menu/menu.module.ts @@ -41,11 +41,9 @@ import { CoreDirectivesModule } from '@directives/directives.module'; { provide: APP_INITIALIZER, multi: true, - deps: [CoreUserProfileFieldDelegate, AddonUserProfileFieldMenuHandler], - useFactory: ( - userProfileFieldDelegate: CoreUserProfileFieldDelegate, - handler: AddonUserProfileFieldMenuHandler, - ) => () => userProfileFieldDelegate.registerHandler(handler), + deps: [], + useFactory: () => () => + CoreUserProfileFieldDelegate.instance.registerHandler(AddonUserProfileFieldMenuHandler.instance), }, ], exports: [ diff --git a/src/addons/userprofilefield/menu/services/handlers/menu.ts b/src/addons/userprofilefield/menu/services/handlers/menu.ts index d40444adf..7a9396aed 100644 --- a/src/addons/userprofilefield/menu/services/handlers/menu.ts +++ b/src/addons/userprofilefield/menu/services/handlers/menu.ts @@ -17,13 +17,14 @@ import { Injectable, Type } from '@angular/core'; import { AuthEmailSignupProfileField } from '@features/login/services/login-helper'; import { CoreUserProfileField } from '@features/user/services/user'; import { CoreUserProfileFieldHandler, CoreUserProfileFieldHandlerData } from '@features/user/services/user-profile-field-delegate'; +import { makeSingleton } from '@singletons'; import { AddonUserProfileFieldMenuComponent } from '../../component/menu'; /** * Menu user profile field handlers. */ @Injectable({ providedIn: 'root' }) -export class AddonUserProfileFieldMenuHandler implements CoreUserProfileFieldHandler { +export class AddonUserProfileFieldMenuHandlerService implements CoreUserProfileFieldHandler { name = 'AddonUserProfileFieldMenu'; type = 'menu'; @@ -74,3 +75,5 @@ export class AddonUserProfileFieldMenuHandler implements CoreUserProfileFieldHan } } + +export class AddonUserProfileFieldMenuHandler extends makeSingleton(AddonUserProfileFieldMenuHandlerService) {} diff --git a/src/addons/userprofilefield/text/services/handlers/text.ts b/src/addons/userprofilefield/text/services/handlers/text.ts index 11abe2c18..630872d5e 100644 --- a/src/addons/userprofilefield/text/services/handlers/text.ts +++ b/src/addons/userprofilefield/text/services/handlers/text.ts @@ -19,12 +19,13 @@ import { AddonUserProfileFieldTextComponent } from '../../component/text'; import { CoreTextUtils } from '@services/utils/text'; import { AuthEmailSignupProfileField } from '@features/login/services/login-helper'; import { CoreUserProfileField } from '@features/user/services/user'; +import { makeSingleton } from '@singletons'; /** * Text user profile field handlers. */ @Injectable({ providedIn: 'root' }) -export class AddonUserProfileFieldTextHandler implements CoreUserProfileFieldHandler { +export class AddonUserProfileFieldTextHandlerService implements CoreUserProfileFieldHandler { name = 'AddonUserProfileFieldText'; type = 'text'; @@ -73,3 +74,5 @@ export class AddonUserProfileFieldTextHandler implements CoreUserProfileFieldHan } } + +export class AddonUserProfileFieldTextHandler extends makeSingleton(AddonUserProfileFieldTextHandlerService) {} diff --git a/src/addons/userprofilefield/text/text.module.ts b/src/addons/userprofilefield/text/text.module.ts index 7287868ae..edc4f1299 100644 --- a/src/addons/userprofilefield/text/text.module.ts +++ b/src/addons/userprofilefield/text/text.module.ts @@ -41,11 +41,9 @@ import { CoreDirectivesModule } from '@directives/directives.module'; { provide: APP_INITIALIZER, multi: true, - deps: [CoreUserProfileFieldDelegate, AddonUserProfileFieldTextHandler], - useFactory: ( - userProfileFieldDelegate: CoreUserProfileFieldDelegate, - handler: AddonUserProfileFieldTextHandler, - ) => () => userProfileFieldDelegate.registerHandler(handler), + deps: [], + useFactory: () => () => + CoreUserProfileFieldDelegate.instance.registerHandler(AddonUserProfileFieldTextHandler.instance), }, ], exports: [ diff --git a/src/addons/userprofilefield/textarea/services/handlers/textarea.ts b/src/addons/userprofilefield/textarea/services/handlers/textarea.ts index 56ed58bcd..e1a233652 100644 --- a/src/addons/userprofilefield/textarea/services/handlers/textarea.ts +++ b/src/addons/userprofilefield/textarea/services/handlers/textarea.ts @@ -19,12 +19,13 @@ import { AddonUserProfileFieldTextareaComponent } from '../../component/textarea import { CoreTextUtils } from '@services/utils/text'; import { AuthEmailSignupProfileField } from '@features/login/services/login-helper'; import { CoreUserProfileField } from '@features/user/services/user'; +import { makeSingleton } from '@singletons'; /** * Textarea user profile field handlers. */ @Injectable({ providedIn: 'root' }) -export class AddonUserProfileFieldTextareaHandler implements CoreUserProfileFieldHandler { +export class AddonUserProfileFieldTextareaHandlerService implements CoreUserProfileFieldHandler { name = 'AddonUserProfileFieldTextarea'; type = 'textarea'; @@ -83,3 +84,5 @@ export class AddonUserProfileFieldTextareaHandler implements CoreUserProfileFiel } } + +export class AddonUserProfileFieldTextareaHandler extends makeSingleton(AddonUserProfileFieldTextareaHandlerService) {} diff --git a/src/addons/userprofilefield/textarea/textarea.module.ts b/src/addons/userprofilefield/textarea/textarea.module.ts index d42d37ab1..e07ef0e71 100644 --- a/src/addons/userprofilefield/textarea/textarea.module.ts +++ b/src/addons/userprofilefield/textarea/textarea.module.ts @@ -43,11 +43,9 @@ import { CoreEditorComponentsModule } from '@features/editor/components/componen { provide: APP_INITIALIZER, multi: true, - deps: [CoreUserProfileFieldDelegate, AddonUserProfileFieldTextareaHandler], - useFactory: ( - userProfileFieldDelegate: CoreUserProfileFieldDelegate, - handler: AddonUserProfileFieldTextareaHandler, - ) => () => userProfileFieldDelegate.registerHandler(handler), + deps: [], + useFactory: () => () => + CoreUserProfileFieldDelegate.instance.registerHandler(AddonUserProfileFieldTextareaHandler.instance), }, ], exports: [ diff --git a/src/core/features/login/pages/email-signup/email-signup.ts b/src/core/features/login/pages/email-signup/email-signup.ts index 8935a09e3..ba3d36dae 100644 --- a/src/core/features/login/pages/email-signup/email-signup.ts +++ b/src/core/features/login/pages/email-signup/email-signup.ts @@ -83,7 +83,6 @@ export class CoreLoginEmailSignupPage implements OnInit { protected navCtrl: NavController, protected fb: FormBuilder, protected route: ActivatedRoute, - protected userProfileFieldDelegate: CoreUserProfileFieldDelegate, ) { // Create the ageVerificationForm. this.ageVerificationForm = this.fb.group({ @@ -191,7 +190,7 @@ export class CoreLoginEmailSignupPage implements OnInit { { siteUrl: this.siteUrl }, ); - if (this.userProfileFieldDelegate.hasRequiredUnsupportedField(this.settings.profilefields)) { + if (CoreUserProfileFieldDelegate.instance.hasRequiredUnsupportedField(this.settings.profilefields)) { this.allRequiredSupported = false; throw new Error(Translate.instance.instant('core.login.signuprequiredfieldnotsupported')); @@ -302,7 +301,7 @@ export class CoreLoginEmailSignupPage implements OnInit { try { // Get the data for the custom profile fields. - params.customprofilefields = await this.userProfileFieldDelegate.getDataForFields( + params.customprofilefields = await CoreUserProfileFieldDelegate.instance.getDataForFields( this.settings?.profilefields, true, 'email', diff --git a/src/core/features/user/components/user-profile-field/user-profile-field.ts b/src/core/features/user/components/user-profile-field/user-profile-field.ts index 6bccb4b92..678f7b200 100644 --- a/src/core/features/user/components/user-profile-field/user-profile-field.ts +++ b/src/core/features/user/components/user-profile-field/user-profile-field.ts @@ -40,10 +40,6 @@ export class CoreUserProfileFieldComponent implements OnInit { componentClass?: Type; // The class of the component to render. data: CoreUserProfileFieldComponentData = {}; // Data to pass to the component. - constructor( - protected userProfileFieldsDelegate: CoreUserProfileFieldDelegate, - ) { } - /** * Component being initialized. */ @@ -52,7 +48,7 @@ export class CoreUserProfileFieldComponent implements OnInit { return; } - this.componentClass = await this.userProfileFieldsDelegate.getComponent(this.field, this.signup); + this.componentClass = await CoreUserProfileFieldDelegate.instance.getComponent(this.field, this.signup); this.data.field = this.field; this.data.edit = CoreUtils.instance.isTrueOrOne(this.edit); diff --git a/src/core/features/user/pages/profile/profile.page.ts b/src/core/features/user/pages/profile/profile.page.ts index 86f53ecfe..f4e29d3bb 100644 --- a/src/core/features/user/pages/profile/profile.page.ts +++ b/src/core/features/user/pages/profile/profile.page.ts @@ -31,7 +31,7 @@ import { CoreUserProvider, } from '@features/user/services/user'; import { CoreUserHelper } from '@features/user/services/user-helper'; -import { CoreUserDelegate, CoreUserProfileHandlerData } from '@features/user/services/user-delegate'; +import { CoreUserDelegate, CoreUserDelegateService, CoreUserProfileHandlerData } from '@features/user/services/user-delegate'; import { CoreFileUploaderHelper } from '@features/fileuploader/services/fileuploader-helper'; import { CoreIonLoadingElement } from '@classes/ion-loading'; import { CoreUtils } from '@services/utils/utils'; @@ -64,7 +64,6 @@ export class CoreUserProfilePage implements OnInit, OnDestroy { constructor( protected route: ActivatedRoute, protected navCtrl: NavController, - protected userDelegate: CoreUserDelegate, ) { this.obsProfileRefreshed = CoreEvents.on(CoreUserProvider.PROFILE_REFRESHED, (data) => { @@ -127,26 +126,26 @@ export class CoreUserProfilePage implements OnInit, OnDestroy { // If there's already a subscription, unsubscribe because we'll get a new one. this.subscription?.unsubscribe(); - this.subscription = this.userDelegate.getProfileHandlersFor(user, this.courseId).subscribe((handlers) => { + this.subscription = CoreUserDelegate.instance.getProfileHandlersFor(user, this.courseId).subscribe((handlers) => { this.actionHandlers = []; this.newPageHandlers = []; this.communicationHandlers = []; handlers.forEach((handler) => { switch (handler.type) { - case CoreUserDelegate.TYPE_COMMUNICATION: + case CoreUserDelegateService.TYPE_COMMUNICATION: this.communicationHandlers.push(handler.data); break; - case CoreUserDelegate.TYPE_ACTION: + case CoreUserDelegateService.TYPE_ACTION: this.actionHandlers.push(handler.data); break; - case CoreUserDelegate.TYPE_NEW_PAGE: + case CoreUserDelegateService.TYPE_NEW_PAGE: default: this.newPageHandlers.push(handler.data); break; } }); - this.isLoadingHandlers = !this.userDelegate.areHandlersLoaded(user.id); + this.isLoadingHandlers = !CoreUserDelegate.instance.areHandlersLoaded(user.id); }); await this.checkUserImageUpdated(); diff --git a/src/core/features/user/services/db/user.ts b/src/core/features/user/services/database/user.ts similarity index 100% rename from src/core/features/user/services/db/user.ts rename to src/core/features/user/services/database/user.ts diff --git a/src/core/features/user/services/handlers/profile-link.ts b/src/core/features/user/services/handlers/profile-link.ts index 4cd8b434b..e1453224d 100644 --- a/src/core/features/user/services/handlers/profile-link.ts +++ b/src/core/features/user/services/handlers/profile-link.ts @@ -18,12 +18,13 @@ import { Params } from '@angular/router'; import { CoreContentLinksHandlerBase } from '@features/contentlinks/classes/base-handler'; import { CoreContentLinksAction } from '@features/contentlinks/services/contentlinks-delegate'; import { CoreContentLinksHelper } from '@features/contentlinks/services/contentlinks-helper'; +import { makeSingleton } from '@singletons'; /** * Handler to treat links to user profiles. */ @Injectable({ providedIn: 'root' }) -export class CoreUserProfileLinkHandler extends CoreContentLinksHandlerBase { +export class CoreUserProfileLinkHandlerService extends CoreContentLinksHandlerBase { name = 'CoreUserProfileLinkHandler'; // Match user/view.php and user/profile.php but NOT grade/report/user/. @@ -74,3 +75,5 @@ export class CoreUserProfileLinkHandler extends CoreContentLinksHandlerBase { } } + +export class CoreUserProfileLinkHandler extends makeSingleton(CoreUserProfileLinkHandlerService) {} diff --git a/src/core/features/user/services/handlers/profile-mail.ts b/src/core/features/user/services/handlers/profile-mail.ts index 0b61adce8..a240fc59a 100644 --- a/src/core/features/user/services/handlers/profile-mail.ts +++ b/src/core/features/user/services/handlers/profile-mail.ts @@ -14,20 +14,21 @@ import { Injectable } from '@angular/core'; -import { CoreUserDelegate, CoreUserProfileHandler, CoreUserProfileHandlerData } from '../user-delegate'; +import { CoreUserDelegateService, CoreUserProfileHandler, CoreUserProfileHandlerData } from '../user-delegate'; import { CoreSites } from '@services/sites'; import { CoreUtils } from '@services/utils/utils'; import { CoreUserProfile } from '../user'; +import { makeSingleton } from '@singletons'; /** * Handler to send a email to a user. */ @Injectable({ providedIn: 'root' }) -export class CoreUserProfileMailHandler implements CoreUserProfileHandler { +export class CoreUserProfileMailHandlerService implements CoreUserProfileHandler { name = 'CoreUserProfileMail'; priority = 700; - type = CoreUserDelegate.TYPE_COMMUNICATION; + type = CoreUserDelegateService.TYPE_COMMUNICATION; /** * Check if handler is enabled. @@ -73,3 +74,5 @@ export class CoreUserProfileMailHandler implements CoreUserProfileHandler { } } + +export class CoreUserProfileMailHandler extends makeSingleton(CoreUserProfileMailHandlerService) {} diff --git a/src/core/features/user/services/handlers/sync-cron.ts b/src/core/features/user/services/handlers/sync-cron.ts index 96a99cc17..b188d8d59 100644 --- a/src/core/features/user/services/handlers/sync-cron.ts +++ b/src/core/features/user/services/handlers/sync-cron.ts @@ -15,13 +15,14 @@ import { Injectable } from '@angular/core'; import { CoreCronHandler } from '@services/cron'; +import { makeSingleton } from '@singletons'; import { CoreUserSync } from '../user-sync'; /** * Synchronization cron handler. */ @Injectable({ providedIn: 'root' }) -export class CoreUserSyncCronHandler implements CoreCronHandler { +export class CoreUserSyncCronHandlerService implements CoreCronHandler { name = 'CoreUserSyncCronHandler'; @@ -48,3 +49,5 @@ export class CoreUserSyncCronHandler implements CoreCronHandler { } } + +export class CoreUserSyncCronHandler extends makeSingleton(CoreUserSyncCronHandlerService) {} diff --git a/src/core/features/user/services/user-delegate.ts b/src/core/features/user/services/user-delegate.ts index 0c11f480c..08b3f799f 100644 --- a/src/core/features/user/services/user-delegate.ts +++ b/src/core/features/user/services/user-delegate.ts @@ -19,6 +19,7 @@ import { CoreDelegate, CoreDelegateHandler } from '@classes/delegate'; import { CoreUtils } from '@services/utils/utils'; import { CoreEvents } from '@singletons/events'; import { CoreUserProfile } from './user'; +import { makeSingleton } from '@singletons'; /** * Interface that all user profile handlers must implement. @@ -127,10 +128,8 @@ export interface CoreUserProfileHandlerToDisplay { * Service to interact with plugins to be shown in user profile. Provides functions to register a plugin * and notify an update in the data. */ -@Injectable({ - providedIn: 'root', -}) -export class CoreUserDelegate extends CoreDelegate { +@Injectable({ providedIn: 'root' }) +export class CoreUserDelegateService extends CoreDelegate { /** * User profile handler type for communication. @@ -164,7 +163,7 @@ export class CoreUserDelegate extends CoreDelegate { constructor() { super('CoreUserDelegate', true); - CoreEvents.on(CoreUserDelegate.UPDATE_HANDLER_EVENT, (data) => { + CoreEvents.on(CoreUserDelegateService.UPDATE_HANDLER_EVENT, (data) => { if (!data || !data.handler || !this.userHandlers[data.userId]) { return; } @@ -255,7 +254,7 @@ export class CoreUserDelegate extends CoreDelegate { name: name, data: handler.getDisplayData(user, courseId), priority: handler.priority || 0, - type: handler.type || CoreUserDelegate.TYPE_NEW_PAGE, + type: handler.type || CoreUserDelegateService.TYPE_NEW_PAGE, }); } } catch { @@ -271,6 +270,8 @@ export class CoreUserDelegate extends CoreDelegate { } +export class CoreUserDelegate extends makeSingleton(CoreUserDelegateService) {} + /** * Data passed to UPDATE_HANDLER_EVENT event. */ diff --git a/src/core/features/user/services/user-helper.ts b/src/core/features/user/services/user-helper.ts index ffd636c6b..3b6bf0a39 100644 --- a/src/core/features/user/services/user-helper.ts +++ b/src/core/features/user/services/user-helper.ts @@ -20,9 +20,7 @@ import { CoreUserRole } from './user'; /** * Service that provides some features regarding users information. */ -@Injectable({ - providedIn: 'root', -}) +@Injectable({ providedIn: 'root' }) export class CoreUserHelperProvider { /** diff --git a/src/core/features/user/services/user-offline.ts b/src/core/features/user/services/user-offline.ts index 5afd27b7c..ebe3c8e3e 100644 --- a/src/core/features/user/services/user-offline.ts +++ b/src/core/features/user/services/user-offline.ts @@ -16,14 +16,12 @@ import { Injectable } from '@angular/core'; import { CoreSites } from '@services/sites'; import { makeSingleton } from '@singletons'; -import { PREFERENCES_TABLE_NAME, CoreUserPreferenceDBRecord } from './db/user'; +import { PREFERENCES_TABLE_NAME, CoreUserPreferenceDBRecord } from './database/user'; /** * Service to handle offline user preferences. */ -@Injectable({ - providedIn: 'root', -}) +@Injectable({ providedIn: 'root' }) export class CoreUserOfflineProvider { /** diff --git a/src/core/features/user/services/user-profile-field-delegate.ts b/src/core/features/user/services/user-profile-field-delegate.ts index 3f1ec6436..833686c4f 100644 --- a/src/core/features/user/services/user-profile-field-delegate.ts +++ b/src/core/features/user/services/user-profile-field-delegate.ts @@ -17,6 +17,7 @@ import { Injectable, Type } from '@angular/core'; import { CoreDelegate, CoreDelegateHandler } from '@classes/delegate'; import { CoreError } from '@classes/errors/error'; import { AuthEmailSignupProfileField } from '@features/login/services/login-helper'; +import { makeSingleton } from '@singletons'; import { CoreUserProfileField } from './user'; /** @@ -73,10 +74,8 @@ export interface CoreUserProfileFieldHandlerData { /** * Service to interact with user profile fields. */ -@Injectable({ - providedIn: 'root', -}) -export class CoreUserProfileFieldDelegate extends CoreDelegate { +@Injectable({ providedIn: 'root' }) +export class CoreUserProfileFieldDelegateService extends CoreDelegate { protected handlerNameProperty = 'type'; @@ -206,3 +205,5 @@ export class CoreUserProfileFieldDelegate extends CoreDelegate () => { - // @todo: Register sync handler when init process has been fixed. - userDelegate.registerHandler(mailHandler); - linksDelegate.registerHandler(profileLinkHandler); + deps: [], + useFactory: () => () => { + CoreUserDelegate.instance.registerHandler(CoreUserProfileMailHandler.instance); + CoreContentLinksDelegate.instance.registerHandler(CoreUserProfileLinkHandler.instance); + CoreCronDelegate.instance.register(CoreUserSyncCronHandler.instance); }, }, ],