habitica/website/client/store/actions/shops.js
negue ade6d9689f new client - quest / seasonal / time travelers shops (#8903)
* initial quests.vue - refactorings - add group to quests

* shows quests by quest-group

* buyQuestModal with rewards sidebar

* store / actions to load seasonal/time-travelers shop data

* buyModal buyPressed instead of buyAction - seasonal shop categories now with specialClass property - seasonal shop

* time travelers vue - show hourglass in shopItem / buyDialog - fix banners

* cleanup

* show amount of already owned quests

* show html notes in popovers / dialog

* extract purchase-api to common.ops.purchaseWithSpell to call the same in the store / update the UI on purchases

* add time-travelers sprites

* fix lint

* add last mystery set images

* remove unused Page

* remove equipment from newClient.json
2017-07-31 17:04:40 -06:00

101 lines
2.6 KiB
JavaScript

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 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 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));
}
export function pinGear () {
// axios
// .post(`/api/v3/user/pin/${params.key}`);
// TODO
// .then((res) => console.log('equip', res))
// .catch((err) => console.error('equip', err));
}
export function unpinGear () {
// axios
// .post(`/api/v3/user/unpin/${params.key}`);
// TODO
// .then((res) => console.log('equip', res))
// .catch((err) => console.error('equip', err));
}