Files
sub2api/frontend/src/api/subscriptions.ts
2025-12-18 13:50:39 +08:00

73 lines
2.0 KiB
TypeScript

/**
* User Subscription API
* API for regular users to view their own subscriptions and progress
*/
import { apiClient } from './client';
import type { UserSubscription, SubscriptionProgress } from '@/types';
/**
* Subscription summary for user dashboard
*/
export interface SubscriptionSummary {
active_count: number;
subscriptions: Array<{
id: number;
group_name: string;
status: string;
daily_progress: number | null;
weekly_progress: number | null;
monthly_progress: number | null;
expires_at: string | null;
days_remaining: number | null;
}>;
}
/**
* Get list of current user's subscriptions
*/
export async function getMySubscriptions(): Promise<UserSubscription[]> {
const response = await apiClient.get<UserSubscription[]>('/subscriptions');
return response.data;
}
/**
* Get current user's active subscriptions
*/
export async function getActiveSubscriptions(): Promise<UserSubscription[]> {
const response = await apiClient.get<UserSubscription[]>('/subscriptions/active');
return response.data;
}
/**
* Get progress for all user's active subscriptions
*/
export async function getSubscriptionsProgress(): Promise<SubscriptionProgress[]> {
const response = await apiClient.get<SubscriptionProgress[]>('/subscriptions/progress');
return response.data;
}
/**
* Get subscription summary for dashboard display
*/
export async function getSubscriptionSummary(): Promise<SubscriptionSummary> {
const response = await apiClient.get<SubscriptionSummary>('/subscriptions/summary');
return response.data;
}
/**
* Get progress for a specific subscription
*/
export async function getSubscriptionProgress(subscriptionId: number): Promise<SubscriptionProgress> {
const response = await apiClient.get<SubscriptionProgress>(`/subscriptions/${subscriptionId}/progress`);
return response.data;
}
export default {
getMySubscriptions,
getActiveSubscriptions,
getSubscriptionsProgress,
getSubscriptionSummary,
getSubscriptionProgress,
};