Update Electron billing UI for free plan

This commit is contained in:
Ramnique Singh 2026-05-18 11:12:10 +05:30
parent d586f6bd8a
commit af618155e1
8 changed files with 31 additions and 36 deletions

View file

@ -1,15 +1,6 @@
import { getAccessToken } from '../auth/tokens.js';
import { API_URL } from '../config/env.js';
export interface BillingInfo {
userEmail: string | null;
userId: string | null;
subscriptionPlan: string | null;
subscriptionStatus: string | null;
trialExpiresAt: string | null;
sanctionedCredits: number;
availableCredits: number;
}
import type { BillingInfo, BillingPlan } from '@x/shared/dist/billing.js';
export async function getBillingInfo(): Promise<BillingInfo> {
const accessToken = await getAccessToken();
@ -25,7 +16,7 @@ export async function getBillingInfo(): Promise<BillingInfo> {
email: string;
};
billing: {
plan: string | null;
plan: BillingPlan | null;
status: string | null;
trialExpiresAt: string | null;
usage: {

View file

@ -0,0 +1,15 @@
import { z } from 'zod';
export const BillingPlanSchema = z.enum(['free', 'starter', 'pro']);
export type BillingPlan = z.infer<typeof BillingPlanSchema>;
export const BillingInfoSchema = z.object({
userEmail: z.string().nullable(),
userId: z.string().nullable(),
subscriptionPlan: BillingPlanSchema.nullable(),
subscriptionStatus: z.string().nullable(),
trialExpiresAt: z.string().nullable(),
sanctionedCredits: z.number(),
availableCredits: z.number(),
});
export type BillingInfo = z.infer<typeof BillingInfoSchema>;

View file

@ -16,4 +16,5 @@ export * as promptBlock from './prompt-block.js';
export * as frontmatter from './frontmatter.js';
export * as bases from './bases.js';
export * as browserControl from './browser-control.js';
export * as billing from './billing.js';
export { PrefixLogger };

View file

@ -17,6 +17,7 @@ import { UserMessageContent } from './message.js';
import { RowboatApiConfig } from './rowboat-account.js';
import { ZListToolkitsResponse } from './composio.js';
import { BrowserStateSchema } from './browser-control.js';
import { BillingInfoSchema } from './billing.js';
// ============================================================================
// Runtime Validation Schemas (Single Source of Truth)
@ -878,15 +879,7 @@ const ipcSchemas = {
// Billing channels
'billing:getInfo': {
req: z.null(),
res: z.object({
userEmail: z.string().nullable(),
userId: z.string().nullable(),
subscriptionPlan: z.string().nullable(),
subscriptionStatus: z.string().nullable(),
trialExpiresAt: z.string().nullable(),
sanctionedCredits: z.number(),
availableCredits: z.number(),
}),
res: BillingInfoSchema,
},
} as const;