From ea63c5f78b4c985e9d6dd106afe4f97bfeedbcd0 Mon Sep 17 00:00:00 2001 From: Shin'ya Ueoka Date: Sat, 28 Mar 2020 21:35:06 +0900 Subject: Complete tabs by the completion packages --- src/background/completion/OpenCompletionUseCase.ts | 59 ++++++++++++++++++++++ 1 file changed, 59 insertions(+) create mode 100644 src/background/completion/OpenCompletionUseCase.ts (limited to 'src/background/completion/OpenCompletionUseCase.ts') diff --git a/src/background/completion/OpenCompletionUseCase.ts b/src/background/completion/OpenCompletionUseCase.ts new file mode 100644 index 0000000..1b63e7c --- /dev/null +++ b/src/background/completion/OpenCompletionUseCase.ts @@ -0,0 +1,59 @@ +import { inject, injectable } from "tsyringe"; +import CachedSettingRepository from "../repositories/CachedSettingRepository"; +import CompletionType from "../../shared/CompletionType"; +import BookmarkRepository from "./BookmarkRepository"; +import HistoryRepository from "./HistoryRepository"; + +export type BookmarkItem = { + title: string + url: string +} + +export type HistoryItem = { + title: string + url: string +} + +@injectable() +export default class OpenCompletionUseCase { + constructor( + @inject('BookmarkRepository') private bookmarkRepository: BookmarkRepository, + @inject('HistoryRepository') private historyRepository: HistoryRepository, + @inject("CachedSettingRepository") private cachedSettingRepository: CachedSettingRepository, + ) { + } + + async getCompletionTypes(): Promise { + const settings = await this.cachedSettingRepository.get(); + const types: CompletionType[] = []; + for (const c of settings.properties.complete) { + switch (c) { + case 's': + types.push(CompletionType.SearchEngines); + break; + case 'h': + types.push(CompletionType.History); + break; + case 'b': + types.push(CompletionType.Bookmarks); + break; + } + // ignore invalid characters in the complete property + } + return types; + } + + async requestSearchEngines(query: string): Promise { + const settings = await this.cachedSettingRepository.get(); + return Object.keys(settings.search.engines) + .filter(key => key.startsWith(query)) + } + + requestBookmarks(query: string): Promise { + return this.bookmarkRepository.queryBookmarks(query); + } + + requestHistory(query: string): Promise { + return this.historyRepository.queryHistories(query); + } +} \ No newline at end of file -- cgit v1.2.3