Files
api/web/store/purchase.ts
Pujit Mehrotra 2266139742 fix: extract callbacks to library (#1280)
<!-- This is an auto-generated comment: release notes by coderabbit.ai
-->
## Summary by CodeRabbit

- **Chores**
  - Updated environment configuration to enhance secure handling.
  - Integrated a shared dependency for consistent callback management.

- **Refactor**
  - Streamlined callback actions management for improved performance.
- Upgraded the operating system version from a beta release to stable
(7.0.0), delivering enhanced reliability.
- Centralized callback actions store usage across components for better
state management.
- Removed deprecated callback management code to improve clarity and
maintainability.

- **New Features**
- Introduced a new redirect component to enhance user navigation
experience.
<!-- end of auto-generated comment: release notes by coderabbit.ai -->

---------

Co-authored-by: Eli Bosley <ekbosley@gmail.com>
Co-authored-by: Zack Spear <hi@zackspear.com>
2025-03-28 16:11:29 -04:00

86 lines
2.0 KiB
TypeScript

import { defineStore, createPinia, setActivePinia } from 'pinia';
import { PURCHASE_CALLBACK } from '~/helpers/urls';
import { useCallbackActionsStore } 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 = useCallbackActionsStore();
const serverStore = useServerStore();
const activate = () => {
callbackStore.send(
PURCHASE_CALLBACK.toString(),
[{
server: {
...serverStore.serverPurchasePayload,
},
type: 'activate',
}],
serverStore.inIframe ? 'newTab' : undefined,
);
};
const redeem = () => {
callbackStore.send(
PURCHASE_CALLBACK.toString(),
[{
server: {
...serverStore.serverPurchasePayload,
},
type: 'redeem',
}],
serverStore.inIframe ? 'newTab' : undefined,
);
};
const purchase = () => {
callbackStore.send(
PURCHASE_CALLBACK.toString(),
[{
server: {
...serverStore.serverPurchasePayload,
},
type: 'purchase',
}],
serverStore.inIframe ? 'newTab' : undefined,
);
};
const upgrade = () => {
callbackStore.send(
PURCHASE_CALLBACK.toString(),
[{
server: {
...serverStore.serverPurchasePayload,
},
type: 'upgrade',
}],
serverStore.inIframe ? 'newTab' : undefined,
);
};
const renew = () => {
callbackStore.send(
PURCHASE_CALLBACK.toString(),
[{
server: {
...serverStore.serverPurchasePayload,
},
type: 'renew',
}],
serverStore.inIframe ? 'newTab' : undefined,
);
};
return {
activate,
redeem,
purchase,
upgrade,
renew,
};
});