diff --git a/src/locales/en.json b/src/locales/en.json index 641ecad..66dd6a6 100644 --- a/src/locales/en.json +++ b/src/locales/en.json @@ -163,11 +163,15 @@ "insufficientBalance": "Insufficient balance. Missing {{missing}} ₽", "trial": { "title": "Free Trial", - "description": "Try our VPN service for free!", + "titlePaid": "Trial Subscription", + "description": "Try our VPN service!", "days": "days", "devices": "devices", - "price": "Activation price", - "activate": "Activate Free Trial", + "price": "Price", + "activate": "Activate Free", + "payAndActivate": "Pay & Activate", + "topUpToActivate": "Top Up Balance", + "insufficientBalance": "Top up your balance to activate", "unavailable": "Trial is not available" }, "connection": { diff --git a/src/locales/ru.json b/src/locales/ru.json index 3fc441d..25f8fbc 100644 --- a/src/locales/ru.json +++ b/src/locales/ru.json @@ -163,11 +163,15 @@ "insufficientBalance": "Недостаточно средств. Не хватает {{missing}} ₽", "trial": { "title": "Бесплатный пробный период", - "description": "Попробуйте наш VPN сервис бесплатно!", + "titlePaid": "Пробная подписка", + "description": "Попробуйте наш VPN сервис!", "days": "дней", "devices": "устройств", - "price": "Стоимость активации", - "activate": "Активировать пробный период", + "price": "Стоимость", + "activate": "Активировать бесплатно", + "payAndActivate": "Оплатить с баланса", + "topUpToActivate": "Пополнить баланс", + "insufficientBalance": "Пополните баланс для активации", "unavailable": "Пробный период недоступен" }, "connection": { diff --git a/src/pages/Dashboard.tsx b/src/pages/Dashboard.tsx index 2dfde26..aad5bb7 100644 --- a/src/pages/Dashboard.tsx +++ b/src/pages/Dashboard.tsx @@ -122,6 +122,7 @@ export default function Dashboard() { setTrialError(null) queryClient.invalidateQueries({ queryKey: ['subscription'] }) queryClient.invalidateQueries({ queryKey: ['trial-info'] }) + queryClient.invalidateQueries({ queryKey: ['balance'] }) refreshUser() }, onError: (error: { response?: { data?: { detail?: string } } }) => { @@ -455,7 +456,9 @@ export default function Dashboard() {

- {t('subscription.trial.title', 'Free Trial')} + {trialInfo.requires_payment + ? t('subscription.trial.titlePaid', 'Trial Subscription') + : t('subscription.trial.title', 'Free Trial')}

{t('subscription.trial.description', 'Try our VPN service for free!')} @@ -467,7 +470,7 @@ export default function Dashboard() {

{t('subscription.trial.days', 'days')}
-
{trialInfo.traffic_limit_gb}
+
{trialInfo.traffic_limit_gb || '∞'}
GB
@@ -477,9 +480,23 @@ export default function Dashboard() {
{trialInfo.requires_payment && trialInfo.price_rubles > 0 && ( -

- {t('subscription.trial.price', 'Activation price')}: {trialInfo.price_rubles.toFixed(2)} ₽ -

+
+
+ {t('subscription.trial.price', 'Activation price')}: + {trialInfo.price_rubles.toFixed(2)} {currencySymbol} +
+
+ {t('balance.currentBalance', 'Your balance')}: + = trialInfo.price_kopeks ? 'text-success-400' : 'text-warning-400'}`}> + {formatAmount(balanceData?.balance_rubles || 0)} {currencySymbol} + +
+ {(balanceData?.balance_kopeks || 0) < trialInfo.price_kopeks && ( +
+ {t('subscription.trial.insufficientBalance', 'Top up your balance to activate')} +
+ )} +
)} {trialError && ( @@ -488,15 +505,33 @@ export default function Dashboard() { )} - + {trialInfo.requires_payment && trialInfo.price_kopeks > 0 ? ( + (balanceData?.balance_kopeks || 0) >= trialInfo.price_kopeks ? ( + + ) : ( + + {t('subscription.trial.topUpToActivate', 'Top Up Balance')} + + ) + ) : ( + + )}