Files
old-new-wiaas/frontend/src/actions/coMarket/coMarketPackagesActions.js
2018-10-17 00:36:19 +02:00

91 lines
2.3 KiB
JavaScript

import {
API_SERVER
} from '../../config';
import HtmlClient from '../../helpers/HtmlClient';
import {
REQUEST_SHOP_PACKAGES,
RECIEVE_SHOP_PACKAGES,
REQUEST_SHOPS,
RECEIVE_SHOPS,
SELECT_SHOP
} from '../../constants/coMarketConstants';
import { fromWCPackage } from '../../helpers/PackageHelper';
const client = new HtmlClient();
const requestShopPackages = () => ({
type: REQUEST_SHOP_PACKAGES,
isLoading: true
});
const recieveShopPackages = (json) => ({
type: RECIEVE_SHOP_PACKAGES,
isLoading: false,
shopPackages: json
});
export const fetchShopPackages = (shop, search) => {
return dispatch => {
dispatch(requestShopPackages());
let searchParam = search ? '?search=' +search : ''
return client.fetch({
url: `${API_SERVER}/wp-json/wc/v2/products?shop_id=${shop.id}` + searchParam,
})
.then(response => {
if (response.data) {
dispatch(recieveShopPackages(response.data.map(wcPackage => fromWCPackage(wcPackage))))
}
})
.catch(error => {
client.onError(error, dispatch);
});
}
}
const requestShops = () => ({
type: REQUEST_SHOPS
});
const receiveShops = (json) => ({
type: RECEIVE_SHOPS,
shops: json
});
const generateShopOptions = (shops) => {
shops.forEach((shop) => {
shop.value = shop.id;
shop.label = shop.name;
});
return shops;
}
export const fetchShops = (userId) => {
return dispatch => {
dispatch(requestShops());
return client.fetch({url: `${API_SERVER}/wp-json/wiaas/customer/${userId}/shops` })
.then(response => {
if(response.data){
const shopOptions = generateShopOptions(response.data);
dispatch(receiveShops(shopOptions));
if (shopOptions.length) {
dispatch(selectShop(shopOptions[0]));
dispatch(fetchShopPackages(shopOptions[0]));
}
}
})
.catch(error => {
client.onError(error, dispatch);
});
}
}
export const selectShop = (shopInfo) => ({
type: SELECT_SHOP,
selectedShop: shopInfo
});