blob: bf4d83cefbc4d5f1e57605f5798bf02c81762250 [file] [log] [blame]
Adrià Vilanova Martínez18d03c42024-04-21 16:43:01 +02001import Feature from '../common/architecture/features/Feature';
Adrià Vilanova Martínez58cc67c2024-04-21 16:43:01 +02002import AutoRefreshFeature from './autoRefresh/autoRefresh.feature';
Adrià Vilanova Martínez18d03c42024-04-21 16:43:01 +02003import InfiniteScrollFeature from './infiniteScroll/infiniteScroll.feature';
Adrià Vilanova Martínez2ba5d8d2024-05-04 21:17:16 +02004import ScriptFilterListProvider from '../common/architecture/scripts/ScriptFilterListProvider';
Adrià Vilanova Martínez66836fd2024-05-04 22:43:06 +02005import ExtraInfoFeature from './extraInfo/extraInfo.feature';
Adrià Vilanova Martínezc78c3ad2024-05-18 00:35:51 +02006import WorkflowsFeature from './workflows/workflows.feature';
Adrià Vilanova Martínez917797e2024-05-25 22:41:25 +02007import CCDarkThemeFeature from './ccDarkTheme/ccDarkTheme.feature';
Adrià Vilanova Martínezf4cbb6b2024-05-26 01:19:01 +02008import FixCCSlownessFeature from './fixCCSlowness/fixCCSlowness.feature';
Adrià Vilanova Martínez18d03c42024-04-21 16:43:01 +02009
10export type ConcreteFeatureClass = { new (): Feature };
11
Adrià Vilanova Martínez2ba5d8d2024-05-04 21:17:16 +020012export default class Features extends ScriptFilterListProvider {
Adrià Vilanova Martínez58cc67c2024-04-21 16:43:01 +020013 private features: ConcreteFeatureClass[] = [
14 AutoRefreshFeature,
Adrià Vilanova Martínez917797e2024-05-25 22:41:25 +020015 CCDarkThemeFeature,
Adrià Vilanova Martínez66836fd2024-05-04 22:43:06 +020016 ExtraInfoFeature,
Adrià Vilanova Martínezf4cbb6b2024-05-26 01:19:01 +020017 FixCCSlownessFeature,
Adrià Vilanova Martínez58cc67c2024-04-21 16:43:01 +020018 InfiniteScrollFeature,
Adrià Vilanova Martínezc78c3ad2024-05-18 00:35:51 +020019 WorkflowsFeature,
Adrià Vilanova Martínez58cc67c2024-04-21 16:43:01 +020020 ];
Adrià Vilanova Martínez18d03c42024-04-21 16:43:01 +020021 private initializedFeatures: Feature[];
22
Adrià Vilanova Martínez2ba5d8d2024-05-04 21:17:16 +020023 protected getUnfilteredScriptsList() {
Adrià Vilanova Martínez18d03c42024-04-21 16:43:01 +020024 const features = this.getFeatures();
Adrià Vilanova Martínez2ba5d8d2024-05-04 21:17:16 +020025 return features.map((feature) => feature.getScripts()).flat(1);
Adrià Vilanova Martínez18d03c42024-04-21 16:43:01 +020026 }
27
28 private getFeatures() {
29 if (this.initializedFeatures === undefined) {
30 this.initializedFeatures = this.features.map((feature) => new feature());
31 }
32 return this.initializedFeatures;
33 }
34}