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