diff --git a/frontend/src/html/pages/tribe.html b/frontend/src/html/pages/tribe.html index 0702a4900..19738088b 100644 --- a/frontend/src/html/pages/tribe.html +++ b/frontend/src/html/pages/tribe.html @@ -74,6 +74,7 @@ Coming soon... --> +
custom rooms
diff --git a/frontend/src/ts/index.ts b/frontend/src/ts/index.ts index 38acdb0d0..e70855e89 100644 --- a/frontend/src/ts/index.ts +++ b/frontend/src/ts/index.ts @@ -104,10 +104,15 @@ addToGlobal({ qs: qs, qsa: qsa, qsr: qsr, - tribe: Tribe, - tribeState: TribeState, - tribeCarets: TribeCarets, createTribeRoom: TribeSocket.default.out.room.create, + ...(isDevEnvironment() + ? { + tribe: Tribe, + tribeState: TribeState, + tribeCarets: TribeCarets, + tribeSocket: TribeSocket.default, + } + : {}), }); if (isDevEnvironment()) { diff --git a/frontend/src/ts/tribe/pages/tribe-page-menu.ts b/frontend/src/ts/tribe/pages/tribe-page-menu.ts index 26df123cb..556e75681 100644 --- a/frontend/src/ts/tribe/pages/tribe-page-menu.ts +++ b/frontend/src/ts/tribe/pages/tribe-page-menu.ts @@ -115,6 +115,11 @@ $(".pageTribe .menu .customRooms #createCustomRoom").on("click", (e) => { tribeSocket.out.room.create(Config.mode, mode2); }); +$(".pageTribe .menu .devRoom").on("click", (e) => { + if ($(e.currentTarget).hasClass("disabled")) return; + tribeSocket.out.dev?.room(); +}); + $(".pageTribe .menu .matchmaking .buttons .button").on("click", (e) => { if ($(e.currentTarget).hasClass("disabled")) return; const queue = $(e.currentTarget).attr("queue") as string; diff --git a/frontend/src/ts/tribe/tribe-socket/index.ts b/frontend/src/ts/tribe/tribe-socket/index.ts index e82a30092..2f3e3f9c5 100644 --- a/frontend/src/ts/tribe/tribe-socket/index.ts +++ b/frontend/src/ts/tribe/tribe-socket/index.ts @@ -1,6 +1,8 @@ +import { isDevEnvironment } from "../../utils/misc"; import RoomRoutes from "./routes/room"; import SystemRoutes from "./routes/system"; import UserRoutes from "./routes/user"; +import DevRoutes from "./routes/dev"; import Socket from "./socket"; function updateName(newName: string): void { @@ -31,6 +33,11 @@ export default { room: RoomRoutes.out, system: SystemRoutes.out, user: UserRoutes.out, + ...(isDevEnvironment() + ? { + dev: DevRoutes.out, + } + : {}), }, updateName, connect, diff --git a/frontend/src/ts/tribe/tribe-socket/routes/dev.ts b/frontend/src/ts/tribe/tribe-socket/routes/dev.ts new file mode 100644 index 000000000..bbbdda807 --- /dev/null +++ b/frontend/src/ts/tribe/tribe-socket/routes/dev.ts @@ -0,0 +1,7 @@ +import Socket from "../socket"; + +export default { + out: { + room: () => Socket.emit("dev_room"), + }, +}; diff --git a/frontend/src/ts/tribe/tribe.ts b/frontend/src/ts/tribe/tribe.ts index e3e6ab2de..7cd688fa4 100644 --- a/frontend/src/ts/tribe/tribe.ts +++ b/frontend/src/ts/tribe/tribe.ts @@ -22,7 +22,7 @@ import * as Random from "../utils/random"; import TribeSocket from "./tribe-socket"; import * as ActivePage from "../states/active-page"; import * as TribeState from "./tribe-state"; -import { escapeRegExp, escapeHTML } from "../utils/misc"; +import { escapeRegExp, escapeHTML, isDevEnvironment } from "../utils/misc"; import * as Time from "../states/time"; import * as TestWords from "../test/test-words"; import * as TestStats from "../test/test-stats"; @@ -139,6 +139,10 @@ export async function init(): Promise { TribeSocket.updateName(lstribename); } + if (!isDevEnvironment()) { + $(".pageTribe .menu .devRoom").remove(); + } + setTimeout(() => { TribeSocket.connect(); }, 500); @@ -228,8 +232,13 @@ async function connect(): Promise { if (autoJoinCode !== undefined) { TribePagePreloader.updateText(`Joining room ${autoJoinCode}`); TribePagePreloader.updateSubtext("Please wait..."); + setTimeout(() => { - joinRoom(autoJoinCode); + if (autoJoinCode === "dev" && isDevEnvironment()) { + void TribeSocket.out.dev?.room(); + } else { + joinRoom(autoJoinCode); + } }, 500); } else { void TribePages.change("menu");