This repository has been archived on 2019-10-13. You can view files and clone it, but cannot push or open issues or pull requests.
2018-04-14 16:25:37 +02:00

158 lines
4.3 KiB
JavaScript

import Vue from 'vue'
import Vuex from 'vuex'
import * as CONFIG from './config'
Vue.use(Vuex);
export const store = new Vuex.Store({
state: {
user: {
authenticated: true,
},
foodAppStudWue: {
locations: [],
defaultImage: '',
currentFood: {},
currentFoodComments: [],
currentFoodUserImage: '',
},
},
getters: {
isAuthenticated: state => {
return state.user.authenticated
},
getStudWuerzburgLocations: state => {
return state.foodAppStudWue.locations
},
getDefaultImageLocation: state => {
return state.foodAppStudWue.defaultImage
},
getDetailedFood: state => {
return state.foodAppStudWue.currentFood
},
getDetailedFoodID: state => {
return state.foodAppStudWue.currentFood.id
},
getDetailedFoodRating: state => {
return state.foodAppStudWue.currentFood.rating
},
getDetailedFoodImage: state => {
return state.foodAppStudWue.currentFood.image
},
getDetailedFoodUserImage: state => {
return state.foodAppStudWue.currentFoodUserImage
},
getDetailedFoodUserAllergens: state => {
return state.foodAppStudWue.currentFood.allergens
},
getDetailedFoodPrices: state => {
return {
employee: state.foodAppStudWue.currentFood.price_employee,
guest: state.foodAppStudWue.currentFood.price_guest,
student: state.foodAppStudWue.currentFood.price_student,
}
},
getDetailedFoodComments: state => {
return state.foodAppStudWue.currentFoodComments
},
},
mutations: {
logout(state) {
state.user.authenticated = false;
},
login(state) {
state.user.authenticated = true;
},
loadLocations(state) {
window.axios.get(CONFIG.API_ROOT_FOOD.concat('/menus/locations'))
.then(response => {
state.foodAppStudWue.locations = response.data;
})
.catch(e => {
console.error(e)
});
},
loadDefaultImageLocation(state) {
window.axios.get(CONFIG.API_ROOT_FOOD.concat('/meals/images/default'))
.then(response => {
state.foodAppStudWue.defaultImage = response.data.image;
})
.catch(e => {
console.error(e)
});
},
loadDetailedFood(state, {foodId}) {
window.axios.get(CONFIG.API_ROOT_FOOD
.concat('/meals/').concat(foodId))
.then(response => {
state.foodAppStudWue.currentFood = response.data;
})
.catch(e => {
});
window.axios.get(CONFIG.API_ROOT_FOOD
.concat('/meals/').concat(foodId).concat('/comments'))
.then(response => {
state.foodAppStudWue.currentFoodComments = response.data;
})
.catch(e => {
});
if (state.user.authenticated) {
state.foodAppStudWue.currentFoodUserImage = '';
let url = CONFIG.API_ROOT_ACCOUNT + '/food/images/?food_id=' + foodId;
window.axios
.get(url)
.then(response => {
if (response.data.length > 0) {
state.foodAppStudWue.currentFoodUserImage = response.data[0].image.image;
}
})
.catch(e => {
console.error(e)
})
}
},
loadUserImage(state, {foodId}) {
if (state.user.authenticated) {
let url = CONFIG.API_ROOT_ACCOUNT + '/food/images/?food_id=' + foodId;
window.axios
.get(url)
.then(response => {
if (response.data.length > 0) {
state.foodAppStudWue.currentFoodUserImage = response.data[0].image.image;
}
})
.catch(e => {
console.error(e)
})
}
},
setUserImage(state, {image}) {
state.foodAppStudWue.currentFoodUserImage = image;
}
},
actions: {
login(context) {
context.commit('login')
},
logout(context) {
context.commit('logout')
},
loadLocations(context) {
context.commit('loadLocations')
},
loadDefaultImageLocation(context) {
context.commit('loadDefaultImageLocation')
},
loadDetailedFood(context, foodId) {
context.commit('loadDetailedFood', foodId)
},
loadUserImage(context, foodId) {
context.commit('loadUserImage', foodId)
},
setUserImage(context, image) {
context.commit('setUserImage', image)
},
},
});