1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465 |
- import _ from 'lodash'
- import Vue from 'vue'
- import Vuex from 'vuex'
- import pathify from 'vuex-pathify' // eslint-disable-line import/no-duplicates
- import { make } from 'vuex-pathify' // eslint-disable-line import/no-duplicates
- import page from './page'
- import site from './site'
- import user from './user'
- Vue.use(Vuex)
- const state = {
- loadingStack: [],
- notification: {
- message: '',
- style: 'primary',
- icon: 'cached',
- isActive: false
- }
- }
- export default new Vuex.Store({
- strict: process.env.NODE_ENV !== 'production',
- plugins: [
- pathify.plugin
- ],
- state,
- getters: {
- isLoading: state => { return state.loadingStack.length > 0 }
- },
- mutations: {
- ...make.mutations(state),
- loadingStart (state, stackName) {
- state.loadingStack = _.union(state.loadingStack, [stackName])
- },
- loadingStop (state, stackName) {
- state.loadingStack = _.without(state.loadingStack, stackName)
- },
- showNotification (state, opts) {
- state.notification = _.defaults(opts, {
- message: '',
- style: 'primary',
- icon: 'cached',
- isActive: true
- })
- },
- updateNotificationState (state, newState) {
- state.notification.isActive = newState
- },
- pushGraphError (state, err) {
- WIKI.$store.commit('showNotification', {
- style: 'red',
- message: _.get(err, 'graphQLErrors[0].message', err.message),
- icon: 'warning'
- })
- }
- },
- actions: { },
- modules: {
- page,
- site,
- user
- }
- })
|