mirror of
https://github.com/sudoxnym/habitica.git
synced 2026-08-01 23:40:25 +00:00
* 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
101 lines
2.6 KiB
JavaScript
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));
|
|
}
|