diff --git a/packages/web_ui/src/components/OnlinePlayersList.tsx b/packages/web_ui/src/components/OnlinePlayersList.tsx index 31e5a560..643e1743 100644 --- a/packages/web_ui/src/components/OnlinePlayersList.tsx +++ b/packages/web_ui/src/components/OnlinePlayersList.tsx @@ -1,4 +1,5 @@ -import React from "react"; +import React, { useState } from "react"; +import { Collapse } from "antd"; import { useUsers } from "../model/user"; import UsersTable from "./UsersTable"; @@ -9,23 +10,26 @@ type OnlinePlayersListProps = { export default function OnlinePlayersList({ instanceId }: OnlinePlayersListProps) { const [users] = useUsers(); + // undefined until the user toggles the panel, then their choice sticks. + const [open, setOpen] = useState(); - // Filter users to only show those online on this specific instance - const onlineUsers = [...users.values()].filter(user => user.instances && user.instances.has(instanceId)); + const onlineCount = [...users.values()].filter(user => user.instances?.has(instanceId)).length; + const expanded = open ?? onlineCount > 0; - if (onlineUsers.length === 0) { - return null; - } - - return ( -
-

Online Players ({onlineUsers.length})

- setOpen(keys.length > 0)} + items={[{ + key: "players", + label: `Online Players (${onlineCount})`, + children: `${total} Users`, - }} /> -
- ); + }} />, + }]} + />; }