show error tooltip when game not found
This commit is contained in:
@@ -9,34 +9,43 @@ import { useRouter } from "next/navigation";
|
|||||||
export default function JoinGame() {
|
export default function JoinGame() {
|
||||||
const session = useContext(SessionContext);
|
const session = useContext(SessionContext);
|
||||||
const [buttonLoading, setButtonLoading] = useState(false);
|
const [buttonLoading, setButtonLoading] = useState(false);
|
||||||
|
const [notFound, setNotFound] = useState(false);
|
||||||
const router = useRouter();
|
const router = useRouter();
|
||||||
|
|
||||||
async function submitJoinGame(e: FormEvent<HTMLFormElement>) {
|
async function submitJoinGame(e: FormEvent<HTMLFormElement>) {
|
||||||
e.preventDefault();
|
e.preventDefault();
|
||||||
if (!session?.user?.id) return;
|
if (!session?.user?.id) return;
|
||||||
setButtonLoading(true);
|
|
||||||
|
|
||||||
const target = e.target as HTMLFormElement;
|
const target = e.target as HTMLFormElement;
|
||||||
const codeEl = target.elements.namedItem("joinGameCode") as HTMLInputElement;
|
const codeEl = target.elements.namedItem("joinGameCode") as HTMLInputElement;
|
||||||
|
|
||||||
let code = codeEl.value;
|
let code = codeEl.value;
|
||||||
|
if (!code) return;
|
||||||
|
|
||||||
|
setButtonLoading(true);
|
||||||
|
|
||||||
if (code.startsWith("http") || code.startsWith("ches.su")) {
|
if (code.startsWith("http") || code.startsWith("ches.su")) {
|
||||||
code = new URL(code).pathname.split("/")[2];
|
code = new URL(code).pathname.split("/")[2];
|
||||||
}
|
}
|
||||||
|
|
||||||
const game = await getGame(code);
|
const game = await getGame(code);
|
||||||
|
|
||||||
if (game) {
|
if (game && game.code) {
|
||||||
router.push(`/game/${game.code}`);
|
router.push(`/game/${game.code}`);
|
||||||
} else {
|
} else {
|
||||||
setButtonLoading(false);
|
setButtonLoading(false);
|
||||||
|
setNotFound(true);
|
||||||
|
setTimeout(() => setNotFound(false), 5000);
|
||||||
codeEl.value = "";
|
codeEl.value = "";
|
||||||
// TODO: Show error message
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<form className="input-group" onSubmit={submitJoinGame}>
|
<form
|
||||||
|
className={"input-group" + (notFound ? " tooltip tooltip-error tooltip-open" : "")}
|
||||||
|
data-tip="error: game not found"
|
||||||
|
onSubmit={submitJoinGame}
|
||||||
|
>
|
||||||
<input
|
<input
|
||||||
type="text"
|
type="text"
|
||||||
placeholder="Invite link or code"
|
placeholder="Invite link or code"
|
||||||
|
|||||||
Reference in New Issue
Block a user