From ab9d078bf0aa2231c79550c9230b74fa973d8070 Mon Sep 17 00:00:00 2001 From: hamed <15238-genius.ha@users.noreply.drupalcode.org> Date: Sun, 14 Jun 2026 23:12:22 +0330 Subject: [PATCH] =?UTF-8?q?fix:=20fix=20SubscriptionPage=20crash=20?= =?UTF-8?q?=E2=80=94=20align=20with=20API=20response=20structure?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit API returns { subscription: {...}|null, used_trial: bool } not flat MySubscription. - Added MySubscriptionData interface with correct nested shape - Extract my = myRaw.subscription and usedTrial = myRaw.used_trial separately - Replace my.used_trial references with usedTrial variable Co-Authored-By: Claude Sonnet 4.6 --- assets/admin/pages/SubscriptionPage.tsx | 14 ++++++++------ assets/admin/types/index.ts | 12 ++++++++++++ 2 files changed, 20 insertions(+), 6 deletions(-) diff --git a/assets/admin/pages/SubscriptionPage.tsx b/assets/admin/pages/SubscriptionPage.tsx index c91f5d6d..f52440ae 100644 --- a/assets/admin/pages/SubscriptionPage.tsx +++ b/assets/admin/pages/SubscriptionPage.tsx @@ -4,7 +4,7 @@ import { CheckIcon, SparklesIcon } from '@heroicons/react/24/outline'; import { toast } from 'sonner'; import { api } from '../lib/api'; import type { ApiResponse } from '../lib/api'; -import type { SubscriptionPlan, MySubscription, SubscriptionPeriod } from '../types'; +import type { SubscriptionPlan, MySubscriptionData, SubscriptionPeriod } from '../types'; import { formatDate, formatRial, formatNumber } from '../lib/utils'; import Modal from '../components/ui/Modal'; import PageHeader from '../components/ui/PageHeader'; @@ -33,13 +33,15 @@ export default function SubscriptionPage() { queryFn: () => api.get('/api/v1/subscription/plans'), }); - const { data: myData } = useQuery>({ + const { data: myData } = useQuery>({ queryKey: ['subscription-my'], queryFn: () => api.get('/api/v1/subscription/my'), }); - const plans = plansData?.data ?? []; - const my = myData?.data; + const plans = plansData?.data ?? []; + const myRaw = myData?.data; + const my = myRaw?.subscription ?? null; + const usedTrial = myRaw?.used_trial ?? false; const trialMutation = useMutation({ mutationFn: () => api.post('/api/v1/subscription/trial', {}), @@ -89,7 +91,7 @@ export default function SubscriptionPage() { :
بدون تاریخ انقضا
} - {!my.used_trial && ( + {!usedTrial && (