diff --git a/package.json b/package.json index 9e2d14a..e19d07c 100644 --- a/package.json +++ b/package.json @@ -15,6 +15,7 @@ "dependencies": { "axios": "^0.19.0", "core-js": "^2.6.5", + "localforage": "^1.7.3", "view-design": "^4.0.2", "vue": "^2.6.10", "vue-router": "^3.0.3", diff --git a/src/App.vue b/src/App.vue index f106085..465244d 100644 --- a/src/App.vue +++ b/src/App.vue @@ -1,5 +1,5 @@ diff --git a/src/main.js b/src/main.js index 8ecb0c3..a64393c 100644 --- a/src/main.js +++ b/src/main.js @@ -3,8 +3,7 @@ import App from './App.vue' import router from './router' import store from './store' import '@/plugin/iview/' -// import '@/assets/theme/dark.scss' -// import '@/assets/theme/light.scss' +// import '@/plugin/localforage/' Vue.config.productionTip = false diff --git a/src/plugin/localforage/collection_db.js b/src/plugin/localforage/collection_db.js new file mode 100644 index 0000000..145a90a --- /dev/null +++ b/src/plugin/localforage/collection_db.js @@ -0,0 +1,65 @@ +import lf from 'localforage' + +const collection = lf.createInstance({ + name: 'ZY', + storeName: 'collection', + version: '1.0', + description: 'ZY Player collection DB' +}) + +export default { + set (key, value) { + return new Promise((resolve, reject) => { + collection.setItem(key, value).then(e => { + resolve(e) + }).catch(err => { + reject(err) + }) + }) + }, + remove (key) { + return new Promise((resolve, reject) => { + collection.removeItem(key).then(() => { + resolve(true) + }).catch(err => { + reject(err) + }) + }) + }, + clear () { + return new Promise((resolve, reject) => { + collection.clear().then(() => { + resolve(true) + }).catch(err => { + reject(err) + }) + }) + }, + find (key) { + return new Promise((resolve, reject) => { + collection.getItem(key).then(value => { + resolve(value) + }).catch(err => { + reject(err) + }) + }) + }, + all () { + return new Promise((resolve, reject) => { + collection.keys().then(value => { + resolve(value) + }).catch(err => { + reject(err) + }) + }) + }, + length () { + return new Promise((resolve, reject) => { + collection.length().then(value => { + resolve(value) + }).catch(err => { + reject(err) + }) + }) + } +} diff --git a/src/plugin/localforage/index.js b/src/plugin/localforage/index.js new file mode 100644 index 0000000..561da0c --- /dev/null +++ b/src/plugin/localforage/index.js @@ -0,0 +1,5 @@ +import setting from './setting_db' +import collection from './collection_db' +export { + setting, collection +} diff --git a/src/plugin/localforage/setting_db.js b/src/plugin/localforage/setting_db.js new file mode 100644 index 0000000..cf49e66 --- /dev/null +++ b/src/plugin/localforage/setting_db.js @@ -0,0 +1,47 @@ +import lf from 'localforage' + +const setting = lf.createInstance({ + name: 'ZY', + storeName: 'setting', + version: '1.0', + description: 'ZY Player setting DB' +}) + +export default { + set (key, value) { + return new Promise((resolve, reject) => { + setting.setItem(key, value).then(e => { + resolve(e) + }).catch(err => { + reject(err) + }) + }) + }, + remove (key) { + return new Promise((resolve, reject) => { + setting.removeItem(key).then(() => { + resolve(true) + }).catch(err => { + reject(err) + }) + }) + }, + clear () { + return new Promise((resolve, reject) => { + setting.clear().then(() => { + resolve(true) + }).catch(err => { + reject(err) + }) + }) + }, + find (key) { + return new Promise((resolve, reject) => { + setting.getItem(key).then(value => { + resolve(value) + }).catch(err => { + reject(err) + }) + }) + } +} diff --git a/src/store.js b/src/store.js index e98a833..0563907 100644 --- a/src/store.js +++ b/src/store.js @@ -1,5 +1,6 @@ import Vue from 'vue' import Vuex from 'vuex' +import { setting } from '@/plugin/localforage/' Vue.use(Vuex) @@ -34,6 +35,11 @@ export default new Vuex.Store({ actions: { addCollection: (payload) => { localStorage.collection = payload + }, + changeTheme: ({ commit }, payload) => { + setting.set('theme', payload).then(e => { + commit('SET_THEME', e) + }) } } }) diff --git a/src/views/Settings.vue b/src/views/Settings.vue index b6e6a95..8803e1b 100644 --- a/src/views/Settings.vue +++ b/src/views/Settings.vue @@ -1,16 +1,31 @@ diff --git a/yarn.lock b/yarn.lock index 0066bf3..c506c24 100644 --- a/yarn.lock +++ b/yarn.lock @@ -5840,6 +5840,13 @@ levn@^0.3.0, levn@~0.3.0: prelude-ls "~1.1.2" type-check "~0.3.2" +lie@3.1.1: + version "3.1.1" + resolved "https://registry.npm.taobao.org/lie/download/lie-3.1.1.tgz#9a436b2cc7746ca59de7a41fa469b3efb76bd87e" + integrity sha1-mkNrLMd0bKWd56QfpGmz77dr2H4= + dependencies: + immediate "~3.0.5" + lie@~3.3.0: version "3.3.0" resolved "https://registry.npm.taobao.org/lie/download/lie-3.3.0.tgz#dcf82dee545f46074daf200c7c1c5a08e0f40f6a" @@ -5905,6 +5912,13 @@ loader-utils@^1.0.2, loader-utils@^1.1.0, loader-utils@^1.2.3: emojis-list "^2.0.0" json5 "^1.0.1" +localforage@^1.7.3: + version "1.7.3" + resolved "https://registry.npm.taobao.org/localforage/download/localforage-1.7.3.tgz#0082b3ca9734679e1bd534995bdd3b24cf10f204" + integrity sha1-AIKzypc0Z54b1TSZW907JM8Q8gQ= + dependencies: + lie "3.1.1" + locate-path@^2.0.0: version "2.0.0" resolved "https://registry.npm.taobao.org/locate-path/download/locate-path-2.0.0.tgz#2b568b265eec944c6d9c0de9c3dbbbca0354cd8e"