Files
sub2api/frontend/src/api/subscriptions.ts

77 lines
2.0 KiB
TypeScript
Raw Normal View History

2025-12-18 13:50:39 +08:00
/**
* User Subscription API
* API for regular users to view their own subscriptions and progress
*/
import { apiClient } from './client'
import type { UserSubscription, SubscriptionProgress } from '@/types'
2025-12-18 13:50:39 +08:00
/**
* Subscription summary for user dashboard
*/
export interface SubscriptionSummary {
active_count: number
2025-12-18 13:50:39 +08:00
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
}>
2025-12-18 13:50:39 +08:00
}
/**
* Get list of current user's subscriptions
*/
export async function getMySubscriptions(): Promise<UserSubscription[]> {
const response = await apiClient.get<UserSubscription[]>('/subscriptions')
return response.data
2025-12-18 13:50:39 +08:00
}
/**
* Get current user's active subscriptions
*/
export async function getActiveSubscriptions(): Promise<UserSubscription[]> {
const response = await apiClient.get<UserSubscription[]>('/subscriptions/active')
return response.data
2025-12-18 13:50:39 +08:00
}
/**
* 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
2025-12-18 13:50:39 +08:00
}
/**
* Get subscription summary for dashboard display
*/
export async function getSubscriptionSummary(): Promise<SubscriptionSummary> {
const response = await apiClient.get<SubscriptionSummary>('/subscriptions/summary')
return response.data
2025-12-18 13:50:39 +08:00
}
/**
* 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
2025-12-18 13:50:39 +08:00
}
export default {
getMySubscriptions,
getActiveSubscriptions,
getSubscriptionsProgress,
getSubscriptionSummary,
getSubscriptionProgress
}