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