c3lf-system-3/src/store/index.js

72 lines
1.8 KiB
JavaScript
Raw Normal View History

2019-11-13 21:40:14 +00:00
import Vue from 'vue';
import Vuex from 'vuex';
import axios from 'axios';
//import * as _ from 'lodash/fp';
import router from '../router';
2019-11-13 21:40:14 +00:00
2019-12-05 21:26:45 +00:00
import getAuth from './auth';
2019-11-13 21:40:14 +00:00
Vue.use(Vuex);
2019-12-05 21:26:45 +00:00
const store = new Vuex.Store({
2019-11-14 02:59:17 +00:00
state: {
events: Array,
2019-11-15 19:00:40 +00:00
layout: 'cards',
2019-12-05 19:10:43 +00:00
loadedItems: Array,
2019-12-05 22:27:24 +00:00
currentview: 'items',
2019-11-14 03:14:47 +00:00
},
getters: {
getEventSlug: state => state.route.params.event,
2019-12-05 22:27:24 +00:00
getActiveView: state => state.currentview,
},
2019-11-14 03:14:47 +00:00
mutations: {
replaceEvents(state, events) {
state.events = events;
//if (!state.activeEvent || !events.includes(state.activeEvent))
// state.activeEvent = _.reverse(events)[0];
},
2019-11-14 03:14:47 +00:00
changeEvent(state, event) {
2019-12-05 22:27:24 +00:00
router.push({path: `/${state.currentview}/${event.slug}`});
},
changeView(state, link) {
router.push({path: `/${link.path}/${state.route.params.event}`});
},
replaceLoadedItems(state, newItems) {
state.loadedItems = newItems;
2019-11-15 19:00:40 +00:00
},
setLayout(state, layout) {
state.layout = layout;
2019-11-14 03:14:47 +00:00
}
},
actions: {
async loadEvents({ commit }) {
const resp = await axios.get('https://c3lf.de/api/1/events', {
2019-12-05 21:26:45 +00:00
auth: getAuth(),
});
commit('replaceEvents', resp.data);
},
changeEvent({ commit, dispatch }, eventName) {
commit('changeEvent', eventName);
dispatch('loadEventItems', eventName);
},
2019-12-05 22:27:24 +00:00
changeView({ commit }, link) {
commit('changeView', link);
},
async loadEventItems({ commit, state }) {
const resp = await axios.get(`https://c3lf.de/api/1/${state.route.params.event}/items`, {
2019-12-05 21:26:45 +00:00
auth: getAuth(),
});
console.log(resp.data);
commit('replaceLoadedItems', resp.data);
2019-11-14 03:14:47 +00:00
}
2019-11-14 02:59:17 +00:00
}
2019-11-13 21:40:14 +00:00
});
export default store;
2019-12-05 22:27:24 +00:00
store.dispatch('loadEvents');
store.dispatch('loadEventItems');