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");