mirror of
https://github.com/chillpadclub/bedolaga-cabinet.git
synced 2026-07-28 09:33:46 +00:00
@@ -1,6 +1,7 @@
|
||||
import apiClient from './client';
|
||||
import type {
|
||||
Subscription,
|
||||
SubscriptionStatusResponse,
|
||||
RenewalOption,
|
||||
TrafficPackage,
|
||||
TrialInfo,
|
||||
@@ -11,9 +12,9 @@ import type {
|
||||
} from '../types';
|
||||
|
||||
export const subscriptionApi = {
|
||||
// Get current subscription
|
||||
getSubscription: async (): Promise<Subscription> => {
|
||||
const response = await apiClient.get<Subscription>('/cabinet/subscription');
|
||||
// Get current subscription status
|
||||
getSubscription: async (): Promise<SubscriptionStatusResponse> => {
|
||||
const response = await apiClient.get<SubscriptionStatusResponse>('/cabinet/subscription');
|
||||
return response.data;
|
||||
},
|
||||
|
||||
|
||||
@@ -79,11 +79,7 @@ export default function Dashboard() {
|
||||
refetchOnMount: 'always',
|
||||
});
|
||||
|
||||
const {
|
||||
data: subscription,
|
||||
isLoading: subLoading,
|
||||
error: subError,
|
||||
} = useQuery({
|
||||
const { data: subscriptionResponse, isLoading: subLoading } = useQuery({
|
||||
queryKey: ['subscription'],
|
||||
queryFn: subscriptionApi.getSubscription,
|
||||
retry: false,
|
||||
@@ -91,6 +87,9 @@ export default function Dashboard() {
|
||||
refetchOnMount: 'always',
|
||||
});
|
||||
|
||||
// Extract subscription from response (null if no subscription)
|
||||
const subscription = subscriptionResponse?.subscription ?? null;
|
||||
|
||||
const { data: trialInfo, isLoading: trialLoading } = useQuery({
|
||||
queryKey: ['trial-info'],
|
||||
queryFn: subscriptionApi.getTrialInfo,
|
||||
@@ -194,7 +193,8 @@ export default function Dashboard() {
|
||||
// eslint-disable-next-line react-hooks/exhaustive-deps
|
||||
}, [subscription]);
|
||||
|
||||
const hasNoSubscription = !subscription && !subLoading && subError;
|
||||
// User has no subscription if API returns has_subscription: false
|
||||
const hasNoSubscription = subscriptionResponse?.has_subscription === false && !subLoading;
|
||||
|
||||
// Show onboarding for new users after data loads
|
||||
useEffect(() => {
|
||||
|
||||
@@ -138,7 +138,7 @@ export default function Subscription() {
|
||||
is_unlimited: boolean;
|
||||
} | null>(null);
|
||||
|
||||
const { data: subscription, isLoading } = useQuery({
|
||||
const { data: subscriptionResponse, isLoading } = useQuery({
|
||||
queryKey: ['subscription'],
|
||||
queryFn: subscriptionApi.getSubscription,
|
||||
retry: false,
|
||||
@@ -146,6 +146,9 @@ export default function Subscription() {
|
||||
refetchOnMount: 'always',
|
||||
});
|
||||
|
||||
// Extract subscription from response (null if no subscription)
|
||||
const subscription = subscriptionResponse?.subscription ?? null;
|
||||
|
||||
const { data: purchaseOptions, isLoading: optionsLoading } = useQuery({
|
||||
queryKey: ['purchase-options'],
|
||||
queryFn: subscriptionApi.getPurchaseOptions,
|
||||
|
||||
@@ -86,6 +86,12 @@ export interface Subscription {
|
||||
tariff_name?: string;
|
||||
}
|
||||
|
||||
// Response wrapper for subscription status endpoint
|
||||
export interface SubscriptionStatusResponse {
|
||||
has_subscription: boolean;
|
||||
subscription: Subscription | null;
|
||||
}
|
||||
|
||||
// Device types
|
||||
export interface Device {
|
||||
hwid: string;
|
||||
|
||||
Reference in New Issue
Block a user