diff options
Diffstat (limited to 'src/content')
-rw-r--r-- | src/content/di.ts | 2 | ||||
-rw-r--r-- | src/content/operators/impls/ClipboardOperatorFactoryChain.ts | 8 | ||||
-rw-r--r-- | src/content/operators/impls/FindNextOperator.ts | 9 | ||||
-rw-r--r-- | src/content/operators/impls/FindOperatorFactoryChain.ts | 11 | ||||
-rw-r--r-- | src/content/operators/impls/FindPrevOperator.ts | 9 | ||||
-rw-r--r-- | src/content/operators/impls/RepeatOperator.ts | 14 | ||||
-rw-r--r-- | src/content/operators/impls/URLRepository.ts | 9 | ||||
-rw-r--r-- | src/content/operators/impls/YankURLOperator.ts | 6 |
8 files changed, 37 insertions, 31 deletions
diff --git a/src/content/di.ts b/src/content/di.ts index b39ce54..e74d7ac 100644 --- a/src/content/di.ts +++ b/src/content/di.ts @@ -30,6 +30,7 @@ import { SettingRepositoryImpl } from "./repositories/SettingRepository"; import { TabsClientImpl } from "./client/TabsClient"; import { container } from "tsyringe"; import OperatorFactoryImpl from "./operators/impls/OperatorFactoryImpl"; +import { URLRepositoryImpl } from "./operators/impls/URLRepository"; container.register("FollowMasterClient", { useValue: new FollowMasterClientImpl(window.top), @@ -80,5 +81,6 @@ container.register("OperationClient", { useClass: OperationClientImpl }); container.register("ScrollPresenter", { useClass: ScrollPresenterImpl }); container.register("SettingClient", { useClass: SettingClientImpl }); container.register("SettingRepository", { useClass: SettingRepositoryImpl }); +container.register("URLRepository", { useClass: URLRepositoryImpl }); container.register("TabsClient", { useClass: TabsClientImpl }); container.register("OperatorFactory", { useClass: OperatorFactoryImpl }); diff --git a/src/content/operators/impls/ClipboardOperatorFactoryChain.ts b/src/content/operators/impls/ClipboardOperatorFactoryChain.ts index fb12ae8..454aea1 100644 --- a/src/content/operators/impls/ClipboardOperatorFactoryChain.ts +++ b/src/content/operators/impls/ClipboardOperatorFactoryChain.ts @@ -8,6 +8,7 @@ import ConsoleClient from "../../client/ConsoleClient"; import OperationClient from "../../client/OperationClient"; import SettingRepository from "../../repositories/SettingRepository"; import * as operations from "../../../shared/operations"; +import URLRepository from "./URLRepository"; @injectable() export default class ClipboardOperatorFactoryChain @@ -20,7 +21,9 @@ export default class ClipboardOperatorFactoryChain @inject("OperationClient") private readonly operationClinet: OperationClient, @inject("SettingRepository") - private readonly settingRepository: SettingRepository + private readonly settingRepository: SettingRepository, + @inject("URLRepository") + private readonly urlRepository: URLRepository ) {} create(op: operations.Operation, _repeat: number): Operator | null { @@ -28,7 +31,8 @@ export default class ClipboardOperatorFactoryChain case operations.URLS_YANK: return new YankURLOperator( this.clipboardRepository, - this.consoleClient + this.consoleClient, + this.urlRepository ); case operations.URLS_PASTE: return new PasteOperator( diff --git a/src/content/operators/impls/FindNextOperator.ts b/src/content/operators/impls/FindNextOperator.ts index 723db3d..c67f6d9 100644 --- a/src/content/operators/impls/FindNextOperator.ts +++ b/src/content/operators/impls/FindNextOperator.ts @@ -2,9 +2,14 @@ import Operator from "../Operator"; import FindMasterClient from "../../client/FindMasterClient"; export default class FindNextOperator implements Operator { - constructor(private readonly findMasterClient: FindMasterClient) {} + constructor( + private readonly findMasterClient: FindMasterClient, + private readonly repeat: number + ) {} async run(): Promise<void> { - this.findMasterClient.findNext(); + for (let i = 0; i < this.repeat; ++i) { + this.findMasterClient.findNext(); + } } } diff --git a/src/content/operators/impls/FindOperatorFactoryChain.ts b/src/content/operators/impls/FindOperatorFactoryChain.ts index ef1c754..b3524c1 100644 --- a/src/content/operators/impls/FindOperatorFactoryChain.ts +++ b/src/content/operators/impls/FindOperatorFactoryChain.ts @@ -1,7 +1,6 @@ import { inject, injectable } from "tsyringe"; import Operator from "../Operator"; import OperatorFactoryChain from "../OperatorFactoryChain"; -import RepeatOperator from "./RepeatOperator"; import FindNextOperator from "./FindNextOperator"; import FindPrevOperator from "./FindPrevOperator"; import FindMasterClient from "../../client/FindMasterClient"; @@ -17,15 +16,9 @@ export default class FindOperatorFactoryChain implements OperatorFactoryChain { create(op: operations.Operation, repeat: number): Operator | null { switch (op.type) { case operations.FIND_NEXT: - return new RepeatOperator( - new FindNextOperator(this.findMasterClient), - repeat - ); + return new FindNextOperator(this.findMasterClient, repeat); case operations.FIND_PREV: - return new RepeatOperator( - new FindPrevOperator(this.findMasterClient), - repeat - ); + return new FindPrevOperator(this.findMasterClient, repeat); } return null; } diff --git a/src/content/operators/impls/FindPrevOperator.ts b/src/content/operators/impls/FindPrevOperator.ts index be6a01e..f73e605 100644 --- a/src/content/operators/impls/FindPrevOperator.ts +++ b/src/content/operators/impls/FindPrevOperator.ts @@ -2,9 +2,14 @@ import Operator from "../Operator"; import FindMasterClient from "../../client/FindMasterClient"; export default class FindPrevOperator implements Operator { - constructor(private readonly findMasterClient: FindMasterClient) {} + constructor( + private readonly findMasterClient: FindMasterClient, + private readonly repeat: number + ) {} async run(): Promise<void> { - this.findMasterClient.findPrev(); + for (let i = 0; i < this.repeat; ++i) { + this.findMasterClient.findPrev(); + } } } diff --git a/src/content/operators/impls/RepeatOperator.ts b/src/content/operators/impls/RepeatOperator.ts deleted file mode 100644 index efe2faf..0000000 --- a/src/content/operators/impls/RepeatOperator.ts +++ /dev/null @@ -1,14 +0,0 @@ -import Operator from "../Operator"; - -export default class RepeatOperator implements Operator { - constructor( - private readonly operator: Operator, - private readonly repeat: number - ) {} - - async run(): Promise<void> { - for (let i = 0; i < this.repeat; ++i) { - this.operator.run(); - } - } -} diff --git a/src/content/operators/impls/URLRepository.ts b/src/content/operators/impls/URLRepository.ts new file mode 100644 index 0000000..a1efc2e --- /dev/null +++ b/src/content/operators/impls/URLRepository.ts @@ -0,0 +1,9 @@ +export default interface URLRepository { + getCurrentURL(): string; +} + +export class URLRepositoryImpl implements URLRepository { + getCurrentURL(): string { + return window.location.href; + } +} diff --git a/src/content/operators/impls/YankURLOperator.ts b/src/content/operators/impls/YankURLOperator.ts index 5e2ac60..2e774eb 100644 --- a/src/content/operators/impls/YankURLOperator.ts +++ b/src/content/operators/impls/YankURLOperator.ts @@ -1,15 +1,17 @@ import Operator from "../Operator"; import ClipboardRepository from "../../repositories/ClipboardRepository"; import ConsoleClient from "../../client/ConsoleClient"; +import URLRepository from "./URLRepository"; export default class YankURLOperator implements Operator { constructor( private readonly repository: ClipboardRepository, - private readonly consoleClient: ConsoleClient + private readonly consoleClient: ConsoleClient, + private readonly urlRepository: URLRepository ) {} async run(): Promise<void> { - const url = window.location.href; + const url = this.urlRepository.getCurrentURL(); this.repository.write(url); await this.consoleClient.info("Yanked " + url); } |