From bf5d117a1c729f2852e5e1d8ae1253fd2d2519fe Mon Sep 17 00:00:00 2001 From: Alex Kozack Date: Wed, 19 May 2021 17:31:32 +0300 Subject: [PATCH] =?UTF-8?q?feat:=20=D0=A1=D0=BE=D1=85=D1=80=D0=B0=D0=BD?= =?UTF-8?q?=D0=B5=D0=BD=D0=B8=D0=B5=20=D0=BF=D1=80=D0=B5=D0=B4=D0=BF=D0=BE?= =?UTF-8?q?=D1=87=D0=B8=D1=82=D0=B0=D0=B5=D0=BC=D1=8B=D1=85=20=D0=BF=D0=B5?= =?UTF-8?q?=D1=80=D0=B5=D0=B2=D0=BE=D0=B4=D0=BE=D0=B2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- package-lock.json | 11 +++++ package.json | 1 + .../components/WatchPage/TranslationsList.vue | 15 ++++--- .../src/components/WatchPage/WatchPage.vue | 1 + .../src/utils/translationRecomendations.ts | 43 +++++++++++++++++++ 5 files changed, 66 insertions(+), 5 deletions(-) create mode 100644 packages/renderer/src/utils/translationRecomendations.ts diff --git a/package-lock.json b/package-lock.json index 2a9e377c..3b79826a 100644 --- a/package-lock.json +++ b/package-lock.json @@ -9,6 +9,7 @@ "@vueuse/core": "4.11.0", "electron-updater": "4.3.9", "electron-window-state": "5.0.3", + "idb": "^6.1.0", "libass-wasm": "4.0.0", "vue": "3.0.11", "vue-router": "4.0.8" @@ -6894,6 +6895,11 @@ "postcss": "^8.1.0" } }, + "node_modules/idb": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/idb/-/idb-6.1.0.tgz", + "integrity": "sha512-Pd/Jv+iFtWGSWAJyRXhNarwto+D/MTuGgLH2KKet0PJLVtqayIOY+cKT1boQO85RWbMh2FMNwym0hg81Tu86lQ==" + }, "node_modules/ieee754": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", @@ -18414,6 +18420,11 @@ "dev": true, "requires": {} }, + "idb": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/idb/-/idb-6.1.0.tgz", + "integrity": "sha512-Pd/Jv+iFtWGSWAJyRXhNarwto+D/MTuGgLH2KKet0PJLVtqayIOY+cKT1boQO85RWbMh2FMNwym0hg81Tu86lQ==" + }, "ieee754": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", diff --git a/package.json b/package.json index eb2bc247..1d9d0d05 100644 --- a/package.json +++ b/package.json @@ -66,6 +66,7 @@ "@vueuse/core": "4.11.0", "electron-updater": "4.3.9", "electron-window-state": "5.0.3", + "idb": "^6.1.0", "libass-wasm": "4.0.0", "vue": "3.0.11", "vue-router": "4.0.8" diff --git a/packages/renderer/src/components/WatchPage/TranslationsList.vue b/packages/renderer/src/components/WatchPage/TranslationsList.vue index 127a2f64..b687620b 100644 --- a/packages/renderer/src/components/WatchPage/TranslationsList.vue +++ b/packages/renderer/src/components/WatchPage/TranslationsList.vue @@ -17,6 +17,7 @@ :class="{active: selectedTranslation === translation}" :to="{params: {translationId: translation.id, episodeNum: selectedEpisodeNum}, hash: currentLocation.hash}" replace + @click="saveToPreferred(translation)" >  @@ -30,11 +31,13 @@ diff --git a/packages/renderer/src/components/WatchPage/WatchPage.vue b/packages/renderer/src/components/WatchPage/WatchPage.vue index 046edd40..2375c19c 100644 --- a/packages/renderer/src/components/WatchPage/WatchPage.vue +++ b/packages/renderer/src/components/WatchPage/WatchPage.vue @@ -41,6 +41,7 @@ + > | null = null; + +function getDB() { + + if (dbPromise !== null) { + return dbPromise; + } + + dbPromise = openDB('translation-recommendations', 1, { + upgrade(db: IDBPDatabase, oldVersion: number) { + if (oldVersion < 1) { + const preferencesStore = db.createObjectStore('preferences', {keyPath: 'seriesId'}); + preferencesStore.createIndex('by-type', 'type'); + } + }, + }); + + return dbPromise; +} + + +export async function savePreferredTranslation(seriesId: NumberLike, translation: Translation): Promise { + if (typeof seriesId !== 'number') { + seriesId = Number(seriesId); + } + + return (await getDB()).put('preferences', {...translation, seriesId}); +}