MOBILE-4538 filters: Performance improvements on some delegates

main
Pau Ferrer Ocaña 2024-03-08 11:09:46 +01:00
parent 21b43d56df
commit 4fd1276817
2 changed files with 22 additions and 11 deletions

View File

@ -15,7 +15,7 @@
import { Injectable, ViewContainerRef } from '@angular/core'; import { Injectable, ViewContainerRef } from '@angular/core';
import { CoreSites } from '@services/sites'; import { CoreSites } from '@services/sites';
import { CoreFilterFilter, CoreFilterFormatTextOptions } from './filter'; import { CoreFilter, CoreFilterFilter, CoreFilterFormatTextOptions } from './filter';
import { CoreFilterDefaultHandler } from './handlers/default-filter'; import { CoreFilterDefaultHandler } from './handlers/default-filter';
import { CoreDelegate, CoreDelegateHandler } from '@classes/delegate'; import { CoreDelegate, CoreDelegateHandler } from '@classes/delegate';
import { CoreSite } from '@classes/sites/site'; import { CoreSite } from '@classes/sites/site';
@ -87,6 +87,13 @@ export class CoreFilterDelegateService extends CoreDelegate<CoreFilterHandler> {
super('CoreFilterDelegate'); super('CoreFilterDelegate');
} }
/**
* @inheritdoc
*/
async isEnabled(): Promise<boolean> {
return CoreFilter.canGetFiltersInSite();
}
/** /**
* Apply a list of filters to some content. * Apply a list of filters to some content.
* *
@ -106,7 +113,11 @@ export class CoreFilterDelegateService extends CoreDelegate<CoreFilterHandler> {
): Promise<string> { ): Promise<string> {
// Wait for filters to be initialized. // Wait for filters to be initialized.
await this.handlersInitPromise; const enabled = await this.handlersInitPromise;
if (!enabled) {
// No enabled filters, return the text.
return text;
}
const site = await CoreSites.getSite(siteId); const site = await CoreSites.getSite(siteId);
@ -189,7 +200,10 @@ export class CoreFilterDelegateService extends CoreDelegate<CoreFilterHandler> {
): Promise<void> { ): Promise<void> {
// Wait for filters to be initialized. // Wait for filters to be initialized.
await this.handlersInitPromise; const enabled = await this.handlersInitPromise;
if (!enabled) {
return;
}
const site = await CoreSites.getSite(siteId); const site = await CoreSites.getSite(siteId);
@ -258,15 +272,12 @@ export class CoreFilterDelegateService extends CoreDelegate<CoreFilterHandler> {
*/ */
async shouldBeApplied(filters: CoreFilterFilter[], options: CoreFilterFormatTextOptions, site?: CoreSite): Promise<boolean> { async shouldBeApplied(filters: CoreFilterFilter[], options: CoreFilterFormatTextOptions, site?: CoreSite): Promise<boolean> {
// Wait for filters to be initialized. // Wait for filters to be initialized.
await this.handlersInitPromise; const enabled = await this.handlersInitPromise;
if (!enabled) {
for (let i = 0; i < filters.length; i++) { return false;
if (this.shouldFilterBeApplied(filters[i], options, site)) {
return true;
}
} }
return false; return filters.some((filter) => this.shouldFilterBeApplied(filter, options, site));
} }
/** /**

View File

@ -80,7 +80,7 @@ export class CoreFilterProvider {
* @returns Promise resolved with boolean: whethe can get filters. * @returns Promise resolved with boolean: whethe can get filters.
*/ */
canGetFiltersInSite(site?: CoreSite): boolean { canGetFiltersInSite(site?: CoreSite): boolean {
return this.checkFiltersDisabledInSite(site); return !this.checkFiltersDisabledInSite(site);
} }
/** /**