diff --git a/web/app/dashboard/conversation-monitor/_components/detail.tsx b/web/app/dashboard/conversation-monitor/_components/detail.tsx index f98de41..6890862 100644 --- a/web/app/dashboard/conversation-monitor/_components/detail.tsx +++ b/web/app/dashboard/conversation-monitor/_components/detail.tsx @@ -33,7 +33,7 @@ type ConversationDetailDialogProps = { saving: boolean; item: AdminConversation | null; detail: AdminConversationDetail | null; - messages: AdminMessage[]; + messages?: AdminMessage[] | null; /** 是否还有更早消息(cursor 分页) */ messagesHasMore?: boolean; loadingMoreMessages?: boolean; @@ -139,7 +139,7 @@ export function ConversationDetailDialog({ saving, item, detail, - messages, + messages: rawMessages, messagesHasMore = false, loadingMoreMessages = false, onLoadMoreMessages, @@ -150,6 +150,7 @@ export function ConversationDetailDialog({ onRead, onOpenClose, }: ConversationDetailDialogProps) { + const messages = Array.isArray(rawMessages) ? rawMessages : []; const currentConversation = detail ?? item; const isClosedConversation = currentConversation?.status === 4; const isPendingConversation = currentConversation?.status === 2; diff --git a/web/app/dashboard/conversation-monitor/page.tsx b/web/app/dashboard/conversation-monitor/page.tsx index f446424..1feccfe 100644 --- a/web/app/dashboard/conversation-monitor/page.tsx +++ b/web/app/dashboard/conversation-monitor/page.tsx @@ -456,7 +456,7 @@ export default function DashboardConversationsPage() { fetchConversationMessages({ conversationId: item.id, limit: 20 }), ]) setDetailData(detail) - setDetailMessages(messages.results) + setDetailMessages(Array.isArray(messages.results) ? messages.results : []) setDetailMessagesNextCursor(messages.cursor ?? "") setDetailMessagesHasMore(Boolean(messages.hasMore)) } catch (error) { @@ -481,7 +481,8 @@ export default function DashboardConversationsPage() { cursor, limit: 20, }) - setDetailMessages((prev) => [...page.results, ...prev]) + const nextResults = Array.isArray(page.results) ? page.results : [] + setDetailMessages((prev) => [...nextResults, ...prev]) setDetailMessagesNextCursor(page.cursor ?? "") setDetailMessagesHasMore(Boolean(page.hasMore)) } catch (error) { diff --git a/web/lib/api/admin.ts b/web/lib/api/admin.ts index 68de308..31fb25a 100644 --- a/web/lib/api/admin.ts +++ b/web/lib/api/admin.ts @@ -14,7 +14,7 @@ export type PageResult = { } export type CursorResult = { - results: T[] + results?: T[] | null cursor: string hasMore: boolean }