feat: add multi-channel subscription blocking UI and admin management

- Channel subscription blocking screen with per-channel status display
- Safe URL handling with protocol validation (no open redirect)
- Race-condition-safe subscription check with useRef guard
- Admin channel management page with create, toggle, delete
- Error handlers on all admin mutations with haptic feedback
- Proper type guard for channel subscription error detection
- Accessibility: aria-labels on icon-only buttons
- Localization: en, ru, zh, fa translations
This commit is contained in:
Fringg
2026-02-24 02:50:52 +03:00
parent 8ea9a1d6a0
commit a767fe96d3
12 changed files with 758 additions and 113 deletions

View File

@@ -741,7 +741,8 @@
"updates": "به‌روزرسانی‌ها",
"pinnedMessages": "پیام‌های سنجاق‌شده",
"partners": "شرکا",
"withdrawals": "برداشت‌ها"
"withdrawals": "برداشت‌ها",
"channelSubscriptions": "کانال‌های اجباری"
},
"panel": {
"title": "پنل مدیریت",
@@ -768,7 +769,8 @@
"updatesDesc": "نسخه‌های ربات و کابینت",
"pinnedMessagesDesc": "مدیریت پیام‌های سنجاق‌شده",
"partnersDesc": "مدیریت درخواست‌های شراکت و کمیسیون‌ها",
"withdrawalsDesc": "بررسی و پردازش درخواست‌های برداشت"
"withdrawalsDesc": "بررسی و پردازش درخواست‌های برداشت",
"channelSubscriptionsDesc": "مدیریت اشتراک‌های اجباری کانال"
},
"trafficUsage": {
"title": "مصرف ترافیک",
@@ -1000,6 +1002,28 @@
"editMessage": "Edit",
"cantDeleteActive": "Cannot delete active message"
},
"channelSubscriptions": {
"title": "کانال‌های اجباری",
"subtitle": "کاربران باید در این کانال‌ها عضو شوند",
"addChannel": "افزودن کانال",
"empty": "کانالی تنظیم نشده",
"enabled": "فعال",
"disabled": "غیرفعال",
"enable": "فعال‌سازی",
"disable": "غیرفعال‌سازی",
"delete": "حذف",
"deleteConfirm": "این کانال حذف شود؟",
"sortOrder": "ترتیب",
"form": {
"title": "نام نمایشی",
"channelId": "شناسه کانال",
"channelIdHint": "@username یا -100XXXXXXXXXX",
"channelLink": "لینک کانال",
"channelLinkHint": "https://t.me/channel",
"submit": "افزودن",
"cancel": "لغو"
}
},
"payments": {
"title": "تأیید پرداخت",
"description": "پرداخت‌های معلق در ۲۴ ساعت گذشته",
@@ -2759,7 +2783,9 @@
"waitSeconds": "{{seconds}} ثانیه صبر کنید",
"hint": "پس از عضویت دکمه بررسی را بزنید",
"notSubscribed": "شما هنوز در کانال عضو نشده‌اید",
"checkError": "بررسی ناموفق بود. لطفاً بعداً دوباره امتحان کنید."
"checkError": "بررسی ناموفق بود. لطفاً بعداً دوباره امتحان کنید.",
"subscribed": "عضو شده",
"channelsRequired": "برای ادامه در همه کانال‌های زیر عضو شوید"
},
"blacklisted": {
"title": "دسترسی ممنوع",