158 lines
4.3 KiB
JavaScript
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)
|
|
},
|
|
},
|
|
});
|