diff --git a/src/api/adminBroadcasts.ts b/src/api/adminBroadcasts.ts index 26760c1..d5360b2 100644 --- a/src/api/adminBroadcasts.ts +++ b/src/api/adminBroadcasts.ts @@ -90,6 +90,7 @@ export interface Broadcast { total_count: number; sent_count: number; failed_count: number; + blocked_count: number; status: | 'queued' | 'in_progress' diff --git a/src/locales/en.json b/src/locales/en.json index 23174df..864a271 100644 --- a/src/locales/en.json +++ b/src/locales/en.json @@ -1196,6 +1196,8 @@ "total": "Total", "sent": "Sent", "failed": "Failed", + "blocked": "Blocked", + "blockedShort": "blocked", "filter": "Filter", "message": "Message", "unknownAdmin": "Unknown", diff --git a/src/locales/fa.json b/src/locales/fa.json index 5576ba7..f509303 100644 --- a/src/locales/fa.json +++ b/src/locales/fa.json @@ -917,6 +917,8 @@ "total": "کل", "sent": "ارسال شده", "failed": "ناموفق", + "blocked": "مسدود شده", + "blockedShort": "مسدود", "filter": "فیلتر", "message": "پیام", "unknownAdmin": "نامعلوم", diff --git a/src/locales/ru.json b/src/locales/ru.json index 1bec558..ee88b1e 100644 --- a/src/locales/ru.json +++ b/src/locales/ru.json @@ -1221,6 +1221,8 @@ "total": "Всего", "sent": "Отправлено", "failed": "Ошибки", + "blocked": "Заблокировали", + "blockedShort": "заблок.", "filter": "Фильтр", "message": "Сообщение", "unknownAdmin": "Неизвестный админ", diff --git a/src/locales/zh.json b/src/locales/zh.json index 4a5395a..6110478 100644 --- a/src/locales/zh.json +++ b/src/locales/zh.json @@ -969,6 +969,8 @@ "total": "总计", "sent": "已发送", "failed": "失败", + "blocked": "已屏蔽", + "blockedShort": "屏蔽", "filter": "筛选", "message": "消息", "unknownAdmin": "未知", diff --git a/src/pages/AdminBroadcastDetail.tsx b/src/pages/AdminBroadcastDetail.tsx index 3a715d4..1feb385 100644 --- a/src/pages/AdminBroadcastDetail.tsx +++ b/src/pages/AdminBroadcastDetail.tsx @@ -167,10 +167,7 @@ export default function AdminBroadcastDetail() { queryKey: ['admin', 'broadcasts', 'detail', broadcastId], queryFn: async () => { if (!broadcastId) throw new Error('Invalid broadcast ID'); - const response = await adminBroadcastsApi.list(100, 0); - const found = response.items.find((b) => b.id === broadcastId); - if (!found) throw new Error('Broadcast not found'); - return found; + return adminBroadcastsApi.get(broadcastId); }, enabled: !!broadcastId && !isNaN(broadcastId), refetchInterval: (query) => { @@ -266,7 +263,7 @@ export default function AdminBroadcastDetail() { )} {/* Stats */} -
{broadcast.total_count}
{t('admin.broadcasts.total')}
@@ -275,6 +272,10 @@ export default function AdminBroadcastDetail() {{broadcast.sent_count}
{t('admin.broadcasts.sent')}
{broadcast.blocked_count}
+{t('admin.broadcasts.blocked')}
+{broadcast.failed_count}
{t('admin.broadcasts.failed')}
diff --git a/src/pages/AdminBroadcasts.tsx b/src/pages/AdminBroadcasts.tsx index 89e7958..131635f 100644 --- a/src/pages/AdminBroadcasts.tsx +++ b/src/pages/AdminBroadcasts.tsx @@ -217,6 +217,12 @@ export default function AdminBroadcasts() { {broadcast.target_type} {broadcast.sent_count}/{broadcast.total_count} + {broadcast.blocked_count > 0 && ( + + {' '} + ({broadcast.blocked_count} {t('admin.broadcasts.blockedShort')}) + + )} {new Date(broadcast.created_at).toLocaleDateString()}