Authorize join lobby

master
Araozu 2024-07-09 18:38:13 -05:00
parent 800fa62ec6
commit 6ef829dbc8
3 changed files with 16 additions and 5 deletions

6
src/assets/ok.svg Normal file
View File

@ -0,0 +1,6 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 100 100" preserveAspectRatio="xMidYMid"
style="shape-rendering: auto; display: block;" width="50" height="50">
<circle stroke-linecap="round" fill="none" stroke="#16a34a"
stroke-width="8" r="32" cy="50" cx="50" data-idx="2">
</circle>
</svg>

After

Width:  |  Height:  |  Size: 314 B

View File

@ -66,7 +66,7 @@ export function Index() {
<p>Validating user id...</p> <p>Validating user id...</p>
</Show> </Show>
<Show when={userInfo() !== null && validated()}> <Show when={userInfo() !== null && validated()}>
<LobbyConnection /> <LobbyConnection user_id={userInfo()!.UserId} />
</Show> </Show>
</div> </div>
<hr /> <hr />
@ -162,7 +162,7 @@ function UserRegistration(props: {setUserInfo: (u: UserInfo) => void}) {
); );
} }
function LobbyConnection() { function LobbyConnection(props: {user_id: string}) {
const [loading, setLoading] = createSignal(false); const [loading, setLoading] = createSignal(false);
const [error, setError] = createSignal(""); const [error, setError] = createSignal("");
const navigate = useNavigate(); const navigate = useNavigate();
@ -175,7 +175,9 @@ function LobbyConnection() {
setLoading(true); setLoading(true);
try { try {
const res = await backend.post<{LobbyId: string}>("/lobby/new"); const res = await backend.post<{LobbyId: string}>("/lobby/new", {
UserId: props.user_id,
});
console.log(res.data); console.log(res.data);
// Redirect to the lobby component using the received lobby id // Redirect to the lobby component using the received lobby id
navigate(`/lobby/${res.data.LobbyId}`); navigate(`/lobby/${res.data.LobbyId}`);

View File

@ -3,7 +3,7 @@ import LoadingIcon from "../assets/loading.svg";
import ErrorIcon from "../assets/error.svg"; import ErrorIcon from "../assets/error.svg";
import ConnectedIcon from "../assets/ok.svg"; import ConnectedIcon from "../assets/ok.svg";
import { userIdKey } from "./Index"; import { userIdKey } from "./Index";
import { useNavigate } from "@solidjs/router"; import { useNavigate, useParams } from "@solidjs/router";
enum LobbyStatus { enum LobbyStatus {
Connecting, Connecting,
@ -23,6 +23,7 @@ const connectionRetryInterval = 5000;
export function Lobby() { export function Lobby() {
const [status, setStatus] = createSignal(LobbyStatus.Disconnected); const [status, setStatus] = createSignal(LobbyStatus.Disconnected);
const navigate = useNavigate(); const navigate = useNavigate();
const params = useParams();
let ws: WebSocket|null = null; let ws: WebSocket|null = null;
@ -41,6 +42,7 @@ export function Lobby() {
setStatus(LobbyStatus.Authenticating); setStatus(LobbyStatus.Authenticating);
// The first message must be authenticating with the server // The first message must be authenticating with the server
// TODO
const userId = localStorage.getItem(userIdKey); const userId = localStorage.getItem(userIdKey);
if (userId === null) { if (userId === null) {
@ -52,9 +54,10 @@ export function Lobby() {
// Send an auth message to the server // Send an auth message to the server
// The server will respond with either "authenticated" or "unauthenticated" // The server will respond with either "authenticated" or "unauthenticated"
// The message sent is <userid>,<lobbyid>
ws!.send(JSON.stringify({ ws!.send(JSON.stringify({
action: "auth", action: "auth",
value: userId, value: `${userId},${params.id}`,
})); }));
}; };