MOBILE-4538 delegates: Add handlers promise enabled info and remove code

main
Pau Ferrer Ocaña 2024-03-08 14:38:28 +01:00
parent ebbfe039c0
commit 21b43d56df
22 changed files with 55 additions and 50 deletions

View File

@ -75,7 +75,7 @@ export class AddonMessageOutputDelegateService extends CoreDelegate<AddonMessage
protected handlerNameProperty = 'processorName'; protected handlerNameProperty = 'processorName';
constructor() { constructor() {
super('AddonMessageOutputDelegate', true); super('AddonMessageOutputDelegate');
} }
/** /**

View File

@ -185,7 +185,7 @@ export class AddonModAssignFeedbackDelegateService extends CoreDelegate<AddonMod
constructor( constructor(
protected defaultHandler: AddonModAssignDefaultFeedbackHandler, protected defaultHandler: AddonModAssignDefaultFeedbackHandler,
) { ) {
super('AddonModAssignFeedbackDelegate', true); super('AddonModAssignFeedbackDelegate');
} }
/** /**

View File

@ -277,7 +277,7 @@ export class AddonModAssignSubmissionDelegateService extends CoreDelegate<AddonM
constructor( constructor(
protected defaultHandler: AddonModAssignDefaultSubmissionHandler, protected defaultHandler: AddonModAssignDefaultSubmissionHandler,
) { ) {
super('AddonModAssignSubmissionDelegate', true); super('AddonModAssignSubmissionDelegate');
} }
/** /**

View File

@ -132,7 +132,7 @@ export class AddonModDataFieldsDelegateService extends CoreDelegate<AddonModData
constructor( constructor(
protected defaultHandler: AddonModDataDefaultFieldHandler, protected defaultHandler: AddonModDataDefaultFieldHandler,
) { ) {
super('AddonModDataFieldsDelegate', true); super('AddonModDataFieldsDelegate');
} }
/** /**

View File

@ -128,7 +128,7 @@ export class AddonModQuizAccessRuleDelegateService extends CoreDelegate<AddonMod
protected handlerNameProperty = 'ruleName'; protected handlerNameProperty = 'ruleName';
constructor() { constructor() {
super('AddonModQuizAccessRulesDelegate', true); super('AddonModQuizAccessRulesDelegate');
} }
/** /**

View File

@ -83,7 +83,7 @@ export class AddonWorkshopAssessmentStrategyDelegateService extends CoreDelegate
protected handlerNameProperty = 'strategyName'; protected handlerNameProperty = 'strategyName';
constructor() { constructor() {
super('AddonWorkshopAssessmentStrategyDelegate', true); super('AddonWorkshopAssessmentStrategyDelegate');
} }
/** /**

View File

@ -34,7 +34,7 @@ export class CoreSortedDelegate<
* @inheritdoc * @inheritdoc
*/ */
constructor(delegateName: string) { constructor(delegateName: string) {
super(delegateName, true); super(delegateName);
CoreEvents.on(CoreEvents.LOGOUT, () => this.clearSortedHandlers()); CoreEvents.on(CoreEvents.LOGOUT, () => this.clearSortedHandlers());
CoreEvents.on(CoreEvents.SITE_POLICY_AGREED, (data) => { CoreEvents.on(CoreEvents.SITE_POLICY_AGREED, (data) => {

View File

@ -72,43 +72,42 @@ export class CoreDelegate<HandlerType extends CoreDelegateHandler> {
/** /**
* Promise to wait for handlers to be initialized. * Promise to wait for handlers to be initialized.
*
* @returns Promise resolved when handlers are enabled.
*/ */
protected handlersInitPromise: Promise<void>; protected handlersInitPromise: Promise<boolean>;
/** /**
* Function to resolve the handlers init promise. * Function to resolve the handlers init promise.
*/ */
protected handlersInitResolve!: () => void; protected handlersInitResolve!: (enabled: boolean) => void;
/** /**
* Constructor of the Delegate. * Constructor of the Delegate.
* *
* @param delegateName Delegate name used for logging purposes. * @param delegateName Delegate name used for logging purposes.
* @param listenSiteEvents Whether to update the handler when a site event occurs (login, site updated, ...).
*/ */
constructor(delegateName: string, listenSiteEvents: boolean = true) { constructor(delegateName: string) {
this.logger = CoreLogger.getInstance(delegateName); this.logger = CoreLogger.getInstance(delegateName);
this.handlersInitPromise = new Promise((resolve): void => { this.handlersInitPromise = new Promise((resolve): void => {
this.handlersInitResolve = resolve; this.handlersInitResolve = resolve;
}); });
if (listenSiteEvents) { // Update handlers on this cases.
// Update handlers on this cases. CoreEvents.on(CoreEvents.LOGIN, () => this.updateHandlers());
CoreEvents.on(CoreEvents.LOGIN, () => this.updateHandlers()); CoreEvents.on(CoreEvents.SITE_UPDATED, () => this.updateHandlers());
CoreEvents.on(CoreEvents.SITE_UPDATED, () => this.updateHandlers()); CoreEvents.on(CoreEvents.SITE_PLUGINS_LOADED, () => this.updateHandlers());
CoreEvents.on(CoreEvents.SITE_PLUGINS_LOADED, () => this.updateHandlers()); CoreEvents.on(CoreEvents.SITE_POLICY_AGREED, (data) => {
CoreEvents.on(CoreEvents.SITE_POLICY_AGREED, (data) => { if (data.siteId === CoreSites.getCurrentSiteId()) {
if (data.siteId === CoreSites.getCurrentSiteId()) { this.updateHandlers();
this.updateHandlers(); }
} });
}); CoreEvents.on(CoreEvents.COMPLETE_REQUIRED_PROFILE_DATA_FINISHED, (data) => {
CoreEvents.on(CoreEvents.COMPLETE_REQUIRED_PROFILE_DATA_FINISHED, (data) => { if (data.siteId === CoreSites.getCurrentSiteId()) {
if (data.siteId === CoreSites.getCurrentSiteId()) { this.updateHandlers();
this.updateHandlers(); }
} });
});
}
} }
/** /**
@ -286,16 +285,18 @@ export class CoreDelegate<HandlerType extends CoreDelegateHandler> {
} }
// Checks if the handler is enabled. // Checks if the handler is enabled.
this.updatePromises[siteId][handler.name] = promise.then((enabled: boolean) => { this.updatePromises[siteId][handler.name] = promise.then((enabled) => {
// Check that site hasn't changed since the check started. // Check that site hasn't changed since the check started.
if (CoreSites.getCurrentSiteId() === siteId) { if (CoreSites.getCurrentSiteId() !== siteId) {
const key = handler[this.handlerNameProperty] || handler.name; return;
}
if (enabled) { const key = handler[this.handlerNameProperty] || handler.name;
this.enabledHandlers[key] = handler;
} else { if (enabled) {
delete this.enabledHandlers[key]; this.enabledHandlers[key] = handler;
} } else {
delete this.enabledHandlers[key];
} }
return; return;
@ -327,6 +328,10 @@ export class CoreDelegate<HandlerType extends CoreDelegateHandler> {
const enabled = await this.isEnabled(); const enabled = await this.isEnabled();
if (!enabled) { if (!enabled) {
this.logger.debug('Delegate not enabled.');
this.handlersInitResolve(false);
return; return;
} }
@ -351,7 +356,7 @@ export class CoreDelegate<HandlerType extends CoreDelegateHandler> {
// Verify that this call is the last one that was started. // Verify that this call is the last one that was started.
if (this.isLastUpdateCall(now)) { if (this.isLastUpdateCall(now)) {
this.handlersInitialized = true; this.handlersInitialized = true;
this.handlersInitResolve(); this.handlersInitResolve(true);
this.updateData(); this.updateData();
} }

View File

@ -104,7 +104,7 @@ export class CoreBlockDelegateService extends CoreDelegate<CoreBlockHandler> {
constructor( constructor(
protected defaultHandler: CoreBlockDefaultHandler, protected defaultHandler: CoreBlockDefaultHandler,
) { ) {
super('CoreBlockDelegate', true); super('CoreBlockDelegate');
this.blocksUpdateObservable = new Subject<void>(); this.blocksUpdateObservable = new Subject<void>();
} }

View File

@ -166,7 +166,7 @@ export class CoreCourseFormatDelegateService extends CoreDelegate<CoreCourseForm
protected handlerNameProperty = 'format'; protected handlerNameProperty = 'format';
constructor(protected defaultHandler: CoreCourseFormatDefaultHandler) { constructor(protected defaultHandler: CoreCourseFormatDefaultHandler) {
super('CoreCoursesCourseFormatDelegate', true); super('CoreCoursesCourseFormatDelegate');
} }
/** /**

View File

@ -286,7 +286,7 @@ export class CoreCourseModuleDelegateService extends CoreDelegate<CoreCourseModu
protected handlerNameProperty = 'modName'; protected handlerNameProperty = 'modName';
constructor(protected defaultHandler: CoreCourseModuleDefaultHandler) { constructor(protected defaultHandler: CoreCourseModuleDefaultHandler) {
super('CoreCourseModuleDelegate', true); super('CoreCourseModuleDelegate');
} }
/** /**

View File

@ -54,7 +54,7 @@ export class CoreCourseModulePrefetchDelegateService extends CoreDelegate<CoreCo
protected prefetchData: Record<string, Record<string, OngoingPrefetch>> = {}; protected prefetchData: Record<string, Record<string, OngoingPrefetch>> = {};
constructor() { constructor() {
super('CoreCourseModulePrefetchDelegate', true); super('CoreCourseModulePrefetchDelegate');
} }
/** /**

View File

@ -129,7 +129,7 @@ export class CoreEnrolDelegateService extends CoreDelegate<CoreEnrolHandler> {
protected featurePrefix = 'CoreEnrolDelegate_'; protected featurePrefix = 'CoreEnrolDelegate_';
constructor() { constructor() {
super('CoreEnrolDelegate', true); super('CoreEnrolDelegate');
} }
/** /**

View File

@ -143,7 +143,7 @@ export interface CoreFileUploaderHandlerDataToReturn extends CoreFileUploaderHan
export class CoreFileUploaderDelegateService extends CoreDelegate<CoreFileUploaderHandler> { export class CoreFileUploaderDelegateService extends CoreDelegate<CoreFileUploaderHandler> {
constructor() { constructor() {
super('CoreFileUploaderDelegate', true); super('CoreFileUploaderDelegate');
CoreEvents.on(CoreEvents.LOGOUT, () => this.clearSiteHandlers()); CoreEvents.on(CoreEvents.LOGOUT, () => this.clearSiteHandlers());
} }

View File

@ -84,7 +84,7 @@ export class CoreFilterDelegateService extends CoreDelegate<CoreFilterHandler> {
protected handlerNameProperty = 'filterName'; protected handlerNameProperty = 'filterName';
constructor(protected defaultHandler: CoreFilterDefaultHandler) { constructor(protected defaultHandler: CoreFilterDefaultHandler) {
super('CoreFilterDelegate', true); super('CoreFilterDelegate');
} }
/** /**

View File

@ -68,7 +68,7 @@ export class CoreQuestionBehaviourDelegateService extends CoreDelegate<CoreQuest
protected handlerNameProperty = 'type'; protected handlerNameProperty = 'type';
constructor(protected defaultHandler: CoreQuestionBehaviourDefaultHandler) { constructor(protected defaultHandler: CoreQuestionBehaviourDefaultHandler) {
super('CoreQuestionBehaviourDelegate', true); super('CoreQuestionBehaviourDelegate');
} }
/** /**

View File

@ -217,7 +217,7 @@ export class CoreQuestionDelegateService extends CoreDelegate<CoreQuestionHandle
protected handlerNameProperty = 'type'; protected handlerNameProperty = 'type';
constructor(protected defaultHandler: CoreQuestionDefaultHandler) { constructor(protected defaultHandler: CoreQuestionDefaultHandler) {
super('CoreQuestionDelegate', true); super('CoreQuestionDelegate');
} }
/** /**

View File

@ -51,7 +51,7 @@ export class CoreTagAreaDelegateService extends CoreDelegate<CoreTagAreaHandler>
protected handlerNameProperty = 'type'; protected handlerNameProperty = 'type';
constructor() { constructor() {
super('CoreTagAreaDelegate', true); super('CoreTagAreaDelegate');
} }
/** /**

View File

@ -229,7 +229,7 @@ export class CoreUserDelegateService extends CoreDelegate<CoreUserProfileHandler
protected userHandlers: Record<number, Record<string, CoreUserDelegateHandlersData>> = {}; protected userHandlers: Record<number, Record<string, CoreUserDelegateHandlersData>> = {};
constructor() { constructor() {
super('CoreUserDelegate', true); super('CoreUserDelegate');
CoreEvents.on(USER_DELEGATE_UPDATE_HANDLER_EVENT, (data) => { CoreEvents.on(USER_DELEGATE_UPDATE_HANDLER_EVENT, (data) => {
const handlersData = this.getHandlersData(data.userId, data.context, data.contextId); const handlersData = this.getHandlersData(data.userId, data.context, data.contextId);

View File

@ -80,7 +80,7 @@ export class CoreUserProfileFieldDelegateService extends CoreDelegate<CoreUserPr
protected handlerNameProperty = 'type'; protected handlerNameProperty = 'type';
constructor() { constructor() {
super('CoreUserProfileFieldDelegate', true); super('CoreUserProfileFieldDelegate');
} }
/** /**

View File

@ -30,7 +30,7 @@ import { CoreTextUtils } from '@services/utils/text';
export class CoreAnalyticsService extends CoreDelegate<CoreAnalyticsHandler> { export class CoreAnalyticsService extends CoreDelegate<CoreAnalyticsHandler> {
constructor() { constructor() {
super('CoreAnalyticsService', true); super('CoreAnalyticsService');
CoreEvents.on(CoreConfigProvider.ENVIRONMENT_UPDATED, () => this.updateHandlers()); CoreEvents.on(CoreConfigProvider.ENVIRONMENT_UPDATED, () => this.updateHandlers());
CoreEvents.on(CoreEvents.LOGOUT, () => this.clearSiteHandlers()); CoreEvents.on(CoreEvents.LOGOUT, () => this.clearSiteHandlers());

View File

@ -30,7 +30,7 @@ import { CoreFileHelper } from './file-helper';
export class CorePluginFileDelegateService extends CoreDelegate<CorePluginFileHandler> { export class CorePluginFileDelegateService extends CoreDelegate<CorePluginFileHandler> {
constructor() { constructor() {
super('CorePluginFileDelegate', true); super('CorePluginFileDelegate');
} }
/** /**