diff --git a/src/locales/en.json b/src/locales/en.json index 41c7c93..81f4f61 100644 --- a/src/locales/en.json +++ b/src/locales/en.json @@ -5103,6 +5103,7 @@ "subscriptions": { "buy": "Buy subscription", "buyAnother": "Buy another subscription", + "browsePlans": "View plans and subscribe", "empty": "You have no subscriptions yet", "emptyDesc": "Choose a tariff to get started", "title": "My subscriptions" diff --git a/src/locales/fa.json b/src/locales/fa.json index 00ef8c1..c471622 100644 --- a/src/locales/fa.json +++ b/src/locales/fa.json @@ -4737,6 +4737,7 @@ "subscriptions": { "buy": "خرید اشتراک", "buyAnother": "خرید اشتراک دیگر", + "browsePlans": "مشاهده تعرفه‌ها و خرید اشتراک", "empty": "هنوز اشتراکی ندارید", "emptyDesc": "برای شروع تعرفه‌ای انتخاب کنید", "title": "اشتراک‌های من" diff --git a/src/locales/ru.json b/src/locales/ru.json index d7bd867..3fefdf8 100644 --- a/src/locales/ru.json +++ b/src/locales/ru.json @@ -5665,6 +5665,7 @@ "subscriptions": { "buy": "Купить подписку", "buyAnother": "Купить ещё подписку", + "browsePlans": "Посмотреть тарифы и купить подписку", "empty": "У вас пока нет подписок", "emptyDesc": "Выберите тариф, чтобы начать пользоваться сервисом", "title": "Мои подписки" diff --git a/src/locales/zh.json b/src/locales/zh.json index 9143769..8e59695 100644 --- a/src/locales/zh.json +++ b/src/locales/zh.json @@ -4736,6 +4736,7 @@ "subscriptions": { "buy": "购买订阅", "buyAnother": "再购买一个订阅", + "browsePlans": "查看套餐并订阅", "empty": "您还没有订阅", "emptyDesc": "选择套餐以开始使用", "title": "我的订阅" diff --git a/src/pages/Dashboard.tsx b/src/pages/Dashboard.tsx index 18db455..c5c87ed 100644 --- a/src/pages/Dashboard.tsx +++ b/src/pages/Dashboard.tsx @@ -198,6 +198,12 @@ export default function Dashboard() { ? multiSubData !== undefined && (multiSubData.subscriptions?.length ?? 0) === 0 : subscriptionResponse?.has_subscription === false && !subLoading; + // Есть ли НАСТОЯЩАЯ (платная, не триал) живая подписка — от этого зависит CTA: + // «+ Купить ещё» только при наличии платной; иначе явная «Посмотреть тарифы». + const hasActivePaid = (multiSubData?.subscriptions ?? []).some( + (s) => !s.is_trial && (s.status === 'active' || s.status === 'limited'), + ); + // Show onboarding for new users after data loads useEffect(() => { if (!isOnboardingCompleted && !subLoading && !refLoading && !blockingType) { @@ -299,12 +305,23 @@ export default function Dashboard() { {t('dashboard.showAll', 'Показать все')} ({multiSubData.subscriptions.length}) )} - - + {t('subscriptions.buyAnother', 'Купить ещё тариф')} - + {hasActivePaid ? ( + + +{' '} + {t('subscriptions.buyAnother', 'Купить ещё тариф')} + + ) : ( + + +{' '} + {t('subscriptions.browsePlans', 'Посмотреть тарифы и купить подписку')} + + )} )} @@ -360,8 +377,9 @@ export default function Dashboard() { (вход по умолчанию) юзер оставался заперт (Telegram-баг #605056/#605063). */} + +{' '} {t('subscriptions.browsePlans', 'Посмотреть тарифы и купить подписку')} diff --git a/src/pages/Subscriptions.tsx b/src/pages/Subscriptions.tsx index 67b64e8..03d33b4 100644 --- a/src/pages/Subscriptions.tsx +++ b/src/pages/Subscriptions.tsx @@ -62,6 +62,12 @@ export default function Subscriptions() { const subscriptions = data?.subscriptions ?? []; const isMultiTariff = data?.multi_tariff_enabled ?? false; const hasNoSubscriptions = !isLoading && subscriptions.length === 0; + // Есть ли хотя бы одна НАСТОЯЩАЯ (платная, не триал) живая подписка. От этого + // зависит CTA: «+ Купить ещё» — только если уже есть платная; иначе показываем + // явную «Посмотреть тарифы и купить подписку» (триал/истёкшие — это ещё не покупка). + const hasActivePaid = subscriptions.some( + (s) => !s.is_trial && (s.status === 'active' || s.status === 'limited'), + ); // Если у юзера нет подписок — проверяем доступность триала, иначе // (в multi-tariff) ему вообще негде увидеть оффер. @@ -107,7 +113,8 @@ export default function Subscriptions() {

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

- {!isLoading && subscriptions.length > 0 && ( + {/* «+ Купить ещё» — только если уже есть платная активная подписка */} + {!isLoading && hasActivePaid && ( + )} + {/* Loading */} {isLoading && (
@@ -152,9 +171,9 @@ export default function Subscriptions() { (Telegram-баг #605056/#605063). */}