diff --git a/src/js/tribe.js b/src/js/tribe.js
index 81787fcc6..fc09e24a5 100644
--- a/src/js/tribe.js
+++ b/src/js/tribe.js
@@ -15,6 +15,7 @@ let MP = {
maxReconnectionAttempts: 1,
activePage: "preloader",
pageTransition: false,
+ expectedVersion: "0.5.0",
};
let tribeSounds = {
@@ -113,6 +114,14 @@ function mp_resetLobby() {
$(".pageTribe .lobby .inviteLink .link").text("");
}
+function mp_resetRace() {
+ $(".pageTest .tribePlayers").empty().addClass("hidden");
+ hideCountdown();
+ hideResultCountdown();
+ $(".pageTest #result .tribeResult").addClass("hidden");
+ $(".pageTest #result .tribeResultChat").addClass("hidden");
+}
+
function mp_applyRoomConfig(cfg) {
setMode(cfg.mode, true, true);
if (cfg.mode === "time") {
@@ -474,6 +483,13 @@ MP.socket.on("mp_update_online_stats", (data) => {
$(".pageTribe .prelobby .welcome .stats").append(
`
Version ${data.version}
`
);
+ if (data.version !== MP.expectedVersion) {
+ MP.socket.disconnect();
+ Notifications.add(
+ `Tribe version mismatch. Try refreshing or clearing cache. Expected version: ${MP.expectedVersion}, found version: ${data.version}`,
+ -1
+ );
+ }
});
MP.socket.on("mp_update_name", (data) => {
@@ -486,6 +502,9 @@ MP.socket.on("disconnect", (f) => {
Notifications.add("Disconnected from Tribe", 0);
mp_resetLobby();
mp_changeActiveSubpage("preloader");
+ mp_resetLobby();
+ mp_resetRace();
+ mp_changeActiveSubpage("preloader");
// $(".pageTribe .preloader div").removeClass("hidden");
// $(".pageTribe .preloader").removeClass("hidden").css("opacity", 1);
// $(".pageTribe .preloader .icon").html(``);
@@ -500,7 +519,9 @@ MP.socket.on("connect_failed", (f) => {
MP.reconnectionAttempts++;
if (MP.reconnectionAttempts >= MP.maxReconnectionAttempts) {
$(".pageTribe .preloader .icon").html(``);
- $(".pageTribe .preloader .text").text(`Disconnected from Tribe`);
+ $(".pageTribe .preloader .text").text(
+ `Could not connect to Tribe server: ${f.message}`
+ );
} else {
$(".pageTribe .preloader .text").text("Connection failed. Retrying");
Notifications.add("Tribe connection error: " + f.message, -1);
@@ -516,7 +537,9 @@ MP.socket.on("connect_error", (f) => {
// $(".pageTribe .preloader").removeClass("hidden").css("opacity", 1);
if (MP.reconnectionAttempts >= MP.maxReconnectionAttempts) {
$(".pageTribe .preloader .icon").html(``);
- $(".pageTribe .preloader .text").text(`Disconnected from Tribe`);
+ $(".pageTribe .preloader .text").text(
+ `Could not connect to Tribe server: ${f.message}`
+ );
} else {
$(".pageTribe .preloader .text").text("Connection error. Retrying");
Notifications.add("Tribe connection error: " + f.message, -1);
@@ -734,6 +757,7 @@ MP.socket.on("mp_room_user_test_progress_update", (data) => {
});
MP.socket.on("mp_room_user_finished", (data) => {
+ $(`.tribeResult`).removeClass("hidden");
$(`.tribeResult table .player[socketId=${data.socketId}] .wpm .text`).text(
data.result.wpm
);
diff --git a/static/index.html b/static/index.html
index cd30b5be9..287cbb985 100644
--- a/static/index.html
+++ b/static/index.html
@@ -1248,7 +1248,7 @@