import React, { useMemo, useState } from "react"; import { Link } from "react-router-dom"; import type { SessionSnapshot } from "../../../shared/types"; import { useI18n } from "../i18n"; export default function ChatNewScreen({ session, meId, sessionId, onCreate, }: { session: SessionSnapshot; meId: string; sessionId: string; onCreate: (name: string, memberIds: string[]) => void; }) { const { t } = useI18n(); const [mode, setMode] = useState<"direct" | "group">("direct"); const [groupName, setGroupName] = useState(""); const [selected, setSelected] = useState([]); const [error, setError] = useState(null); const options = useMemo( () => session.players.filter((player) => player.id !== meId), [session.players, meId], ); function resetSelection(nextMode: "direct" | "group") { setMode(nextMode); setSelected([]); setError(null); if (nextMode === "direct") { setGroupName(""); } } function toggleMember(id: string) { if (mode === "direct") { setSelected([id]); return; } setSelected((prev) => prev.includes(id) ? prev.filter((item) => item !== id) : [...prev, id], ); } function handleCreate() { if (mode === "direct") { if (selected.length !== 1) { setError(t("chat.error.direct")); return; } onCreate(t("chat.direct"), selected); return; } if (!groupName.trim()) { setError(t("chat.error.groupName")); return; } if (selected.length === 0) { setError(t("chat.error.member")); return; } onCreate(groupName.trim(), selected); } return (
← {t("chat.backChats")}

{t("chat.newTitle")}

{t("chat.newSubtitle")}
{mode === "group" && ( )}

{t("chat.choosePlayers")}

{options.length === 0 ? (

{t("chat.noPlayers")}

) : (
{options.map((player) => { const selectedNow = selected.includes(player.id); return ( ); })}
)}
{error &&

{error}

}
); }