refactor(load-drafts): migrate to the new DI architecture

Bug: twpowertools:226
Change-Id: Ia85adb1af9440182323bebf4516bbd5ee3efbe4d
diff --git a/src/features/Features.ts b/src/features/Features.ts
index 2f38f34..7f2a061 100644
--- a/src/features/Features.ts
+++ b/src/features/Features.ts
@@ -2,14 +2,12 @@
 import ScriptFilterListProvider from '../common/architecture/scripts/ScriptFilterListProvider';
 import ExtraInfoFeature from './extraInfo/extraInfo.feature';
 import WorkflowsFeature from './workflows/workflows.feature';
-import LoadDraftsFeature from './loadDrafts/loadDrafts.feature';
 
 export type ConcreteFeatureClass = { new (): Feature };
 
 export default class Features extends ScriptFilterListProvider {
   private features: ConcreteFeatureClass[] = [
     ExtraInfoFeature,
-    LoadDraftsFeature,
     WorkflowsFeature,
   ];
   private initializedFeatures: Feature[];
diff --git a/src/features/loadDrafts/loadDrafts.feature.ts b/src/features/loadDrafts/loadDrafts.feature.ts
deleted file mode 100644
index 23f6873..0000000
--- a/src/features/loadDrafts/loadDrafts.feature.ts
+++ /dev/null
@@ -1,13 +0,0 @@
-import Feature from '../../common/architecture/features/Feature';
-import { ConcreteScript } from '../../common/architecture/scripts/Script';
-import { OptionCodename } from '../../common/options/optionsPrototype';
-import EnableLoadDraftsFlagInDataStartupScript from './scripts/setThreadPageInDataStartupScript.script';
-
-export default class LoadDraftsFeature extends Feature {
-  public readonly scripts: ConcreteScript[] = [
-    EnableLoadDraftsFlagInDataStartupScript,
-  ];
-
-  readonly codename = 'loadDrafts';
-  readonly relatedOptions: OptionCodename[] = ['loaddrafts'];
-}
diff --git a/src/features/loadDrafts/presentation/scripts/setup.script.ts b/src/features/loadDrafts/presentation/scripts/setup.script.ts
new file mode 100644
index 0000000..9195ebd
--- /dev/null
+++ b/src/features/loadDrafts/presentation/scripts/setup.script.ts
@@ -0,0 +1,26 @@
+import Script from '../../../../common/architecture/scripts/Script';
+import { StartupDataStoragePort } from '../../../../services/communityConsole/StartupDataStorage.port';
+import { OptionsProviderPort } from '../../../../services/options/OptionsProvider';
+
+export default class LoadDraftsSetupScript extends Script {
+  page: never;
+  environment: never;
+  runPhase: never;
+
+  constructor(
+    private optionsProvider: OptionsProviderPort,
+    private startupDataStorage: StartupDataStoragePort,
+  ) {
+    super();
+  }
+
+  async execute() {
+    if (await this.optionsProvider.isEnabled('loaddrafts')) {
+      this.startupDataStorage.enqueueModification((startupDataModel) => {
+        startupDataModel.data[4][13] = true;
+      });
+      // NOTE: Workaround because otherwise the modifications would be applied too late.
+      this.startupDataStorage.applyModifications();
+    }
+  }
+}
diff --git a/src/features/loadDrafts/scripts/setThreadPageInDataStartupScript.script.ts b/src/features/loadDrafts/scripts/setThreadPageInDataStartupScript.script.ts
deleted file mode 100644
index 6319fb7..0000000
--- a/src/features/loadDrafts/scripts/setThreadPageInDataStartupScript.script.ts
+++ /dev/null
@@ -1,32 +0,0 @@
-import DependenciesProviderSingleton, {
-  OptionsProviderDependency,
-  StartupDataStorageDependency,
-} from '../../../common/architecture/dependenciesProvider/DependenciesProvider';
-import Script, {
-  ScriptEnvironment,
-  ScriptPage,
-  ScriptRunPhase,
-} from '../../../common/architecture/scripts/Script';
-
-export default class EnableLoadDraftsFlagInDataStartupScript extends Script {
-  page = ScriptPage.CommunityConsole;
-  environment = ScriptEnvironment.ContentScript;
-  runPhase = ScriptRunPhase.Start;
-
-  async execute() {
-    const dependenciesProvider = DependenciesProviderSingleton.getInstance();
-    const optionsProvider = dependenciesProvider.getDependency(
-      OptionsProviderDependency,
-    );
-    if (await optionsProvider.isEnabled('loaddrafts')) {
-      const startupDataStorage = dependenciesProvider.getDependency(
-        StartupDataStorageDependency,
-      );
-      startupDataStorage.enqueueModification((startupDataModel) => {
-        startupDataModel.data[4][13] = true;
-      });
-      // NOTE: Workaround because otherwise the modifications would be applied too late.
-      startupDataStorage.applyModifications();
-    }
-  }
-}