import { $userInfo, $userStatus } from "@/store/player" import { useStore } from '@nanostores/react' import { useEffect, useMemo, useState } from "react" import { Table, TableBody, TableCell, TableFooter, TableHead, TableHeader, TableRow, } from "@/components/ui/table" import { socket } from "./socket" import { ClientMessage } from "@/lib/types/message" import { getUserPlayTime } from "@/lib/utils" export const UserList = ({ roomName, serverTimeAdjust }: { roomName: string, serverTimeAdjust: number }) => { const userStatus = useStore($userStatus) const [_, setTick] = useState(0) useEffect(() => { const interval = setInterval(() => { setTick(t => t + 1) }, 500) return () => clearInterval(interval) }, []) const sortedUserStatus = useMemo(() => { return [...userStatus].sort((a, b) => { // 按照username排序 return (a.username || '').localeCompare(b.username || '') }) }, [userStatus]) return ( 用户名 时间 状态 {sortedUserStatus.map((user) => ( {user.username} {getUserPlayTime(user, serverTimeAdjust)} {user.playing == true ? '播放中' : '暂停中'} ))} {userStatus.length == 0 && <> 该房间暂无用户 }
) }