import { useQuery } from '@tanstack/react-query'; import { Navigate, 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) { return ; } return (
{/* Header */}

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

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