From c1c6ea500167ac1d53b4ab811b885442a3e37711 Mon Sep 17 00:00:00 2001 From: Willyb321 Date: Tue, 4 Dec 2018 07:53:26 +1100 Subject: [PATCH] store init --- src/store.js | 10 ----- src/store/index.js | 15 ++++++++ src/store/modules/common.js | 75 +++++++++++++++++++++++++++++++++++++ src/store/modules/index.js | 3 ++ 4 files changed, 93 insertions(+), 10 deletions(-) delete mode 100644 src/store.js create mode 100644 src/store/index.js create mode 100644 src/store/modules/common.js create mode 100644 src/store/modules/index.js diff --git a/src/store.js b/src/store.js deleted file mode 100644 index 0a6a3f7e..00000000 --- a/src/store.js +++ /dev/null @@ -1,10 +0,0 @@ -import Vue from "vue"; -import Vuex from "vuex"; - -Vue.use(Vuex); - -export default new Vuex.Store({ - state: {}, - mutations: {}, - actions: {} -}); diff --git a/src/store/index.js b/src/store/index.js new file mode 100644 index 00000000..133998e4 --- /dev/null +++ b/src/store/index.js @@ -0,0 +1,15 @@ +import Vue from "vue"; +import Vuex from "vuex"; + +Vue.use(Vuex); + +import { CommonStore as Common } from "./modules"; + +export default new Vuex.Store({ + state: {}, + modules: { + Common + }, + mutations: {}, + actions: {} +}); diff --git a/src/store/modules/common.js b/src/store/modules/common.js new file mode 100644 index 00000000..41d6de62 --- /dev/null +++ b/src/store/modules/common.js @@ -0,0 +1,75 @@ +import axios from 'axios'; + +const types = { + ANNOUNCEMENT_REQUEST: 'ANNOUNCEMENT_REQUEST', + AUTH_REQUEST: 'AUTH_REQUEST', + UPDATE_REQUEST: 'UPDATE_REQUEST', +}; + +export default { + state: { + announcements: [], + builds: [], + featuredBuilds: [], + user: {}, + admin: false, + updateAvailable: false, + accessToken: '' + }, + mutations: { + ANNOUNCEMENT_REQUEST(state, data) { + if (!data || !data.data) { + return; + } + state.announcements = data.data; + }, + UPDATE_REQUEST(state) { + state.updateAvailable = true; + }, + AUTH_REQUEST(state, data) { + if (!data) { + state.user = null; + state.admin = null; + state.accessToken = null; + return; + } + state.user = data.user; + window.bugsnagClient.user = state.user; + state.admin = data.admin; + state.accessToken = data.accessToken; + } + }, + actions: { + async getAnnouncements({ commit }) { + let data; + try { + data = await axios.get('/api/announcement'); + } catch (e) { + if (e.response.status !== 401) { + console.log(e); + } + } + commit(types.ANNOUNCEMENT_REQUEST, data); + }, + async checkAuth({ commit }) { + let data; + try { + data = await axios.get('/api/checkauth', { + withCredentials: true + }); + } catch (e) { + if (e && e.response && e.response.status !== 401) { + console.log(e); + } + } + if (data && data.data) { + return commit(types.AUTH_REQUEST, data.data); + } + return commit(types.AUTH_REQUEST, null); + }, + async updateAvailable({ commit }) { + commit(types.UPDATE_REQUEST); + } + }, + getters: {} +}; diff --git a/src/store/modules/index.js b/src/store/modules/index.js new file mode 100644 index 00000000..cdef360b --- /dev/null +++ b/src/store/modules/index.js @@ -0,0 +1,3 @@ +import CommonStore from './common'; + +export { CommonStore };