77 lines
2.0 KiB
TypeScript
77 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
|
|
}
|