diff --git a/src/locales/en.json b/src/locales/en.json index c66fe28..1b3ec48 100644 --- a/src/locales/en.json +++ b/src/locales/en.json @@ -727,7 +727,8 @@ "checkIntervalDesc": "How often to check for overdue tickets (30-600 seconds)", "reminderCooldown": "Reminder interval (minutes)", "reminderCooldownDesc": "Minimum time between reminders (1-120 minutes)", - "settingsUpdateError": "Error saving settings" + "settingsUpdateError": "Error saving settings", + "copyTelegramId": "Click to copy Telegram ID" }, "tariffs": { "title": "Tariff Management", diff --git a/src/locales/ru.json b/src/locales/ru.json index 73b6ffe..94422cc 100644 --- a/src/locales/ru.json +++ b/src/locales/ru.json @@ -727,7 +727,8 @@ "checkIntervalDesc": "Как часто проверять просроченные тикеты (30-600 секунд)", "reminderCooldown": "Интервал напоминаний (минуты)", "reminderCooldownDesc": "Минимальное время между напоминаниями (1-120 минут)", - "settingsUpdateError": "Ошибка сохранения настроек" + "settingsUpdateError": "Ошибка сохранения настроек", + "copyTelegramId": "Нажмите чтобы скопировать Telegram ID" }, "tariffs": { "title": "Управление тарифами", diff --git a/src/pages/AdminTickets.tsx b/src/pages/AdminTickets.tsx index 1ca8c7c..83f2d9c 100644 --- a/src/pages/AdminTickets.tsx +++ b/src/pages/AdminTickets.tsx @@ -155,10 +155,21 @@ export default function AdminTickets() { const formatUser = (ticket: AdminTicket | AdminTicketDetail) => { if (!ticket.user) return 'Unknown' - const { first_name, last_name, username, telegram_id } = ticket.user + const { first_name, last_name, username } = ticket.user if (first_name || last_name) return `${first_name || ''} ${last_name || ''}`.trim() if (username) return `@${username}` - return `ID: ${telegram_id}` + return 'User' + } + + const copyToClipboard = (text: string) => { + navigator.clipboard.writeText(text).catch(() => { + const textarea = document.createElement('textarea') + textarea.value = text + document.body.appendChild(textarea) + textarea.select() + document.execCommand('copy') + document.body.removeChild(textarea) + }) } return ( @@ -248,7 +259,17 @@ export default function AdminTickets() {