import { ConsoleGetCompletionTypesResponse, ConsoleGetPropertiesResponse, ConsoleRequestBookmarksResponse, ConsoleRequestHistoryResponse, ConsoleRequestSearchEnginesResponse, ConsoleRequestTabsResponse, } from "../../shared/messages"; import { injectable } from "tsyringe"; import OpenCompletionUseCase from "../completion/OpenCompletionUseCase"; import TabCompletionUseCase from "../completion/TabCompletionUseCase"; import PropertyCompletionUseCase from "../completion/PropertyCompletionUseCase"; @injectable() export default class CompletionController { constructor( private completionUseCase: OpenCompletionUseCase, private tabCompletionUseCase: TabCompletionUseCase, private propertyCompletionUseCase: PropertyCompletionUseCase ) {} async getCompletionTypes(): Promise { return this.completionUseCase.getCompletionTypes(); } async requestSearchEngines( query: string ): Promise { const items = await this.completionUseCase.requestSearchEngines(query); return items.map((name) => ({ title: name })); } async requestBookmarks( query: string ): Promise { return this.completionUseCase.requestBookmarks(query); } async requestHistory(query: string): Promise { return this.completionUseCase.requestHistory(query); } async queryTabs( query: string, excludePinned: boolean ): Promise { return this.tabCompletionUseCase.queryTabs(query, excludePinned); } async getProperties(): Promise { return this.propertyCompletionUseCase.getProperties(); } }