import { clientId, q } from "@thorium/context/AppContext"; import { useStation } from "@thorium/routes/station/useStation"; import { Icon } from "@thorium/ui/Icon"; import { Tooltip } from "@thorium/ui/Tooltip"; import { cn } from "@thorium/utils/cn"; import { useLiveQuery } from "@thorium/utils/live-query/client"; import { useShipMapStore } from "./useShipMapStore"; export function CargoContainerList() { const { shipId } = useStation(); const [cargoContainers] = q.cargoControl.containers.useNetRequest({ shipId }); return (
{cargoContainers.map((container) => ( ))}
); } function CargoContainer({ container, }: { container: { id: number; destinationNode: number | null; entityState: "idle" | "enRoute"; }; }) { const { shipId } = useStation(); const [cargoRooms] = q.cargoControl.rooms.useNetRequest({ shipId }); const { rooms } = cargoRooms; const selectedRoomId = useShipMapStore((state) => state.selectedRoomId); const { interpolate } = useLiveQuery(); const selectedContainerId = useShipMapStore((state) => state.selectedContainerId); const isSelected = container.id === selectedContainerId; const inRoom = container.destinationNode === selectedRoomId; const destinationRoom = rooms.find((room) => room.id === container.destinationNode); return ( ); }