From de58d7c033da259cf701f72a83ec253525f0b1ef Mon Sep 17 00:00:00 2001 From: Brandon Thomas Date: Fri, 12 Sep 2025 18:09:01 -0400 Subject: [PATCH] fix api call and display credits in frontend --- .../billing/src/lib/state/credits-state.ts | 39 +++++++++++++++++++ 1 file changed, 39 insertions(+) create mode 100644 frontend/libs/billing/src/lib/state/credits-state.ts diff --git a/frontend/libs/billing/src/lib/state/credits-state.ts b/frontend/libs/billing/src/lib/state/credits-state.ts new file mode 100644 index 0000000000..1e10b39dfe --- /dev/null +++ b/frontend/libs/billing/src/lib/state/credits-state.ts @@ -0,0 +1,39 @@ +import { create } from 'zustand' +import { ArtcraftGetCredits } from "@storyteller/tauri-api"; + +interface CreditsState { + // Daily free credits (if/when we offer them) + freeCredits: number, + + // Credits refilled monthly with a subscription + monthlyCredits: number, + + // Credits the user purchases individually + bankedCredits: number, + + // Total credits available + totalCredits: number, + + // Call to fetch credits from the server + fetchFromServer: () => Promise +} + +export const useCreditsState = create()((set) => ({ + freeCredits: 0, + monthlyCredits: 0, + bankedCredits: 0, + totalCredits: 0, + + // Call to fetch credits from the server + fetchFromServer: async () => { + const data = await ArtcraftGetCredits(); + if (!!data.payload) { + set((state) => ({ + freeCredits: data.payload.free_credits, + monthlyCredits: data.payload.monthly_credits, + bankedCredits: data.payload.banked_credits, + totalCredits: data.payload.sum_total_credits, + })); + } + } +})) \ No newline at end of file