habitica/website/client/store/actions/shops.js

108 lines
3 KiB
JavaScript
Raw Normal View History

import axios from 'axios';
import { loadAsyncResource } from 'client/libs/asyncResource';
import buyOp from 'common/script/ops/buy';
import purchaseOp from 'common/script/ops/purchaseWithSpell';
import buyMysterySetOp from 'common/script/ops/buyMysterySet';
import hourglassPurchaseOp from 'common/script/ops/hourglassPurchase';
import sellOp from 'common/script/ops/sell';
export function fetchMarket (store, forceLoad = false) { // eslint-disable-line no-shadow
return loadAsyncResource({
store,
path: 'shops.market',
url: '/api/v3/shops/market',
deserialize (response) {
return response.data.data;
},
forceLoad,
});
}
export function fetchQuests (store, forceLoad = false) { // eslint-disable-line no-shadow
return loadAsyncResource({
store,
path: 'shops.quests',
url: '/api/v3/shops/quests',
deserialize (response) {
return response.data.data;
},
forceLoad,
});
}
export function fetchSeasonal (store, forceLoad = false) { // eslint-disable-line no-shadow
return loadAsyncResource({
store,
path: 'shops.seasonal',
url: '/api/v3/shops/seasonal',
deserialize (response) {
return response.data.data;
},
forceLoad,
});
}
export function fetchTimeTravelers (store, forceLoad = false) { // eslint-disable-line no-shadow
return loadAsyncResource({
store,
path: 'shops.time-travelers',
url: '/api/v3/shops/time-travelers',
deserialize (response) {
return response.data.data;
},
forceLoad,
});
}
export function buyItem (store, params) {
const user = store.state.user.data;
buyOp(user, {params});
axios
.post(`/api/v3/user/buy/${params.key}`);
// TODO
// .then((res) => console.log('equip', res))
// .catch((err) => console.error('equip', err));
}
export function purchase (store, params) {
const user = store.state.user.data;
purchaseOp(user, {params});
axios
.post(`/api/v3/user/purchase/${params.type}/${params.key}`);
// TODO
// .then((res) => console.log('equip', res))
// .catch((err) => console.error('equip', err));
}
export function purchaseMysterySet (store, params) {
const user = store.state.user.data;
buyMysterySetOp(user, {params});
axios
.post(`/api/v3/user/buy-mystery-set/${params.key}`);
// TODO
// .then((res) => console.log('equip', res))
// .catch((err) => console.error('equip', err));
}
export function purchaseHourglassItem (store, params) {
const user = store.state.user.data;
hourglassPurchaseOp(user, {params});
axios
.post(`/api/v3/user/purchase-hourglass/${params.type}/${params.key}`);
// TODO
// .then((res) => console.log('equip', res))
// .catch((err) => console.error('equip', err));
}
export function sellItems (store, params) {
const user = store.state.user.data;
sellOp(user, {params, query: {amount: params.amount}});
axios
.post(`/api/v3/user/sell/${params.type}/${params.key}?amount=${params.amount}`);
// TODO
// .then((res) => console.log('equip', res))
// .catch((err) => console.error('equip', err));
}