fix: block wheel spin without active subscription

- Add has_subscription to WheelConfig type
- Disable spin button when user has no subscription
- Add noSubscription guard in handleUnifiedSpin handler
- Show warning banner directing user to activate subscription
- Prevent banner stacking (noSubscription takes priority over daily limit)
- Add noSubscription i18n keys for ru, en, zh, fa
This commit is contained in:
Fringg
2026-02-27 00:53:50 +03:00
parent 7e89ccea5c
commit 821e991f51
6 changed files with 38 additions and 18 deletions

View File

@@ -858,7 +858,8 @@
"cannotSpin": "Cannot spin right now",
"insufficientBalance": "Insufficient balance",
"topUpRequired": "Top up your balance to pay for spin",
"starsNotAvailable": "Stars payment not available. Open the app via Telegram."
"starsNotAvailable": "Stars payment not available. Open the app via Telegram.",
"noSubscription": "An active subscription is required to spin the wheel. Activate your subscription first."
},
"payWithStars": "Pay with Stars",
"payWithDays": "Pay with days",

View File

@@ -694,7 +694,8 @@
"cannotSpin": "فعلاً امکان چرخش نیست",
"insufficientBalance": "موجودی کافی نیست",
"topUpRequired": "برای پرداخت شارژ کنید",
"starsNotAvailable": "پرداخت Stars در دسترس نیست. برنامه را از طریق تلگرام باز کنید."
"starsNotAvailable": "پرداخت Stars در دسترس نیست. برنامه را از طریق تلگرام باز کنید.",
"noSubscription": "برای چرخاندن گردونه نیاز به اشتراک فعال دارید. ابتدا اشتراک خود را فعال کنید."
},
"payWithStars": "پرداخت {stars} Stars",
"processingPayment": "در حال پردازش...",

View File

@@ -887,7 +887,8 @@
"cannotSpin": "Сейчас нельзя крутить",
"insufficientBalance": "Недостаточно средств на балансе",
"topUpRequired": "Пополните баланс для оплаты спина",
"starsNotAvailable": "Оплата Stars недоступна. Откройте приложение через Telegram."
"starsNotAvailable": "Оплата Stars недоступна. Откройте приложение через Telegram.",
"noSubscription": "Для вращения колеса необходима активная подписка. Активируйте подписку в разделе «Подписка»."
},
"payWithStars": "Оплатить Stars",
"payWithDays": "Оплатить днями",

View File

@@ -698,7 +698,8 @@
"cannotSpin": "当前无法抽奖",
"insufficientBalance": "余额不足",
"topUpRequired": "请充值以支付抽奖费用",
"starsNotAvailable": "Stars支付不可用。请通过Telegram打开应用。"
"starsNotAvailable": "Stars支付不可用。请通过Telegram打开应用。",
"noSubscription": "需要有效订阅才能转动轮盘。请先激活订阅。"
},
"payWithStars": "支付 {stars} Stars",
"processingPayment": "处理中...",