import {defineStore} from "pinia"; import {useSessionStorage} from "@vueuse/core"; import {useClient} from "@/plugins/api.js"; import {useAuthStore} from "@/stores/authStore.js"; import {watch, onMounted} from "vue"; export const useSubscriptionStore = defineStore( 'subscription', () => { const authStore = useAuthStore() watch( () => authStore.isAuthenticated, async (newValue) => { if (newValue) { await loadSubscriptions() } else { subscriptions.value = {} } }) const subscriptions = useSessionStorage( 'subscription-subscriptions', {}) function isSubscribeTo(creatorId) { return !!subscriptions.value[creatorId]; } async function loadSubscriptions() { try { const client = useClient() const response = await client.get(`/api/membership/active`); subscriptions.value = response.data.reduce( (acc, sub) => { acc[sub.creatorId] = sub; return acc; }, {}); } catch (error) { console.error("Error loading subscriptions:", error); } } return {subscriptions, isSubscribeTo} });