MOBILE-4538 filters: Performance improvements on some delegates
parent
21b43d56df
commit
4fd1276817
|
@ -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));
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
@ -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);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
Loading…
Reference in New Issue