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