MOBILE-3592 user: Make delegate and handlers singleton
parent
fd19dd8c62
commit
46cec40cfe
|
@ -39,11 +39,9 @@ import { CoreComponentsModule } from '@components/components.module';
|
||||||
{
|
{
|
||||||
provide: APP_INITIALIZER,
|
provide: APP_INITIALIZER,
|
||||||
multi: true,
|
multi: true,
|
||||||
deps: [CoreUserProfileFieldDelegate, AddonUserProfileFieldCheckboxHandler],
|
deps: [],
|
||||||
useFactory: (
|
useFactory: () => () =>
|
||||||
userProfileFieldDelegate: CoreUserProfileFieldDelegate,
|
CoreUserProfileFieldDelegate.instance.registerHandler(AddonUserProfileFieldCheckboxHandler.instance),
|
||||||
handler: AddonUserProfileFieldCheckboxHandler,
|
|
||||||
) => () => userProfileFieldDelegate.registerHandler(handler),
|
|
||||||
},
|
},
|
||||||
],
|
],
|
||||||
exports: [
|
exports: [
|
||||||
|
|
|
@ -17,13 +17,14 @@ import { Injectable, Type } from '@angular/core';
|
||||||
import { AuthEmailSignupProfileField } from '@features/login/services/login-helper';
|
import { AuthEmailSignupProfileField } from '@features/login/services/login-helper';
|
||||||
import { CoreUserProfileField } from '@features/user/services/user';
|
import { CoreUserProfileField } from '@features/user/services/user';
|
||||||
import { CoreUserProfileFieldHandler, CoreUserProfileFieldHandlerData } from '@features/user/services/user-profile-field-delegate';
|
import { CoreUserProfileFieldHandler, CoreUserProfileFieldHandlerData } from '@features/user/services/user-profile-field-delegate';
|
||||||
|
import { makeSingleton } from '@singletons';
|
||||||
import { AddonUserProfileFieldCheckboxComponent } from '../../component/checkbox';
|
import { AddonUserProfileFieldCheckboxComponent } from '../../component/checkbox';
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Checkbox user profile field handlers.
|
* Checkbox user profile field handlers.
|
||||||
*/
|
*/
|
||||||
@Injectable({ providedIn: 'root' })
|
@Injectable({ providedIn: 'root' })
|
||||||
export class AddonUserProfileFieldCheckboxHandler implements CoreUserProfileFieldHandler {
|
export class AddonUserProfileFieldCheckboxHandlerService implements CoreUserProfileFieldHandler {
|
||||||
|
|
||||||
name = 'AddonUserProfileFieldCheckbox';
|
name = 'AddonUserProfileFieldCheckbox';
|
||||||
type = 'checkbox';
|
type = 'checkbox';
|
||||||
|
@ -74,3 +75,5 @@ export class AddonUserProfileFieldCheckboxHandler implements CoreUserProfileFiel
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
export class AddonUserProfileFieldCheckboxHandler extends makeSingleton(AddonUserProfileFieldCheckboxHandlerService) {}
|
||||||
|
|
|
@ -41,11 +41,9 @@ import { CorePipesModule } from '@pipes/pipes.module';
|
||||||
{
|
{
|
||||||
provide: APP_INITIALIZER,
|
provide: APP_INITIALIZER,
|
||||||
multi: true,
|
multi: true,
|
||||||
deps: [CoreUserProfileFieldDelegate, AddonUserProfileFieldDatetimeHandler],
|
deps: [],
|
||||||
useFactory: (
|
useFactory: () => () =>
|
||||||
userProfileFieldDelegate: CoreUserProfileFieldDelegate,
|
CoreUserProfileFieldDelegate.instance.registerHandler(AddonUserProfileFieldDatetimeHandler.instance),
|
||||||
handler: AddonUserProfileFieldDatetimeHandler,
|
|
||||||
) => () => userProfileFieldDelegate.registerHandler(handler),
|
|
||||||
},
|
},
|
||||||
],
|
],
|
||||||
exports: [
|
exports: [
|
||||||
|
|
|
@ -18,13 +18,14 @@ import { AuthEmailSignupProfileField } from '@features/login/services/login-help
|
||||||
import { CoreUserProfileField } from '@features/user/services/user';
|
import { CoreUserProfileField } from '@features/user/services/user';
|
||||||
import { CoreUserProfileFieldHandler, CoreUserProfileFieldHandlerData } from '@features/user/services/user-profile-field-delegate';
|
import { CoreUserProfileFieldHandler, CoreUserProfileFieldHandlerData } from '@features/user/services/user-profile-field-delegate';
|
||||||
import { CoreTimeUtils } from '@services/utils/time';
|
import { CoreTimeUtils } from '@services/utils/time';
|
||||||
|
import { makeSingleton } from '@singletons';
|
||||||
import { AddonUserProfileFieldDatetimeComponent } from '../../component/datetime';
|
import { AddonUserProfileFieldDatetimeComponent } from '../../component/datetime';
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Datetime user profile field handlers.
|
* Datetime user profile field handlers.
|
||||||
*/
|
*/
|
||||||
@Injectable({ providedIn: 'root' })
|
@Injectable({ providedIn: 'root' })
|
||||||
export class AddonUserProfileFieldDatetimeHandler implements CoreUserProfileFieldHandler {
|
export class AddonUserProfileFieldDatetimeHandlerService implements CoreUserProfileFieldHandler {
|
||||||
|
|
||||||
name = 'AddonUserProfileFieldDatetime';
|
name = 'AddonUserProfileFieldDatetime';
|
||||||
type = 'datetime';
|
type = 'datetime';
|
||||||
|
@ -76,3 +77,5 @@ export class AddonUserProfileFieldDatetimeHandler implements CoreUserProfileFiel
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
export class AddonUserProfileFieldDatetimeHandler extends makeSingleton(AddonUserProfileFieldDatetimeHandlerService) {}
|
||||||
|
|
|
@ -41,11 +41,9 @@ import { CoreDirectivesModule } from '@directives/directives.module';
|
||||||
{
|
{
|
||||||
provide: APP_INITIALIZER,
|
provide: APP_INITIALIZER,
|
||||||
multi: true,
|
multi: true,
|
||||||
deps: [CoreUserProfileFieldDelegate, AddonUserProfileFieldMenuHandler],
|
deps: [],
|
||||||
useFactory: (
|
useFactory: () => () =>
|
||||||
userProfileFieldDelegate: CoreUserProfileFieldDelegate,
|
CoreUserProfileFieldDelegate.instance.registerHandler(AddonUserProfileFieldMenuHandler.instance),
|
||||||
handler: AddonUserProfileFieldMenuHandler,
|
|
||||||
) => () => userProfileFieldDelegate.registerHandler(handler),
|
|
||||||
},
|
},
|
||||||
],
|
],
|
||||||
exports: [
|
exports: [
|
||||||
|
|
|
@ -17,13 +17,14 @@ import { Injectable, Type } from '@angular/core';
|
||||||
import { AuthEmailSignupProfileField } from '@features/login/services/login-helper';
|
import { AuthEmailSignupProfileField } from '@features/login/services/login-helper';
|
||||||
import { CoreUserProfileField } from '@features/user/services/user';
|
import { CoreUserProfileField } from '@features/user/services/user';
|
||||||
import { CoreUserProfileFieldHandler, CoreUserProfileFieldHandlerData } from '@features/user/services/user-profile-field-delegate';
|
import { CoreUserProfileFieldHandler, CoreUserProfileFieldHandlerData } from '@features/user/services/user-profile-field-delegate';
|
||||||
|
import { makeSingleton } from '@singletons';
|
||||||
import { AddonUserProfileFieldMenuComponent } from '../../component/menu';
|
import { AddonUserProfileFieldMenuComponent } from '../../component/menu';
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Menu user profile field handlers.
|
* Menu user profile field handlers.
|
||||||
*/
|
*/
|
||||||
@Injectable({ providedIn: 'root' })
|
@Injectable({ providedIn: 'root' })
|
||||||
export class AddonUserProfileFieldMenuHandler implements CoreUserProfileFieldHandler {
|
export class AddonUserProfileFieldMenuHandlerService implements CoreUserProfileFieldHandler {
|
||||||
|
|
||||||
name = 'AddonUserProfileFieldMenu';
|
name = 'AddonUserProfileFieldMenu';
|
||||||
type = 'menu';
|
type = 'menu';
|
||||||
|
@ -74,3 +75,5 @@ export class AddonUserProfileFieldMenuHandler implements CoreUserProfileFieldHan
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
export class AddonUserProfileFieldMenuHandler extends makeSingleton(AddonUserProfileFieldMenuHandlerService) {}
|
||||||
|
|
|
@ -19,12 +19,13 @@ import { AddonUserProfileFieldTextComponent } from '../../component/text';
|
||||||
import { CoreTextUtils } from '@services/utils/text';
|
import { CoreTextUtils } from '@services/utils/text';
|
||||||
import { AuthEmailSignupProfileField } from '@features/login/services/login-helper';
|
import { AuthEmailSignupProfileField } from '@features/login/services/login-helper';
|
||||||
import { CoreUserProfileField } from '@features/user/services/user';
|
import { CoreUserProfileField } from '@features/user/services/user';
|
||||||
|
import { makeSingleton } from '@singletons';
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Text user profile field handlers.
|
* Text user profile field handlers.
|
||||||
*/
|
*/
|
||||||
@Injectable({ providedIn: 'root' })
|
@Injectable({ providedIn: 'root' })
|
||||||
export class AddonUserProfileFieldTextHandler implements CoreUserProfileFieldHandler {
|
export class AddonUserProfileFieldTextHandlerService implements CoreUserProfileFieldHandler {
|
||||||
|
|
||||||
name = 'AddonUserProfileFieldText';
|
name = 'AddonUserProfileFieldText';
|
||||||
type = 'text';
|
type = 'text';
|
||||||
|
@ -73,3 +74,5 @@ export class AddonUserProfileFieldTextHandler implements CoreUserProfileFieldHan
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
export class AddonUserProfileFieldTextHandler extends makeSingleton(AddonUserProfileFieldTextHandlerService) {}
|
||||||
|
|
|
@ -41,11 +41,9 @@ import { CoreDirectivesModule } from '@directives/directives.module';
|
||||||
{
|
{
|
||||||
provide: APP_INITIALIZER,
|
provide: APP_INITIALIZER,
|
||||||
multi: true,
|
multi: true,
|
||||||
deps: [CoreUserProfileFieldDelegate, AddonUserProfileFieldTextHandler],
|
deps: [],
|
||||||
useFactory: (
|
useFactory: () => () =>
|
||||||
userProfileFieldDelegate: CoreUserProfileFieldDelegate,
|
CoreUserProfileFieldDelegate.instance.registerHandler(AddonUserProfileFieldTextHandler.instance),
|
||||||
handler: AddonUserProfileFieldTextHandler,
|
|
||||||
) => () => userProfileFieldDelegate.registerHandler(handler),
|
|
||||||
},
|
},
|
||||||
],
|
],
|
||||||
exports: [
|
exports: [
|
||||||
|
|
|
@ -19,12 +19,13 @@ import { AddonUserProfileFieldTextareaComponent } from '../../component/textarea
|
||||||
import { CoreTextUtils } from '@services/utils/text';
|
import { CoreTextUtils } from '@services/utils/text';
|
||||||
import { AuthEmailSignupProfileField } from '@features/login/services/login-helper';
|
import { AuthEmailSignupProfileField } from '@features/login/services/login-helper';
|
||||||
import { CoreUserProfileField } from '@features/user/services/user';
|
import { CoreUserProfileField } from '@features/user/services/user';
|
||||||
|
import { makeSingleton } from '@singletons';
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Textarea user profile field handlers.
|
* Textarea user profile field handlers.
|
||||||
*/
|
*/
|
||||||
@Injectable({ providedIn: 'root' })
|
@Injectable({ providedIn: 'root' })
|
||||||
export class AddonUserProfileFieldTextareaHandler implements CoreUserProfileFieldHandler {
|
export class AddonUserProfileFieldTextareaHandlerService implements CoreUserProfileFieldHandler {
|
||||||
|
|
||||||
name = 'AddonUserProfileFieldTextarea';
|
name = 'AddonUserProfileFieldTextarea';
|
||||||
type = 'textarea';
|
type = 'textarea';
|
||||||
|
@ -83,3 +84,5 @@ export class AddonUserProfileFieldTextareaHandler implements CoreUserProfileFiel
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
export class AddonUserProfileFieldTextareaHandler extends makeSingleton(AddonUserProfileFieldTextareaHandlerService) {}
|
||||||
|
|
|
@ -43,11 +43,9 @@ import { CoreEditorComponentsModule } from '@features/editor/components/componen
|
||||||
{
|
{
|
||||||
provide: APP_INITIALIZER,
|
provide: APP_INITIALIZER,
|
||||||
multi: true,
|
multi: true,
|
||||||
deps: [CoreUserProfileFieldDelegate, AddonUserProfileFieldTextareaHandler],
|
deps: [],
|
||||||
useFactory: (
|
useFactory: () => () =>
|
||||||
userProfileFieldDelegate: CoreUserProfileFieldDelegate,
|
CoreUserProfileFieldDelegate.instance.registerHandler(AddonUserProfileFieldTextareaHandler.instance),
|
||||||
handler: AddonUserProfileFieldTextareaHandler,
|
|
||||||
) => () => userProfileFieldDelegate.registerHandler(handler),
|
|
||||||
},
|
},
|
||||||
],
|
],
|
||||||
exports: [
|
exports: [
|
||||||
|
|
|
@ -83,7 +83,6 @@ export class CoreLoginEmailSignupPage implements OnInit {
|
||||||
protected navCtrl: NavController,
|
protected navCtrl: NavController,
|
||||||
protected fb: FormBuilder,
|
protected fb: FormBuilder,
|
||||||
protected route: ActivatedRoute,
|
protected route: ActivatedRoute,
|
||||||
protected userProfileFieldDelegate: CoreUserProfileFieldDelegate,
|
|
||||||
) {
|
) {
|
||||||
// Create the ageVerificationForm.
|
// Create the ageVerificationForm.
|
||||||
this.ageVerificationForm = this.fb.group({
|
this.ageVerificationForm = this.fb.group({
|
||||||
|
@ -191,7 +190,7 @@ export class CoreLoginEmailSignupPage implements OnInit {
|
||||||
{ siteUrl: this.siteUrl },
|
{ siteUrl: this.siteUrl },
|
||||||
);
|
);
|
||||||
|
|
||||||
if (this.userProfileFieldDelegate.hasRequiredUnsupportedField(this.settings.profilefields)) {
|
if (CoreUserProfileFieldDelegate.instance.hasRequiredUnsupportedField(this.settings.profilefields)) {
|
||||||
this.allRequiredSupported = false;
|
this.allRequiredSupported = false;
|
||||||
|
|
||||||
throw new Error(Translate.instance.instant('core.login.signuprequiredfieldnotsupported'));
|
throw new Error(Translate.instance.instant('core.login.signuprequiredfieldnotsupported'));
|
||||||
|
@ -302,7 +301,7 @@ export class CoreLoginEmailSignupPage implements OnInit {
|
||||||
|
|
||||||
try {
|
try {
|
||||||
// Get the data for the custom profile fields.
|
// Get the data for the custom profile fields.
|
||||||
params.customprofilefields = await this.userProfileFieldDelegate.getDataForFields(
|
params.customprofilefields = await CoreUserProfileFieldDelegate.instance.getDataForFields(
|
||||||
this.settings?.profilefields,
|
this.settings?.profilefields,
|
||||||
true,
|
true,
|
||||||
'email',
|
'email',
|
||||||
|
|
|
@ -40,10 +40,6 @@ export class CoreUserProfileFieldComponent implements OnInit {
|
||||||
componentClass?: Type<unknown>; // The class of the component to render.
|
componentClass?: Type<unknown>; // The class of the component to render.
|
||||||
data: CoreUserProfileFieldComponentData = {}; // Data to pass to the component.
|
data: CoreUserProfileFieldComponentData = {}; // Data to pass to the component.
|
||||||
|
|
||||||
constructor(
|
|
||||||
protected userProfileFieldsDelegate: CoreUserProfileFieldDelegate,
|
|
||||||
) { }
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Component being initialized.
|
* Component being initialized.
|
||||||
*/
|
*/
|
||||||
|
@ -52,7 +48,7 @@ export class CoreUserProfileFieldComponent implements OnInit {
|
||||||
return;
|
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.field = this.field;
|
||||||
this.data.edit = CoreUtils.instance.isTrueOrOne(this.edit);
|
this.data.edit = CoreUtils.instance.isTrueOrOne(this.edit);
|
||||||
|
|
|
@ -31,7 +31,7 @@ import {
|
||||||
CoreUserProvider,
|
CoreUserProvider,
|
||||||
} from '@features/user/services/user';
|
} from '@features/user/services/user';
|
||||||
import { CoreUserHelper } from '@features/user/services/user-helper';
|
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 { CoreFileUploaderHelper } from '@features/fileuploader/services/fileuploader-helper';
|
||||||
import { CoreIonLoadingElement } from '@classes/ion-loading';
|
import { CoreIonLoadingElement } from '@classes/ion-loading';
|
||||||
import { CoreUtils } from '@services/utils/utils';
|
import { CoreUtils } from '@services/utils/utils';
|
||||||
|
@ -64,7 +64,6 @@ export class CoreUserProfilePage implements OnInit, OnDestroy {
|
||||||
constructor(
|
constructor(
|
||||||
protected route: ActivatedRoute,
|
protected route: ActivatedRoute,
|
||||||
protected navCtrl: NavController,
|
protected navCtrl: NavController,
|
||||||
protected userDelegate: CoreUserDelegate,
|
|
||||||
) {
|
) {
|
||||||
|
|
||||||
this.obsProfileRefreshed = CoreEvents.on<CoreUserProfileRefreshedData>(CoreUserProvider.PROFILE_REFRESHED, (data) => {
|
this.obsProfileRefreshed = CoreEvents.on<CoreUserProfileRefreshedData>(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.
|
// If there's already a subscription, unsubscribe because we'll get a new one.
|
||||||
this.subscription?.unsubscribe();
|
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.actionHandlers = [];
|
||||||
this.newPageHandlers = [];
|
this.newPageHandlers = [];
|
||||||
this.communicationHandlers = [];
|
this.communicationHandlers = [];
|
||||||
handlers.forEach((handler) => {
|
handlers.forEach((handler) => {
|
||||||
switch (handler.type) {
|
switch (handler.type) {
|
||||||
case CoreUserDelegate.TYPE_COMMUNICATION:
|
case CoreUserDelegateService.TYPE_COMMUNICATION:
|
||||||
this.communicationHandlers.push(handler.data);
|
this.communicationHandlers.push(handler.data);
|
||||||
break;
|
break;
|
||||||
case CoreUserDelegate.TYPE_ACTION:
|
case CoreUserDelegateService.TYPE_ACTION:
|
||||||
this.actionHandlers.push(handler.data);
|
this.actionHandlers.push(handler.data);
|
||||||
break;
|
break;
|
||||||
case CoreUserDelegate.TYPE_NEW_PAGE:
|
case CoreUserDelegateService.TYPE_NEW_PAGE:
|
||||||
default:
|
default:
|
||||||
this.newPageHandlers.push(handler.data);
|
this.newPageHandlers.push(handler.data);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
this.isLoadingHandlers = !this.userDelegate.areHandlersLoaded(user.id);
|
this.isLoadingHandlers = !CoreUserDelegate.instance.areHandlersLoaded(user.id);
|
||||||
});
|
});
|
||||||
|
|
||||||
await this.checkUserImageUpdated();
|
await this.checkUserImageUpdated();
|
||||||
|
|
|
@ -18,12 +18,13 @@ import { Params } from '@angular/router';
|
||||||
import { CoreContentLinksHandlerBase } from '@features/contentlinks/classes/base-handler';
|
import { CoreContentLinksHandlerBase } from '@features/contentlinks/classes/base-handler';
|
||||||
import { CoreContentLinksAction } from '@features/contentlinks/services/contentlinks-delegate';
|
import { CoreContentLinksAction } from '@features/contentlinks/services/contentlinks-delegate';
|
||||||
import { CoreContentLinksHelper } from '@features/contentlinks/services/contentlinks-helper';
|
import { CoreContentLinksHelper } from '@features/contentlinks/services/contentlinks-helper';
|
||||||
|
import { makeSingleton } from '@singletons';
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Handler to treat links to user profiles.
|
* Handler to treat links to user profiles.
|
||||||
*/
|
*/
|
||||||
@Injectable({ providedIn: 'root' })
|
@Injectable({ providedIn: 'root' })
|
||||||
export class CoreUserProfileLinkHandler extends CoreContentLinksHandlerBase {
|
export class CoreUserProfileLinkHandlerService extends CoreContentLinksHandlerBase {
|
||||||
|
|
||||||
name = 'CoreUserProfileLinkHandler';
|
name = 'CoreUserProfileLinkHandler';
|
||||||
// Match user/view.php and user/profile.php but NOT grade/report/user/.
|
// 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) {}
|
||||||
|
|
|
@ -14,20 +14,21 @@
|
||||||
|
|
||||||
import { Injectable } from '@angular/core';
|
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 { CoreSites } from '@services/sites';
|
||||||
import { CoreUtils } from '@services/utils/utils';
|
import { CoreUtils } from '@services/utils/utils';
|
||||||
import { CoreUserProfile } from '../user';
|
import { CoreUserProfile } from '../user';
|
||||||
|
import { makeSingleton } from '@singletons';
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Handler to send a email to a user.
|
* Handler to send a email to a user.
|
||||||
*/
|
*/
|
||||||
@Injectable({ providedIn: 'root' })
|
@Injectable({ providedIn: 'root' })
|
||||||
export class CoreUserProfileMailHandler implements CoreUserProfileHandler {
|
export class CoreUserProfileMailHandlerService implements CoreUserProfileHandler {
|
||||||
|
|
||||||
name = 'CoreUserProfileMail';
|
name = 'CoreUserProfileMail';
|
||||||
priority = 700;
|
priority = 700;
|
||||||
type = CoreUserDelegate.TYPE_COMMUNICATION;
|
type = CoreUserDelegateService.TYPE_COMMUNICATION;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Check if handler is enabled.
|
* Check if handler is enabled.
|
||||||
|
@ -73,3 +74,5 @@ export class CoreUserProfileMailHandler implements CoreUserProfileHandler {
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
export class CoreUserProfileMailHandler extends makeSingleton(CoreUserProfileMailHandlerService) {}
|
||||||
|
|
|
@ -15,13 +15,14 @@
|
||||||
import { Injectable } from '@angular/core';
|
import { Injectable } from '@angular/core';
|
||||||
|
|
||||||
import { CoreCronHandler } from '@services/cron';
|
import { CoreCronHandler } from '@services/cron';
|
||||||
|
import { makeSingleton } from '@singletons';
|
||||||
import { CoreUserSync } from '../user-sync';
|
import { CoreUserSync } from '../user-sync';
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Synchronization cron handler.
|
* Synchronization cron handler.
|
||||||
*/
|
*/
|
||||||
@Injectable({ providedIn: 'root' })
|
@Injectable({ providedIn: 'root' })
|
||||||
export class CoreUserSyncCronHandler implements CoreCronHandler {
|
export class CoreUserSyncCronHandlerService implements CoreCronHandler {
|
||||||
|
|
||||||
name = 'CoreUserSyncCronHandler';
|
name = 'CoreUserSyncCronHandler';
|
||||||
|
|
||||||
|
@ -48,3 +49,5 @@ export class CoreUserSyncCronHandler implements CoreCronHandler {
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
export class CoreUserSyncCronHandler extends makeSingleton(CoreUserSyncCronHandlerService) {}
|
||||||
|
|
|
@ -19,6 +19,7 @@ import { CoreDelegate, CoreDelegateHandler } from '@classes/delegate';
|
||||||
import { CoreUtils } from '@services/utils/utils';
|
import { CoreUtils } from '@services/utils/utils';
|
||||||
import { CoreEvents } from '@singletons/events';
|
import { CoreEvents } from '@singletons/events';
|
||||||
import { CoreUserProfile } from './user';
|
import { CoreUserProfile } from './user';
|
||||||
|
import { makeSingleton } from '@singletons';
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Interface that all user profile handlers must implement.
|
* 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
|
* Service to interact with plugins to be shown in user profile. Provides functions to register a plugin
|
||||||
* and notify an update in the data.
|
* and notify an update in the data.
|
||||||
*/
|
*/
|
||||||
@Injectable({
|
@Injectable({ providedIn: 'root' })
|
||||||
providedIn: 'root',
|
export class CoreUserDelegateService extends CoreDelegate<CoreUserProfileHandler> {
|
||||||
})
|
|
||||||
export class CoreUserDelegate extends CoreDelegate<CoreUserProfileHandler> {
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* User profile handler type for communication.
|
* User profile handler type for communication.
|
||||||
|
@ -164,7 +163,7 @@ export class CoreUserDelegate extends CoreDelegate<CoreUserProfileHandler> {
|
||||||
constructor() {
|
constructor() {
|
||||||
super('CoreUserDelegate', true);
|
super('CoreUserDelegate', true);
|
||||||
|
|
||||||
CoreEvents.on<CoreUserUpdateHandlerData>(CoreUserDelegate.UPDATE_HANDLER_EVENT, (data) => {
|
CoreEvents.on<CoreUserUpdateHandlerData>(CoreUserDelegateService.UPDATE_HANDLER_EVENT, (data) => {
|
||||||
if (!data || !data.handler || !this.userHandlers[data.userId]) {
|
if (!data || !data.handler || !this.userHandlers[data.userId]) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
@ -255,7 +254,7 @@ export class CoreUserDelegate extends CoreDelegate<CoreUserProfileHandler> {
|
||||||
name: name,
|
name: name,
|
||||||
data: handler.getDisplayData(user, courseId),
|
data: handler.getDisplayData(user, courseId),
|
||||||
priority: handler.priority || 0,
|
priority: handler.priority || 0,
|
||||||
type: handler.type || CoreUserDelegate.TYPE_NEW_PAGE,
|
type: handler.type || CoreUserDelegateService.TYPE_NEW_PAGE,
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
} catch {
|
} catch {
|
||||||
|
@ -271,6 +270,8 @@ export class CoreUserDelegate extends CoreDelegate<CoreUserProfileHandler> {
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
export class CoreUserDelegate extends makeSingleton(CoreUserDelegateService) {}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Data passed to UPDATE_HANDLER_EVENT event.
|
* Data passed to UPDATE_HANDLER_EVENT event.
|
||||||
*/
|
*/
|
||||||
|
|
|
@ -20,9 +20,7 @@ import { CoreUserRole } from './user';
|
||||||
/**
|
/**
|
||||||
* Service that provides some features regarding users information.
|
* Service that provides some features regarding users information.
|
||||||
*/
|
*/
|
||||||
@Injectable({
|
@Injectable({ providedIn: 'root' })
|
||||||
providedIn: 'root',
|
|
||||||
})
|
|
||||||
export class CoreUserHelperProvider {
|
export class CoreUserHelperProvider {
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
@ -16,14 +16,12 @@ import { Injectable } from '@angular/core';
|
||||||
|
|
||||||
import { CoreSites } from '@services/sites';
|
import { CoreSites } from '@services/sites';
|
||||||
import { makeSingleton } from '@singletons';
|
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.
|
* Service to handle offline user preferences.
|
||||||
*/
|
*/
|
||||||
@Injectable({
|
@Injectable({ providedIn: 'root' })
|
||||||
providedIn: 'root',
|
|
||||||
})
|
|
||||||
export class CoreUserOfflineProvider {
|
export class CoreUserOfflineProvider {
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
@ -17,6 +17,7 @@ import { Injectable, Type } from '@angular/core';
|
||||||
import { CoreDelegate, CoreDelegateHandler } from '@classes/delegate';
|
import { CoreDelegate, CoreDelegateHandler } from '@classes/delegate';
|
||||||
import { CoreError } from '@classes/errors/error';
|
import { CoreError } from '@classes/errors/error';
|
||||||
import { AuthEmailSignupProfileField } from '@features/login/services/login-helper';
|
import { AuthEmailSignupProfileField } from '@features/login/services/login-helper';
|
||||||
|
import { makeSingleton } from '@singletons';
|
||||||
import { CoreUserProfileField } from './user';
|
import { CoreUserProfileField } from './user';
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -73,10 +74,8 @@ export interface CoreUserProfileFieldHandlerData {
|
||||||
/**
|
/**
|
||||||
* Service to interact with user profile fields.
|
* Service to interact with user profile fields.
|
||||||
*/
|
*/
|
||||||
@Injectable({
|
@Injectable({ providedIn: 'root' })
|
||||||
providedIn: 'root',
|
export class CoreUserProfileFieldDelegateService extends CoreDelegate<CoreUserProfileFieldHandler> {
|
||||||
})
|
|
||||||
export class CoreUserProfileFieldDelegate extends CoreDelegate<CoreUserProfileFieldHandler> {
|
|
||||||
|
|
||||||
protected handlerNameProperty = 'type';
|
protected handlerNameProperty = 'type';
|
||||||
|
|
||||||
|
@ -206,3 +205,5 @@ export class CoreUserProfileFieldDelegate extends CoreDelegate<CoreUserProfileFi
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
export class CoreUserProfileFieldDelegate extends makeSingleton(CoreUserProfileFieldDelegateService) {}
|
||||||
|
|
|
@ -25,16 +25,14 @@ import { makeSingleton } from '@singletons';
|
||||||
import { CoreEvents, CoreEventUserDeletedData } from '@singletons/events';
|
import { CoreEvents, CoreEventUserDeletedData } from '@singletons/events';
|
||||||
import { CoreStatusWithWarningsWSResponse, CoreWSExternalWarning } from '@services/ws';
|
import { CoreStatusWithWarningsWSResponse, CoreWSExternalWarning } from '@services/ws';
|
||||||
import { CoreError } from '@classes/errors/error';
|
import { CoreError } from '@classes/errors/error';
|
||||||
import { USERS_TABLE_NAME, CoreUserDBRecord } from './db/user';
|
import { USERS_TABLE_NAME, CoreUserDBRecord } from './database/user';
|
||||||
|
|
||||||
const ROOT_CACHE_KEY = 'mmUser:';
|
const ROOT_CACHE_KEY = 'mmUser:';
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Service to provide user functionalities.
|
* Service to provide user functionalities.
|
||||||
*/
|
*/
|
||||||
@Injectable({
|
@Injectable({ providedIn: 'root' })
|
||||||
providedIn: 'root',
|
|
||||||
})
|
|
||||||
export class CoreUserProvider {
|
export class CoreUserProvider {
|
||||||
|
|
||||||
static readonly PARTICIPANTS_LIST_LIMIT = 50; // Max of participants to retrieve in each WS call.
|
static readonly PARTICIPANTS_LIST_LIMIT = 50; // Max of participants to retrieve in each WS call.
|
||||||
|
|
|
@ -17,12 +17,14 @@ import { Routes } from '@angular/router';
|
||||||
|
|
||||||
import { CoreMainMenuMoreRoutingModule } from '@features/mainmenu/pages/more/more-routing.module';
|
import { CoreMainMenuMoreRoutingModule } from '@features/mainmenu/pages/more/more-routing.module';
|
||||||
import { CORE_SITE_SCHEMAS } from '@services/sites';
|
import { CORE_SITE_SCHEMAS } from '@services/sites';
|
||||||
import { SITE_SCHEMA, OFFLINE_SITE_SCHEMA } from './services/db/user';
|
import { SITE_SCHEMA, OFFLINE_SITE_SCHEMA } from './services/database/user';
|
||||||
import { CoreUserComponentsModule } from './components/components.module';
|
import { CoreUserComponentsModule } from './components/components.module';
|
||||||
import { CoreUserDelegate } from './services/user-delegate';
|
import { CoreUserDelegate } from './services/user-delegate';
|
||||||
import { CoreUserProfileMailHandler } from './services/handlers/profile-mail';
|
import { CoreUserProfileMailHandler } from './services/handlers/profile-mail';
|
||||||
import { CoreContentLinksDelegate } from '@features/contentlinks/services/contentlinks-delegate';
|
import { CoreContentLinksDelegate } from '@features/contentlinks/services/contentlinks-delegate';
|
||||||
import { CoreUserProfileLinkHandler } from './services/handlers/profile-link';
|
import { CoreUserProfileLinkHandler } from './services/handlers/profile-link';
|
||||||
|
import { CoreCronDelegate } from '@services/cron';
|
||||||
|
import { CoreUserSyncCronHandler } from './services/handlers/sync-cron';
|
||||||
|
|
||||||
const routes: Routes = [
|
const routes: Routes = [
|
||||||
{
|
{
|
||||||
|
@ -48,17 +50,11 @@ const routes: Routes = [
|
||||||
{
|
{
|
||||||
provide: APP_INITIALIZER,
|
provide: APP_INITIALIZER,
|
||||||
multi: true,
|
multi: true,
|
||||||
deps: [CoreUserDelegate, CoreUserProfileMailHandler, CoreContentLinksDelegate, CoreUserProfileLinkHandler],
|
deps: [],
|
||||||
useFactory: (
|
useFactory: () => () => {
|
||||||
userDelegate: CoreUserDelegate,
|
CoreUserDelegate.instance.registerHandler(CoreUserProfileMailHandler.instance);
|
||||||
mailHandler: CoreUserProfileMailHandler,
|
CoreContentLinksDelegate.instance.registerHandler(CoreUserProfileLinkHandler.instance);
|
||||||
linksDelegate: CoreContentLinksDelegate,
|
CoreCronDelegate.instance.register(CoreUserSyncCronHandler.instance);
|
||||||
profileLinkHandler: CoreUserProfileLinkHandler,
|
|
||||||
|
|
||||||
) => () => {
|
|
||||||
// @todo: Register sync handler when init process has been fixed.
|
|
||||||
userDelegate.registerHandler(mailHandler);
|
|
||||||
linksDelegate.registerHandler(profileLinkHandler);
|
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
],
|
],
|
||||||
|
|
Loading…
Reference in New Issue