Load Locations/People/Vehicles from layout on app load

This commit is contained in:
2020-12-21 22:06:36 +01:00
parent 5bab5b2041
commit 2e35d86e1a
3 changed files with 42 additions and 5 deletions

View File

@@ -10,7 +10,16 @@
<script> <script>
export default { export default {
middleware: ["redirect"] middleware: ["redirect"],
fetchOnServer: false,
async fetch() {
const { store } = this.$nuxt.context;
if (!store.state.people.list.length) await store.dispatch("people/getList");
if (!store.state.vehicles.list.length)
await store.dispatch("vehicles/getList");
if (!store.state.locations.list.length)
await store.dispatch("locations/getList");
}
}; };
</script> </script>

View File

@@ -1,18 +1,31 @@
export const state = () => ({ export const state = () => ({
list: [],
location: {} location: {}
}); });
export const mutations = { export const mutations = {
setList: (state, locations) => {
state.list = locations;
},
setLocation: (state, location) => { setLocation: (state, location) => {
state.location = location; state.location = location;
} }
}; };
export const actions = { export const actions = {
async getLocation({ commit }, { id, callback = false }) { async getList({ commit }) {
try {
const locations = await this.$axios.$get(
"/api/locations?fields=id,name,climate,terrain,surface_water,residents,films"
);
commit("setList", locations);
} catch (e) {
throw Error(`API Error occurred: ${e.message}`);
}
},
async getLocation({ commit }, id) {
try { try {
const location = await this.$axios.$get(`/api/locations/${id}`); const location = await this.$axios.$get(`/api/locations/${id}`);
if (callback) return location;
commit("setLocation", location); commit("setLocation", location);
} catch (e) { } catch (e) {
throw Error(`API Error occurred: ${e.message}`); throw Error(`API Error occurred: ${e.message}`);
@@ -21,5 +34,6 @@ export const actions = {
}; };
export const getters = { export const getters = {
list: state => state.list,
location: state => state.location location: state => state.location
}; };

View File

@@ -1,18 +1,31 @@
export const state = () => ({ export const state = () => ({
list: [],
vehicle: {} vehicle: {}
}); });
export const mutations = { export const mutations = {
setList: (state, vehicles) => {
state.list = vehicles;
},
setVehicle: (state, vehicle) => { setVehicle: (state, vehicle) => {
state.vehicle = vehicle; state.vehicle = vehicle;
} }
}; };
export const actions = { export const actions = {
async getVehicle({ commit }, { id, callback = false }) { async getList({ commit }) {
try {
const vehicles = await this.$axios.$get(
"/api/vehicles?fields=id,name,description,vehicle_class,length,pilot,films"
);
commit("setList", vehicles);
} catch (e) {
throw Error(`API Error occurred: ${e.message}`);
}
},
async getVehicle({ commit }, id) {
try { try {
const vehicle = await this.$axios.$get(`/api/vehicles/${id}`); const vehicle = await this.$axios.$get(`/api/vehicles/${id}`);
if (callback) return vehicle;
commit("setVehicle", vehicle); commit("setVehicle", vehicle);
} catch (e) { } catch (e) {
throw Error(`API Error occurred: ${e.message}`); throw Error(`API Error occurred: ${e.message}`);
@@ -21,5 +34,6 @@ export const actions = {
}; };
export const getters = { export const getters = {
list: state => state.list,
vehicle: state => state.vehicle vehicle: state => state.vehicle
}; };