import Operator from "../Operator"; import ClipboardRepository from "../../repositories/ClipboardRepository"; import SettingRepository from "../../repositories/SettingRepository"; import OperationClient from "../../client/OperationClient"; import * as urls from "../../../shared/urls"; export default class PasteOperator implements Operator { constructor( private readonly repository: ClipboardRepository, private readonly settingRepository: SettingRepository, private readonly operationClient: OperationClient, private readonly newTab: boolean ) {} async run(): Promise { const search = this.settingRepository.get().search; const text = this.repository.read(); const url = urls.searchUrl(text, search); // NOTE: Repeat pasting from clipboard instead of opening a certain url. // 'Repeat last' command is implemented in the background script and cannot // access to clipboard until Firefox 63. await this.operationClient.internalOpenUrl(url, this.newTab); } }