Files
api/web/store/purchase.ts
2023-11-01 13:36:17 -07:00

73 lines
1.6 KiB
TypeScript

import { defineStore, createPinia, setActivePinia } from 'pinia';
import { PURCHASE_CALLBACK } from '~/helpers/urls';
import { useCallbackStore } from '~/store/callbackActions';
import { useServerStore } from '~/store/server';
/**
* @see https://stackoverflow.com/questions/73476371/using-pinia-with-vue-js-web-components
* @see https://github.com/vuejs/pinia/discussions/1085
*/
setActivePinia(createPinia());
export const usePurchaseStore = defineStore('purchase', () => {
const callbackStore = useCallbackStore();
const serverStore = useServerStore();
const redeem = () => {
callbackStore.send(
PURCHASE_CALLBACK.toString(),
[{
server: {
...serverStore.serverPurchasePayload,
},
type: 'redeem',
}],
serverStore.inIframe,
);
};
const purchase = () => {
callbackStore.send(
PURCHASE_CALLBACK.toString(),
[{
server: {
...serverStore.serverPurchasePayload,
},
type: 'purchase',
}],
serverStore.inIframe,
);
};
const upgrade = () => {
callbackStore.send(
PURCHASE_CALLBACK.toString(),
[{
server: {
...serverStore.serverPurchasePayload,
},
type: 'upgrade',
}],
serverStore.inIframe,
);
};
const renew = () => {
callbackStore.send(
PURCHASE_CALLBACK.toString(),
[{
server: {
...serverStore.serverPurchasePayload,
},
type: 'renew',
}],
serverStore.inIframe,
);
};
return {
redeem,
purchase,
upgrade,
renew,
};
});