Skip to content

Commit 1f8ec08

Browse files
authored
Merge pull request webdevcody#698 from scape76/fix-roomId-caching
fix: move generating roomId to wss server
2 parents ca9e91f + 8786a9d commit 1f8ec08

File tree

7 files changed

+18
-31
lines changed

7 files changed

+18
-31
lines changed

package-lock.json

+10-10
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

packages/app/package.json

-1
Original file line numberDiff line numberDiff line change
@@ -77,7 +77,6 @@
7777
"tailwindcss": "3.3.2",
7878
"tailwindcss-animate": "^1.0.6",
7979
"unstyled-table": "^0.0.3-alpha-3",
80-
"uuid": "^9.0.0",
8180
"zod": "^3.21.4"
8281
},
8382
"devDependencies": {

packages/app/src/app/race/_components/create-room-form.tsx

-13
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
"use client";
22

33
import * as React from "react";
4-
import { v4 as uuidv4 } from "uuid";
54

65
import { useForm } from "react-hook-form";
76
import * as z from "zod";
@@ -33,8 +32,6 @@ type CreateRoomForm = z.infer<typeof createRoomSchema>;
3332
export const CreateRoomForm = () => {
3433
const [isLoading, setIsLoading] = React.useState(false);
3534

36-
const roomId = uuidv4();
37-
3835
const router = useRouter();
3936

4037
const form = useForm<CreateRoomForm>({
@@ -47,7 +44,6 @@ export const CreateRoomForm = () => {
4744
function onSubmit({ language }: CreateRoomForm) {
4845
setIsLoading(true);
4946
socket.emit("UserCreateRoom", {
50-
roomId,
5147
// TODO: make typescript happy
5248
language: language as Language,
5349
});
@@ -89,15 +85,6 @@ export const CreateRoomForm = () => {
8985
)}
9086
/>
9187

92-
<div>
93-
<p className="mb-2 text-sm font-medium">Room ID</p>
94-
95-
<div className="flex h-10 w-full items-center justify-between rounded-md border bg-background px-3 py-2 text-sm text-muted-foreground">
96-
<span>{roomId}</span>
97-
<CopyButton value={roomId} />
98-
</div>
99-
</div>
100-
10188
<Button type="submit" className="mt-2 w-full">
10289
{isLoading ? (
10390
<Icons.spinner className="h-4 w-4 animate-spin" />

packages/app/src/lib/validations/room.ts

+1-2
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,8 @@
11
import { z } from "zod";
22
import { isValidUUID } from "@/lib/utils";
33

4-
54
export const createRoomSchema = z.object({
6-
language: z.string(),
5+
language: z.string().nonempty(),
76
});
87

98
export const joinRoomSchema = z.object({

packages/wss/package.json

+2-1
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,8 @@
1515
"dependencies": {
1616
"@code-racer/app": "file:../app",
1717
"express": "^4.18.2",
18-
"socket.io": "^4.7.1"
18+
"socket.io": "^4.7.1",
19+
"uuid": "^9.0.0"
1920
},
2021
"devDependencies": {
2122
"@types/express": "^4.17.17",

packages/wss/src/events/client-to-server.ts

-1
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,6 @@ export type UserGetRacePayload = {
2727
};
2828

2929
export type UserCreateRoomPayload = {
30-
roomId: string;
3130
language: Language;
3231
};
3332

packages/wss/src/game.ts

+5-3
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ import { type ServerToClientEvents } from "./events/server-to-client";
1212
import { createRace, raceMatchMaking } from "./match-making";
1313
import { RaceStatus, raceStatus } from "./types";
1414
import { getRandomSnippet } from "@code-racer/app/src/app/race/(play)/loaders";
15-
import { getRoomParticipantId } from "@code-racer/app/src/lib/wss-app-utils";
15+
import { v4 as uuidv4 } from "uuid";
1616

1717
export type SocketId = string;
1818
type RaceId = string;
@@ -70,10 +70,12 @@ export class Game {
7070
return;
7171
}
7272

73+
const roomId = uuidv4();
74+
7375
// race id is associated with the room id
74-
const race = await createRace(snippet, payload.roomId);
76+
const race = await createRace(snippet, roomId);
7577

76-
this.races.set(payload.roomId, {
78+
this.races.set(roomId, {
7779
...race,
7880
participants: [],
7981
status: "waiting",

0 commit comments

Comments
 (0)