feat: support disabled daily subscription status in cabinet UI

- Show SubscriptionCardExpired for disabled daily subscriptions
- Use togglePause() API for resume instead of renewSubscription()
- Add "Suspended" status badge and balance query invalidation
- Add dashboard.suspended and subscription.pause.suspended translations (ru, en, zh, fa)
This commit is contained in:
Fringg
2026-03-08 21:35:00 +03:00
parent 9aae9cc0e6
commit 7940410d7d
7 changed files with 269 additions and 36 deletions

View File

@@ -254,11 +254,20 @@
"trialSubtitle": "Trial period ended",
"paidSubtitle": "Subscription has expired",
"renew": "Renew Subscription",
"quickRenew": "Quick Renew",
"insufficientFunds": "Insufficient balance",
"renewError": "Renewal error, try again",
"topUp": "Top up balance",
"balance": "Balance",
"tariffs": "Tariffs",
"traffic": "Traffic",
"devices": "Devices",
"expiredDate": "Expired"
},
"suspended": {
"title": "Subscription Suspended",
"resume": "Resume"
},
"trialOffer": {
"freeTitle": "Free Trial Available",
"paidTitle": "Trial Subscription",
@@ -446,6 +455,7 @@
"pause": {
"title": "Subscription Pause",
"paused": "Paused",
"suspended": "Suspended (insufficient funds)",
"active": "Active",
"pauseBtn": "Pause",
"resumeBtn": "Resume",

View File

@@ -219,7 +219,27 @@
"noActiveSubscription": "اشتراک فعال ندارید",
"devicesUsed": "دستگاه‌ها: {{used}} از {{total}}",
"trafficUsed": "ترافیک: {{used}} از {{total}} گیگ",
"unlimitedTraffic": "ترافیک نامحدود"
"unlimitedTraffic": "ترافیک نامحدود",
"expired": {
"title": "اشتراک منقضی شده",
"trialTitle": "دوره آزمایشی منقضی شده",
"trialSubtitle": "دوره آزمایشی پایان یافته",
"paidSubtitle": "اشتراک منقضی شده",
"renew": "تمدید اشتراک",
"quickRenew": "تمدید سریع",
"insufficientFunds": "موجودی ناکافی",
"renewError": "خطا در تمدید، دوباره تلاش کنید",
"topUp": "شارژ موجودی",
"balance": "موجودی",
"tariffs": "تعرفه‌ها",
"traffic": "ترافیک",
"devices": "دستگاه‌ها",
"expiredDate": "منقضی شده"
},
"suspended": {
"title": "اشتراک معلق شده",
"resume": "از سرگیری"
}
},
"subscription": {
"title": "اشتراک",
@@ -428,6 +448,7 @@
"nextCharge": "تا کسر بعدی",
"pauseBtn": "توقف",
"paused": "متوقف شده",
"suspended": "معلق شده (موجودی ناکافی)",
"pausedDescription": "کسر متوقف شد. اشتراک فعال خواهد بود تا",
"pausedInfo": "اشتراک متوقف شده",
"resumeBtn": "ادامه",

View File

@@ -266,11 +266,20 @@
"trialSubtitle": "Пробный период завершён",
"paidSubtitle": "Срок действия закончился",
"renew": "Продлить подписку",
"quickRenew": "Продлить",
"topUp": "Пополнить баланс",
"balance": "Баланс",
"insufficientFunds": "Недостаточно средств на балансе",
"renewError": "Ошибка продления, попробуйте ещё раз",
"tariffs": "Тарифы",
"traffic": "Трафик",
"devices": "Устройства",
"expiredDate": "Истекла"
},
"suspended": {
"title": "Подписка приостановлена",
"resume": "Возобновить"
},
"trialOffer": {
"freeTitle": "Бесплатный пробный период",
"paidTitle": "Пробная подписка",
@@ -469,6 +478,7 @@
"pause": {
"title": "Пауза подписки",
"paused": "На паузе",
"suspended": "Приостановлена (недостаточно средств)",
"active": "Активна",
"pauseBtn": "Приостановить",
"resumeBtn": "Возобновить",

View File

@@ -219,7 +219,27 @@
"noActiveSubscription": "无有效订阅",
"devicesUsed": "设备:{{used}} / {{total}}",
"trafficUsed": "流量:{{used}} / {{total}} GB",
"unlimitedTraffic": "无限流量"
"unlimitedTraffic": "无限流量",
"expired": {
"title": "订阅已过期",
"trialTitle": "试用已过期",
"trialSubtitle": "试用期已结束",
"paidSubtitle": "订阅已到期",
"renew": "续订",
"quickRenew": "快速续订",
"insufficientFunds": "余额不足",
"renewError": "续订失败,请重试",
"topUp": "充值",
"balance": "余额",
"tariffs": "套餐",
"traffic": "流量",
"devices": "设备",
"expiredDate": "过期时间"
},
"suspended": {
"title": "订阅已暂停",
"resume": "恢复"
}
},
"subscription": {
"title": "订阅",
@@ -428,6 +448,7 @@
"nextCharge": "距下次扣费",
"pauseBtn": "暂停",
"paused": "已暂停",
"suspended": "已暂停(余额不足)",
"pausedDescription": "扣费已停止。订阅有效期至",
"pausedInfo": "订阅已暂停",
"resumeBtn": "恢复",