import React, { useState, useMemo } from 'react' import RoomCard from './RoomCard' import AddRoomBar from './AddRoomBar' import type { RoomData } from '../types' interface DashboardProps { rooms: RoomData[] viewMode: 'card' | 'list' cardCols: number listPerPage: number onAddRoom: (url: string) => void onToggleRoom: (id: string, action?: string) => void onRemoveRoom: (id: string) => void onSetActive: (id: string) => void } export default function Dashboard({ rooms, viewMode, cardCols, listPerPage, onAddRoom, onToggleRoom, onRemoveRoom, onSetActive }: DashboardProps) { const [page, setPage] = useState(0) const paginatedRooms = useMemo(() => { if (viewMode === 'list') { const start = page * listPerPage return rooms.slice(start, start + listPerPage) } return rooms }, [rooms, page, listPerPage, viewMode]) const totalPages = viewMode === 'list' ? Math.ceil(rooms.length / listPerPage) : 0 return (
{viewMode === 'card' ? (
{paginatedRooms.map(room => ( onToggleRoom(room.id, a)} onRemove={() => onRemoveRoom(room.id)} onDetail={() => onSetActive(room.id)} /> ))} {paginatedRooms.length === 0 && (

暂无房间

在上方输入框添加直播间URL开始监控

)}
) : (
{paginatedRooms.map(room => ( onSetActive(room.id)}> ))}
状态 房间 主播 类型 观众 消息 精准 操作
{room.title} {room.anchor_id} {room.kind === 'public' ? '公开' : '匿名'} {room.viewers} {room.total_msg} {room.lead_count}
{paginatedRooms.length === 0 && (

暂无房间

在上方输入框添加直播间URL开始监控

)}
)} {totalPages > 1 && (
{page + 1} / {totalPages}
)}
) }