refactor(infinite-scroll): migrate to the new DI architecture
Bug: twpowertools:226
Change-Id: I5f4156204327cc66e976821134cef667d57f7233
diff --git a/src/features/infiniteScroll/infiniteScroll.feature.ts b/src/features/infiniteScroll/infiniteScroll.feature.ts
deleted file mode 100644
index b6dee6a..0000000
--- a/src/features/infiniteScroll/infiniteScroll.feature.ts
+++ /dev/null
@@ -1,11 +0,0 @@
-import Feature from '../../common/architecture/features/Feature';
-import { ConcreteScript } from '../../common/architecture/scripts/Script';
-import { OptionCodename } from '../../common/options/optionsPrototype';
-import CCInfiniteScrollScript from './scripts/ccInfiniteScroll.script';
-
-export default class InfiniteScrollFeature extends Feature {
- public readonly scripts: ConcreteScript[] = [CCInfiniteScrollScript];
-
- readonly codename = 'infiniteScroll';
- readonly relatedOptions: OptionCodename[] = ['list', 'thread', 'threadall'];
-}
diff --git a/src/features/infiniteScroll/nodeWatcherHandlers/ccInfiniteScrollLoadMoreBar.handler.ts b/src/features/infiniteScroll/nodeWatcherHandlers/ccInfiniteScrollLoadMoreBar.handler.ts
index 5c2d308..d1068e3 100644
--- a/src/features/infiniteScroll/nodeWatcherHandlers/ccInfiniteScrollLoadMoreBar.handler.ts
+++ b/src/features/infiniteScroll/nodeWatcherHandlers/ccInfiniteScrollLoadMoreBar.handler.ts
@@ -1,10 +1,14 @@
import { NodeMutation } from '../../../presentation/nodeWatcher/NodeWatcherHandler';
-import CssSelectorNodeWatcherScriptHandler from '../../../common/architecture/scripts/nodeWatcher/handlers/CssSelectorNodeWatcherScriptHandler';
-import { InfiniteScrollNodeWatcherOptions } from '../scripts/ccInfiniteScroll.script';
+import CCInfiniteScroll from '../core/ccInfiniteScroll';
+import CssSelectorNodeWatcherHandler from '../../../infrastructure/presentation/nodeWatcher/handlers/CssSelectorHandler.adapter';
-export default class CCInfiniteScrollLoadMoreBarHandler extends CssSelectorNodeWatcherScriptHandler<InfiniteScrollNodeWatcherOptions> {
+export default class CCInfiniteScrollLoadMoreBarHandler extends CssSelectorNodeWatcherHandler {
cssSelector = '.load-more-bar';
+ constructor(private ccInfiniteScroll: CCInfiniteScroll) {
+ super();
+ }
+
onMutatedNode({ node }: NodeMutation) {
if (!(node instanceof Element)) {
console.error(
@@ -13,6 +17,6 @@
);
return;
}
- this.options.ccInfiniteScroll.observeLoadMoreBar(node);
+ this.ccInfiniteScroll.observeLoadMoreBar(node);
}
}
diff --git a/src/features/infiniteScroll/nodeWatcherHandlers/ccInfiniteScrollLoadMoreBtn.handler.ts b/src/features/infiniteScroll/nodeWatcherHandlers/ccInfiniteScrollLoadMoreBtn.handler.ts
index 1ab8644..0dd8db6 100644
--- a/src/features/infiniteScroll/nodeWatcherHandlers/ccInfiniteScrollLoadMoreBtn.handler.ts
+++ b/src/features/infiniteScroll/nodeWatcherHandlers/ccInfiniteScrollLoadMoreBtn.handler.ts
@@ -1,11 +1,15 @@
import { NodeMutation } from '../../../presentation/nodeWatcher/NodeWatcherHandler';
-import CssSelectorNodeWatcherScriptHandler from '../../../common/architecture/scripts/nodeWatcher/handlers/CssSelectorNodeWatcherScriptHandler';
-import { InfiniteScrollNodeWatcherOptions } from '../scripts/ccInfiniteScroll.script';
+import CssSelectorNodeWatcherHandler from '../../../infrastructure/presentation/nodeWatcher/handlers/CssSelectorHandler.adapter';
+import CCInfiniteScroll from '../core/ccInfiniteScroll';
-export default class CCInfiniteScrollLoadMoreBtnHandler extends CssSelectorNodeWatcherScriptHandler<InfiniteScrollNodeWatcherOptions> {
+export default class CCInfiniteScrollLoadMoreBtnHandler extends CssSelectorNodeWatcherHandler {
cssSelector =
'.scTailwindThreadMorebuttonbutton, .scTailwindThreadMessagegapbutton';
+ constructor(private ccInfiniteScroll: CCInfiniteScroll) {
+ super();
+ }
+
onMutatedNode({ node }: NodeMutation) {
if (!(node instanceof Element)) {
console.error(
@@ -14,6 +18,6 @@
);
return;
}
- this.options.ccInfiniteScroll.observeLoadMoreInteropBtn(node);
+ this.ccInfiniteScroll.observeLoadMoreInteropBtn(node);
}
}
diff --git a/src/features/infiniteScroll/nodeWatcherHandlers/ccInfiniteScrollSetUp.handler.ts b/src/features/infiniteScroll/nodeWatcherHandlers/ccInfiniteScrollSetUp.handler.ts
index b36e0b9..0d77cf7 100644
--- a/src/features/infiniteScroll/nodeWatcherHandlers/ccInfiniteScrollSetUp.handler.ts
+++ b/src/features/infiniteScroll/nodeWatcherHandlers/ccInfiniteScrollSetUp.handler.ts
@@ -1,16 +1,17 @@
import { NodeMutation } from '../../../presentation/nodeWatcher/NodeWatcherHandler';
-import CssSelectorNodeWatcherScriptHandler from '../../../common/architecture/scripts/nodeWatcher/handlers/CssSelectorNodeWatcherScriptHandler';
-import { InfiniteScrollNodeWatcherOptions } from '../scripts/ccInfiniteScroll.script';
+import CssSelectorNodeWatcherHandler from '../../../infrastructure/presentation/nodeWatcher/handlers/CssSelectorHandler.adapter';
+import CCInfiniteScroll from '../core/ccInfiniteScroll';
-export default class CCInfiniteScrollSetUpHandler extends CssSelectorNodeWatcherScriptHandler<InfiniteScrollNodeWatcherOptions> {
+export default class CCInfiniteScrollSetUpHandler extends CssSelectorNodeWatcherHandler {
cssSelector = 'ec-app, .scrollable-content';
+ constructor(private ccInfiniteScroll: CCInfiniteScroll) {
+ super();
+ }
+
onMutatedNode({ node }: NodeMutation) {
if (!(node instanceof Element)) return;
const isScrollableContent = node.classList.contains('scrollable-content');
- this.options.ccInfiniteScroll.setUpIntersectionObserver(
- node,
- isScrollableContent,
- );
+ this.ccInfiniteScroll.setUpIntersectionObserver(node, isScrollableContent);
}
}
diff --git a/src/features/infiniteScroll/scripts/ccInfiniteScroll.script.ts b/src/features/infiniteScroll/scripts/ccInfiniteScroll.script.ts
deleted file mode 100644
index e12a7c4..0000000
--- a/src/features/infiniteScroll/scripts/ccInfiniteScroll.script.ts
+++ /dev/null
@@ -1,31 +0,0 @@
-import {
- ScriptEnvironment,
- ScriptPage,
- ScriptRunPhase,
-} from '../../../common/architecture/scripts/Script';
-import LegacyNodeWatcherScript from '../../../common/architecture/scripts/nodeWatcher/LegacyNodeWatcherScript';
-import CCInfiniteScroll from '../core/ccInfiniteScroll';
-import CCInfiniteScrollLoadMoreBarHandler from '../nodeWatcherHandlers/ccInfiniteScrollLoadMoreBar.handler';
-import CCInfiniteScrollLoadMoreBtnHandler from '../nodeWatcherHandlers/ccInfiniteScrollLoadMoreBtn.handler';
-import CCInfiniteScrollSetUpHandler from '../nodeWatcherHandlers/ccInfiniteScrollSetUp.handler';
-
-export interface InfiniteScrollNodeWatcherOptions {
- ccInfiniteScroll: CCInfiniteScroll;
-}
-
-export default class CCInfiniteScrollScript extends LegacyNodeWatcherScript<InfiniteScrollNodeWatcherOptions> {
- page = ScriptPage.CommunityConsole;
- environment = ScriptEnvironment.ContentScript;
- runPhase = ScriptRunPhase.Main;
- handlers = new Map([
- ['ccInfiniteScrollSetUp', CCInfiniteScrollSetUpHandler],
- ['ccInfiniteScrollLoadMoreBar', CCInfiniteScrollLoadMoreBarHandler],
- ['ccInfiniteScrollLoadMoreBtn', CCInfiniteScrollLoadMoreBtnHandler],
- ]);
-
- protected optionsFactory(): InfiniteScrollNodeWatcherOptions {
- return {
- ccInfiniteScroll: new CCInfiniteScroll(),
- };
- }
-}