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

@@ -1886,6 +1886,22 @@
"title": "Actions",
"areYouSure": "Are you sure?"
},
"promoGroup": "Promo group",
"noPromoGroup": "Not set",
"changePromoGroup": "Change",
"selectPromoGroup": "Select group",
"removePromoGroup": "Remove",
"activePromoOffer": "Active promo offer",
"discount": "Discount",
"source": "Source",
"expiresAt": "Expires",
"deactivateOffer": "Deactivate",
"sendOffer": "Send offer",
"discountPercent": "Discount %",
"validHours": "Valid hours",
"offerSent": "Offer sent",
"offerSendError": "Failed to send offer",
"offerDeactivated": "Offer deactivated",
"subscription": {
"current": "Current subscription",
"tariff": "Tariff",