Merge pull request #114 from BEDOLAGA-DEV/dev

Dev
This commit is contained in:
Egor
2026-01-29 01:42:59 +03:00
committed by GitHub
4 changed files with 20 additions and 10 deletions

View File

@@ -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;
},

View File

@@ -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(() => {

View File

@@ -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,

View File

@@ -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;