mirror of
https://github.com/chillpadclub/bedolaga-cabinet.git
synced 2026-07-30 02:23:47 +00:00
feat: add web campaign links — capture, auth integration, bonus UI
- Add campaign.ts utility (capture from URL, localStorage with TTL, validation) - Pass campaign_slug in all auth API methods (telegram, widget, email, oauth) - Consume slug in auth store login methods, set pendingCampaignBonus state - Add CampaignBonusNotifier component (toast on bonus, mounted in AppShell) - Show web_link alongside bot deep_link in AdminCampaignStats - Add CampaignBonusInfo type with union bonus_type - Fix VerifyEmail: ref guard against StrictMode double-fire, setTimeout cleanup - Fix AdminCampaignStats: setTimeout refs with cleanup, i18n-aware locale - Wrap all localStorage access in try/catch (Safari private browsing safety) - Add campaignBonus translations (ru/en/fa/zh)
This commit is contained in:
@@ -70,6 +70,12 @@
|
||||
"newUserReply": "User replied in ticket: {{title}}",
|
||||
"newUserReplyTitle": "User Reply"
|
||||
},
|
||||
"campaignBonus": {
|
||||
"title": "Bonus activated!",
|
||||
"balance": "You received {{amount}} RUB from campaign \"{{name}}\"",
|
||||
"subscription": "You received a {{days}}-day subscription from campaign \"{{name}}\"",
|
||||
"tariff": "You received tariff \"{{tariff}}\" from campaign \"{{name}}\""
|
||||
},
|
||||
"wsNotifications": {
|
||||
"balance": {
|
||||
"topupTitle": "Balance topped up",
|
||||
@@ -1684,6 +1690,8 @@
|
||||
"inactive": "Inactive",
|
||||
"copy": "Copy",
|
||||
"copied": "Copied!",
|
||||
"botLink": "Bot link",
|
||||
"webLink": "Web link",
|
||||
"users": "Users",
|
||||
"noUsers": "No registered users",
|
||||
"paid": "Paid",
|
||||
|
||||
@@ -64,6 +64,12 @@
|
||||
"newUserReply": "کاربر در تیکت پاسخ داد: {{title}}",
|
||||
"newUserReplyTitle": "پاسخ کاربر"
|
||||
},
|
||||
"campaignBonus": {
|
||||
"title": "!پاداش فعال شد",
|
||||
"balance": "شما {{amount}} روبل از کمپین «{{name}}» دریافت کردید",
|
||||
"subscription": "شما اشتراک {{days}} روزه از کمپین «{{name}}» دریافت کردید",
|
||||
"tariff": "شما تعرفه «{{tariff}}» از کمپین «{{name}}» دریافت کردید"
|
||||
},
|
||||
"wsNotifications": {
|
||||
"balance": {
|
||||
"topupTitle": "موجودی شارژ شد",
|
||||
@@ -1421,6 +1427,8 @@
|
||||
"inactive": "غیرفعال",
|
||||
"copy": "کپی",
|
||||
"copied": "کپی شد!",
|
||||
"botLink": "لینک ربات",
|
||||
"webLink": "لینک وب",
|
||||
"users": "کاربران",
|
||||
"noUsers": "کاربر ثبتنام شدهای وجود ندارد",
|
||||
"paid": "پرداخت کرده",
|
||||
|
||||
@@ -73,6 +73,12 @@
|
||||
"newUserReply": "Ответ пользователя в тикете: {{title}}",
|
||||
"newUserReplyTitle": "Ответ пользователя"
|
||||
},
|
||||
"campaignBonus": {
|
||||
"title": "Бонус активирован!",
|
||||
"balance": "Вам начислено {{amount}} руб. по акции «{{name}}»",
|
||||
"subscription": "Вам предоставлена подписка на {{days}} дн. по акции «{{name}}»",
|
||||
"tariff": "Вам предоставлен тариф «{{tariff}}» по акции «{{name}}»"
|
||||
},
|
||||
"wsNotifications": {
|
||||
"balance": {
|
||||
"topupTitle": "Баланс пополнен",
|
||||
@@ -2206,6 +2212,8 @@
|
||||
"inactive": "Неактивна",
|
||||
"copy": "Копировать",
|
||||
"copied": "Скопировано!",
|
||||
"botLink": "Ссылка для бота",
|
||||
"webLink": "Веб-ссылка",
|
||||
"users": "Пользователи",
|
||||
"noUsers": "Нет зарегистрированных пользователей",
|
||||
"paid": "Платил",
|
||||
|
||||
@@ -64,6 +64,12 @@
|
||||
"newUserReply": "用户回复了工单:{{title}}",
|
||||
"newUserReplyTitle": "用户回复"
|
||||
},
|
||||
"campaignBonus": {
|
||||
"title": "奖励已激活!",
|
||||
"balance": "您从活动「{{name}}」获得了 {{amount}} 卢布",
|
||||
"subscription": "您从活动「{{name}}」获得了 {{days}} 天订阅",
|
||||
"tariff": "您从活动「{{name}}」获得了套餐「{{tariff}}」"
|
||||
},
|
||||
"wsNotifications": {
|
||||
"balance": {
|
||||
"topupTitle": "余额已充值",
|
||||
@@ -1420,6 +1426,8 @@
|
||||
"inactive": "未激活",
|
||||
"copy": "复制",
|
||||
"copied": "已复制!",
|
||||
"botLink": "机器人链接",
|
||||
"webLink": "网页链接",
|
||||
"users": "用户",
|
||||
"noUsers": "没有注册用户",
|
||||
"paid": "已付费",
|
||||
|
||||
Reference in New Issue
Block a user