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 && (
)}
{/* Empty state */}
{!isLoading && subscriptions.length === 0 && (
navigate('/subscription/purchase')} />
)}
{/* Subscription grid */}
{subscriptions.length > 0 && (
{subscriptions.map((sub) => (
navigate(`/subscriptions/${sub.id}`)}
/>
))}
)}
);
}