diff --git a/src/core/features/filter/services/filter-delegate.ts b/src/core/features/filter/services/filter-delegate.ts index 9179bacc2..0db329b32 100644 --- a/src/core/features/filter/services/filter-delegate.ts +++ b/src/core/features/filter/services/filter-delegate.ts @@ -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 { super('CoreFilterDelegate'); } + /** + * @inheritdoc + */ + async isEnabled(): Promise { + return CoreFilter.canGetFiltersInSite(); + } + /** * Apply a list of filters to some content. * @@ -106,7 +113,11 @@ export class CoreFilterDelegateService extends CoreDelegate { ): Promise { // 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 { ): Promise { // 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 { */ async shouldBeApplied(filters: CoreFilterFilter[], options: CoreFilterFormatTextOptions, site?: CoreSite): Promise { // 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)); } /** diff --git a/src/core/features/filter/services/filter.ts b/src/core/features/filter/services/filter.ts index f82862f84..b2eb8c3ba 100644 --- a/src/core/features/filter/services/filter.ts +++ b/src/core/features/filter/services/filter.ts @@ -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); } /**