MOBILE-3321 user: Decouple event constants

main
Noel De Martin 2022-05-11 14:10:03 +02:00
parent 73ee4df1ec
commit 2dbb620994
5 changed files with 44 additions and 39 deletions

View File

@ -17,7 +17,7 @@ import { Component, Input, OnInit, OnChanges, OnDestroy, SimpleChange } from '@a
import { CoreSites } from '@services/sites';
import { CoreUtils } from '@services/utils/utils';
import { CoreEventObserver, CoreEvents } from '@singletons/events';
import { CoreUserProvider, CoreUserBasicData } from '@features/user/services/user';
import { USER_PROFILE_PICTURE_UPDATED, CoreUserBasicData } from '@features/user/services/user';
import { CoreNavigator } from '@services/navigator';
import { CoreNetwork } from '@services/network';
@ -54,7 +54,7 @@ export class CoreUserAvatarComponent implements OnInit, OnChanges, OnDestroy {
this.currentUserId = CoreSites.getCurrentSiteUserId();
this.pictureObserver = CoreEvents.on(
CoreUserProvider.PROFILE_PICTURE_UPDATED,
USER_PROFILE_PICTURE_UPDATED,
(data) => {
if (data.userId == this.userId) {
this.avatarUrl = data.picture;

View File

@ -21,7 +21,7 @@ import { CoreDomUtils } from '@services/utils/dom';
import { CoreTextUtils } from '@services/utils/text';
import { CoreUtils } from '@services/utils/utils';
import { CoreEventObserver, CoreEvents } from '@singletons/events';
import { CoreUser, CoreUserProfile, CoreUserProvider } from '@features/user/services/user';
import { CoreUser, CoreUserProfile, USER_PROFILE_PICTURE_UPDATED, USER_PROFILE_REFRESHED } from '@features/user/services/user';
import { CoreUserHelper } from '@features/user/services/user-helper';
import { CoreNavigator } from '@services/navigator';
import { CoreIonLoadingElement } from '@classes/ion-loading';
@ -65,7 +65,7 @@ export class CoreUserAboutPage implements OnInit, OnDestroy {
return;
}
this.obsProfileRefreshed = CoreEvents.on(CoreUserProvider.PROFILE_REFRESHED, (data) => {
this.obsProfileRefreshed = CoreEvents.on(USER_PROFILE_REFRESHED, (data) => {
if (!this.user || !data.user) {
return;
}
@ -147,7 +147,7 @@ export class CoreUserAboutPage implements OnInit, OnDestroy {
await CoreSites.updateSiteInfo(this.site.getId());
} catch {
// Cannot update site info. Assume the profile image is the right one.
CoreEvents.trigger(CoreUserProvider.PROFILE_PICTURE_UPDATED, {
CoreEvents.trigger(USER_PROFILE_PICTURE_UPDATED, {
userId: this.userId,
picture: this.user.profileimageurl,
}, this.site.getId());
@ -158,7 +158,7 @@ export class CoreUserAboutPage implements OnInit, OnDestroy {
await this.refreshUser();
} else {
// Now they're the same, send event to use the right avatar in the rest of the app.
CoreEvents.trigger(CoreUserProvider.PROFILE_PICTURE_UPDATED, {
CoreEvents.trigger(USER_PROFILE_PICTURE_UPDATED, {
userId: this.userId,
picture: this.user.profileimageurl,
}, this.site.getId());
@ -181,7 +181,7 @@ export class CoreUserAboutPage implements OnInit, OnDestroy {
const profileImageURL = await CoreUser.changeProfilePicture(result.itemid, this.userId, this.site.getId());
CoreEvents.trigger(CoreUserProvider.PROFILE_PICTURE_UPDATED, {
CoreEvents.trigger(USER_PROFILE_PICTURE_UPDATED, {
userId: this.userId,
picture: profileImageURL,
}, this.site.getId());
@ -210,7 +210,7 @@ export class CoreUserAboutPage implements OnInit, OnDestroy {
event?.complete();
if (this.user) {
CoreEvents.trigger(CoreUserProvider.PROFILE_REFRESHED, {
CoreEvents.trigger(USER_PROFILE_REFRESHED, {
courseId: this.courseId,
userId: this.userId,
user: this.user,

View File

@ -21,7 +21,7 @@ import { CoreSite } from '@classes/site';
import { CoreSites } from '@services/sites';
import { CoreDomUtils } from '@services/utils/dom';
import { CoreEventObserver, CoreEvents } from '@singletons/events';
import { CoreUser, CoreUserProfile, CoreUserProvider } from '@features/user/services/user';
import { CoreUser, CoreUserProfile, USER_PROFILE_REFRESHED } from '@features/user/services/user';
import { CoreUserHelper } from '@features/user/services/user-helper';
import {
CoreUserDelegate,
@ -64,7 +64,7 @@ export class CoreUserProfilePage implements OnInit, OnDestroy {
users?: CoreUserSwipeItemsManager;
constructor(private route: ActivatedRoute) {
this.obsProfileRefreshed = CoreEvents.on(CoreUserProvider.PROFILE_REFRESHED, (data) => {
this.obsProfileRefreshed = CoreEvents.on(USER_PROFILE_REFRESHED, (data) => {
if (!this.user || !data.user) {
return;
}
@ -187,7 +187,7 @@ export class CoreUserProfilePage implements OnInit, OnDestroy {
event?.complete();
if (this.user) {
CoreEvents.trigger(CoreUserProvider.PROFILE_REFRESHED, {
CoreEvents.trigger(USER_PROFILE_REFRESHED, {
courseId: this.courseId,
userId: this.userId,
user: this.user,

View File

@ -18,11 +18,24 @@ import { Subject, BehaviorSubject } from 'rxjs';
import { CoreDelegate, CoreDelegateHandler } from '@classes/delegate';
import { CoreUtils } from '@services/utils/utils';
import { CoreEvents } from '@singletons/events';
import { CoreUserProfile, CoreUserProvider } from './user';
import { CoreUserProfile, USER_PROFILE_REFRESHED } from './user';
import { makeSingleton } from '@singletons';
import { CoreCourses, CoreCourseUserAdminOrNavOptionIndexed } from '@features/courses/services/courses';
import { CoreSites } from '@services/sites';
declare module '@singletons/events' {
/**
* Augment CoreEventsData interface with events specific to this service.
*
* @see https://www.typescriptlang.org/docs/handbook/declaration-merging.html#module-augmentation
*/
export interface CoreEventsData {
[USER_DELEGATE_UPDATE_HANDLER_EVENT]: CoreUserUpdateHandlerData;
}
}
/**
* Interface that all user profile handlers must implement.
*/
@ -168,6 +181,11 @@ export interface CoreUserProfileHandlerToDisplay {
type: string;
}
/**
* Delegate update handler event.
*/
export const USER_DELEGATE_UPDATE_HANDLER_EVENT = 'CoreUserDelegate_update_handler_event';
/**
* Service to interact with plugins to be shown in user profile. Provides functions to register a plugin
* and notify an update in the data.
@ -188,11 +206,6 @@ export class CoreUserDelegateService extends CoreDelegate<CoreUserProfileHandler
*/
static readonly TYPE_ACTION = 'action';
/**
* Update handler information event.
*/
static readonly UPDATE_HANDLER_EVENT = 'CoreUserDelegate_update_handler_event';
/**
* Cache object that checks enabled for use.
*/
@ -206,7 +219,7 @@ export class CoreUserDelegateService extends CoreDelegate<CoreUserProfileHandler
constructor() {
super('CoreUserDelegate', true);
CoreEvents.on(CoreUserDelegateService.UPDATE_HANDLER_EVENT, (data) => {
CoreEvents.on(USER_DELEGATE_UPDATE_HANDLER_EVENT, (data) => {
const handlersData = this.getHandlersData(data.userId, data.context, data.contextId);
// Search the handler.
@ -225,7 +238,7 @@ export class CoreUserDelegateService extends CoreDelegate<CoreUserProfileHandler
this.clearHandlerCache();
});
CoreEvents.on(CoreUserProvider.PROFILE_REFRESHED, (data) => {
CoreEvents.on(USER_PROFILE_REFRESHED, (data) => {
const context = data.courseId ? CoreUserDelegateContext.COURSE : CoreUserDelegateContext.SITE;
this.clearHandlerCache(data.userId, context, data.courseId);
});

View File

@ -27,7 +27,6 @@ import { CoreStatusWithWarningsWSResponse, CoreWSExternalWarning } from '@servic
import { CoreError } from '@classes/errors/error';
import { USERS_TABLE_NAME, CoreUserDBRecord } from './database/user';
import { CorePushNotifications } from '@features/pushnotifications/services/pushnotifications';
import { CoreUserDelegateService, CoreUserUpdateHandlerData } from './user-delegate';
const ROOT_CACHE_KEY = 'mmUser:';
@ -39,13 +38,22 @@ declare module '@singletons/events' {
* @see https://www.typescriptlang.org/docs/handbook/declaration-merging.html#module-augmentation
*/
export interface CoreEventsData {
[CoreUserProvider.PROFILE_REFRESHED]: CoreUserProfileRefreshedData;
[CoreUserProvider.PROFILE_PICTURE_UPDATED]: CoreUserProfilePictureUpdatedData;
[CoreUserDelegateService.UPDATE_HANDLER_EVENT]: CoreUserUpdateHandlerData;
[USER_PROFILE_REFRESHED]: CoreUserProfileRefreshedData;
[USER_PROFILE_PICTURE_UPDATED]: CoreUserProfilePictureUpdatedData;
}
}
/**
* Profile picture updated event.
*/
export const USER_PROFILE_REFRESHED = 'CoreUserProfileRefreshed';
/**
* Profile picture updated event.
*/
export const USER_PROFILE_PICTURE_UPDATED = 'CoreUserProfilePictureUpdated';
/**
* Service to provide user functionalities.
*/
@ -53,8 +61,6 @@ declare module '@singletons/events' {
export class CoreUserProvider {
static readonly PARTICIPANTS_LIST_LIMIT = 50; // Max of participants to retrieve in each WS call.
static readonly PROFILE_REFRESHED = 'CoreUserProfileRefreshed';
static readonly PROFILE_PICTURE_UPDATED = 'CoreUserProfilePictureUpdated';
protected logger: CoreLogger;
@ -841,20 +847,6 @@ export class CoreUserProvider {
}
export const CoreUser = makeSingleton(CoreUserProvider);
declare module '@singletons/events' {
/**
* Augment CoreEventsData interface with events specific to this service.
*
* @see https://www.typescriptlang.org/docs/handbook/declaration-merging.html#module-augmentation
*/
export interface CoreEventsData {
[CoreUserProvider.PROFILE_REFRESHED]: CoreUserProfileRefreshedData;
[CoreUserProvider.PROFILE_PICTURE_UPDATED]: CoreUserProfilePictureUpdatedData;
}
}
/**
* Data passed to PROFILE_REFRESHED event.
*/