feat: add promo group and promo offer management to AdminUserDetail

- Info tab: promo group card with inline dropdown to change/remove group
- Balance tab: active promo offer display with deactivate button
- Balance tab: send promo offer form (discount %, valid hours)
- Add deactivateDiscount API method to promocodesApi
- Add locale keys for ru/en/zh/fa
- Fix race condition in subscription create (stale state read)
- Fix unhandled promise in handleInlineConfirm
- Remove unused legacy adminUsers block from ru.json
This commit is contained in:
Fringg
2026-02-07 08:10:44 +03:00
parent de28463b79
commit 8bd3c007bc
6 changed files with 295 additions and 173 deletions

View File

@@ -1585,6 +1585,22 @@
"subscription": "• خرید اشتراک ممنوع",
"reason": "دلیل"
},
"promoGroup": "گروه تبلیغاتی",
"noPromoGroup": "تنظیم نشده",
"changePromoGroup": "تغییر",
"selectPromoGroup": "انتخاب گروه",
"removePromoGroup": "حذف",
"activePromoOffer": "پیشنهاد فعال",
"discount": "تخفیف",
"source": "منبع",
"expiresAt": "انقضا",
"deactivateOffer": "غیرفعال کردن",
"sendOffer": "ارسال پیشنهاد",
"discountPercent": "تخفیف %",
"validHours": "مدت اعتبار (ساعت)",
"offerSent": "پیشنهاد ارسال شد",
"offerSendError": "خطا در ارسال پیشنهاد",
"offerDeactivated": "پیشنهاد غیرفعال شد",
"subscription": {
"current": "اشتراک فعلی",
"tariff": "تعرفه",