Do not store the whole product object from the API in the store
This commit is contained in:
parent
043a29e4b9
commit
97701da91f
@ -3,11 +3,17 @@ require('isomorphic-fetch');
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* TODO: Handle country/locale
|
* TODO: Handle country/locale
|
||||||
|
* TODO: Handle errors
|
||||||
*/
|
*/
|
||||||
export default function (EAN) {
|
export default function (EAN) {
|
||||||
return fetch(
|
return fetch(
|
||||||
`https://world.openfoodfacts.org/api/v0/product/${EAN}.json`,
|
`https://world.openfoodfacts.org/api/v0/product/${EAN}.json`,
|
||||||
)
|
)
|
||||||
.then(response => response.json())
|
.then(response => response.json())
|
||||||
|
.then(response => ({
|
||||||
|
// Return a clean object with only interesting fields
|
||||||
|
icon: response.product.image_thumb_url,
|
||||||
|
name: response.product.product_name,
|
||||||
|
}))
|
||||||
.catch(exc => console.error(`Unable to fetch product: ${exc}.`));
|
.catch(exc => console.error(`Unable to fetch product: ${exc}.`));
|
||||||
}
|
}
|
||||||
|
@ -5,10 +5,7 @@ export default {
|
|||||||
getProduct({ commit }, { EAN }) {
|
getProduct({ commit }, { EAN }) {
|
||||||
commit(types.IS_LOADING);
|
commit(types.IS_LOADING);
|
||||||
getProduct(EAN).then(
|
getProduct(EAN).then(
|
||||||
(result) => {
|
product => commit(types.STORE_PRODUCT, { product }),
|
||||||
const { product } = result;
|
|
||||||
commit(types.STORE_PRODUCT, { product });
|
|
||||||
},
|
|
||||||
);
|
);
|
||||||
},
|
},
|
||||||
setTitle({ commit }, { title }) {
|
setTitle({ commit }, { title }) {
|
||||||
|
@ -14,7 +14,7 @@ export const mutations = {
|
|||||||
[types.STORE_PRODUCT](state, { product }) {
|
[types.STORE_PRODUCT](state, { product }) {
|
||||||
state.product = product;
|
state.product = product;
|
||||||
state.isLoading = false;
|
state.isLoading = false;
|
||||||
state.ui.title = product.product_name; // Set UI title
|
state.ui.title = product.name; // Set UI title
|
||||||
},
|
},
|
||||||
[types.IS_LOADING](state) {
|
[types.IS_LOADING](state) {
|
||||||
state.isLoading = true;
|
state.isLoading = true;
|
||||||
|
@ -5,7 +5,7 @@
|
|||||||
<v-layout row align-baseline>
|
<v-layout row align-baseline>
|
||||||
<v-flex xs3 class="text-xs-center">
|
<v-flex xs3 class="text-xs-center">
|
||||||
<v-avatar size="100%">
|
<v-avatar size="100%">
|
||||||
<img :src="this.product.image_front_small_url" :alt="product.product_name">
|
<img :src="this.product.icon" :alt="product.name">
|
||||||
</v-avatar>
|
</v-avatar>
|
||||||
</v-flex>
|
</v-flex>
|
||||||
</v-layout>
|
</v-layout>
|
||||||
|
Loading…
Reference in New Issue
Block a user