import { useQuery } from '@tanstack/react-query'; import { useNavigate } from 'react-router'; import { useTranslation } from 'react-i18next'; import { subscriptionApi } from '../api/subscription'; import { useTheme } from '../hooks/useTheme'; import { getGlassColors } from '../utils/glassTheme'; import SubscriptionListCard from '../components/subscription/SubscriptionListCard'; function EmptyState({ onBuy }: { onBuy: () => void }) { const { t } = useTranslation(); const { isDark } = useTheme(); const g = getGlassColors(isDark); return (

{t('subscriptions.empty', 'Нет подписок')}

{t('subscriptions.emptyDesc', 'У вас пока нет активных подписок')}

); } export default function Subscriptions() { const { t } = useTranslation(); const navigate = useNavigate(); const { isDark } = useTheme(); const g = getGlassColors(isDark); const { data, isLoading } = useQuery({ queryKey: ['subscriptions-list'], queryFn: () => subscriptionApi.getSubscriptions(), staleTime: 30_000, refetchOnMount: 'always', }); const subscriptions = data?.subscriptions ?? []; const isMultiTariff = data?.multi_tariff_enabled ?? false; // Single-tariff mode with one subscription: skip list, go directly to detail if (data && !isMultiTariff && subscriptions.length === 1) { navigate(`/subscriptions/${subscriptions[0].id}`, { replace: true }); return null; } return (

{t('subscriptions.title', 'Мои подписки')}

{isLoading && (
{[1, 2].map((i) => (
))}
)} {!isLoading && subscriptions.length === 0 && ( navigate('/subscription/purchase')} /> )} {subscriptions.map((sub) => ( navigate(`/subscriptions/${sub.id}`)} /> ))} {!isLoading && subscriptions.length > 0 && ( )}
); }