diff options
| author | Zephyrrus <[email protected]> | 2020-07-10 01:17:00 +0300 |
|---|---|---|
| committer | GitHub <[email protected]> | 2020-07-10 01:17:00 +0300 |
| commit | a721681944e9eb06742e5b3f71c71aed9c1c117d (patch) | |
| tree | 93ff9fd13a0434d91fb1ae7ca0da48d6929c4d00 /src/site/plugins | |
| parent | feat: backend pagination for albums (diff) | |
| parent | refactor: finish refactoring all the components to use vuex (diff) | |
| download | host.fuwn.me-a721681944e9eb06742e5b3f71c71aed9c1c117d.tar.xz host.fuwn.me-a721681944e9eb06742e5b3f71c71aed9c1c117d.zip | |
Merge pull request #1 from Zephyrrus/feature/store_refactor
Feature/store refactor
Diffstat (limited to 'src/site/plugins')
| -rw-r--r-- | src/site/plugins/axios.js | 36 | ||||
| -rw-r--r-- | src/site/plugins/flexsearch.js | 5 | ||||
| -rw-r--r-- | src/site/plugins/handler.js | 25 | ||||
| -rw-r--r-- | src/site/plugins/notifier.js | 25 | ||||
| -rw-r--r-- | src/site/plugins/nuxt-client-init.js | 2 | ||||
| -rw-r--r-- | src/site/plugins/vue-isyourpasswordsafe.js | 2 | ||||
| -rw-r--r-- | src/site/plugins/vue-timeago.js | 2 |
7 files changed, 79 insertions, 18 deletions
diff --git a/src/site/plugins/axios.js b/src/site/plugins/axios.js index 843a258..0308d39 100644 --- a/src/site/plugins/axios.js +++ b/src/site/plugins/axios.js @@ -1,22 +1,32 @@ -export default function({ $axios, store }) { +export default function ({ $axios, store }) { $axios.setHeader('accept', 'application/vnd.lolisafe.json'); - $axios.onRequest(config => { - if (store.state.token) { - config.headers.common['Authorization'] = `bearer ${store.state.token}`; + + $axios.onRequest((config) => { + if (store.state.auth.token) { + config.headers.common.Authorization = `bearer ${store.state.auth.token}`; } }); - $axios.onError(error => { - if (process.env.development) console.error('[AXIOS Error]', error); + $axios.onError((error) => { + if (process.env.NODE_ENV !== 'production') console.error('[AXIOS Error]', error); if (process.browser) { - store.dispatch('alert', { - text: error.response.data.message, - error: true - }); - - if (error.response.data.message.indexOf('Token expired') !== -1) { - store.dispatch('logout'); + if (process.env.NODE_ENV !== 'production') { + if (error.response?.data?.message) { + store.dispatch('alert/set', { + text: error.response.data.message, + error: true, + }); + } else { + store.dispatch('alert/set', { + text: `[AXIOS]: ${error.message}`, + error: true, + }); + } } + + /* if (error.response?.data?.message.indexOf('Token expired') !== -1) { + store.dispatch('auth/logout'); + } */ } }); } diff --git a/src/site/plugins/flexsearch.js b/src/site/plugins/flexsearch.js index 595b180..8640232 100644 --- a/src/site/plugins/flexsearch.js +++ b/src/site/plugins/flexsearch.js @@ -1,16 +1,17 @@ import Vue from 'vue'; import FlexSearch from 'flexsearch'; + const search = new FlexSearch('speed'); // https://github.com/nextapps-de/flexsearch Vue.prototype.$search = { - items: async items => { + items: async (items) => { await search.clear(); await search.add(items); }, do: async (term, field) => { const results = await search.search(term, { field }); return results; - } + }, }; diff --git a/src/site/plugins/handler.js b/src/site/plugins/handler.js new file mode 100644 index 0000000..3d85b15 --- /dev/null +++ b/src/site/plugins/handler.js @@ -0,0 +1,25 @@ +import AlertTypes from '~/constants/alertTypes'; + +export default ({ store }, inject) => { + inject('handler', { + async executeAction(action, param) { + try { + const response = await store.dispatch(action, param); + + store.commit('alert/set', { + message: response?.message ?? 'Executed sucesfully', + type: AlertTypes.SUCCESS, + }); + + return response; + } catch (e) { + store.commit('alert/set', { + message: e.message, + type: AlertTypes.ERROR, + }); + + return null; + } + }, + }); +}; diff --git a/src/site/plugins/notifier.js b/src/site/plugins/notifier.js new file mode 100644 index 0000000..4fe1262 --- /dev/null +++ b/src/site/plugins/notifier.js @@ -0,0 +1,25 @@ +import AlertTypes from '~/constants/alertTypes'; + +export default ({ store }, inject) => { + inject('notifier', { + showMessage({ message = '', type = '', snackbar = false }) { + store.commit('alert/set', { message, type, snackbar }); + }, + message(message, snackbar) { + this.showMessage({ message, type: AlertTypes.PRIMARY, snackbar }); + }, + info(message, snackbar) { + this.showMessage({ message, type: AlertTypes.INFO, snackbar }); + }, + warning(message, snackbar) { + this.showMessage({ message, type: AlertTypes.WARNING, snackbar }); + }, + success(message, snackbar) { + this.showMessage({ message, type: AlertTypes.SUCCESS, snackbar }); + }, + error(message, snackbar) { + this.showMessage({ message, type: AlertTypes.ERROR, snackbar }); + }, + types: AlertTypes, + }); +}; diff --git a/src/site/plugins/nuxt-client-init.js b/src/site/plugins/nuxt-client-init.js index 4b10dcd..01f33ff 100644 --- a/src/site/plugins/nuxt-client-init.js +++ b/src/site/plugins/nuxt-client-init.js @@ -1,3 +1,3 @@ -export default async ctx => { +export default async (ctx) => { await ctx.store.dispatch('nuxtClientInit', ctx); }; diff --git a/src/site/plugins/vue-isyourpasswordsafe.js b/src/site/plugins/vue-isyourpasswordsafe.js index 6172ca0..68f313a 100644 --- a/src/site/plugins/vue-isyourpasswordsafe.js +++ b/src/site/plugins/vue-isyourpasswordsafe.js @@ -3,5 +3,5 @@ import VueIsYourPasswordSafe from 'vue-isyourpasswordsafe'; Vue.use(VueIsYourPasswordSafe, { minLength: 6, - maxLength: 64 + maxLength: 64, }); diff --git a/src/site/plugins/vue-timeago.js b/src/site/plugins/vue-timeago.js index 28f3c6d..81e6e75 100644 --- a/src/site/plugins/vue-timeago.js +++ b/src/site/plugins/vue-timeago.js @@ -4,5 +4,5 @@ import VueTimeago from 'vue-timeago'; Vue.use(VueTimeago, { name: 'timeago', locale: 'en-US', - locales: { 'en-US': require('vue-timeago/locales/en-US.json') } + locales: { 'en-US': require('vue-timeago/locales/en-US.json') }, }); |