Add test mode

`*` char permit to defined test mode with warning message

Signed-off-by: Gregoire Parant <g.parant@thecodingmachine.com>
This commit is contained in:
Gregoire Parant 2021-12-10 01:51:40 +01:00
parent 27aa3c51d3
commit a5d4d163e1
5 changed files with 24 additions and 4 deletions

View file

@ -1,9 +1,10 @@
<script lang="typescript">
import { fly } from "svelte/transition";
import { userIsAdminStore } from "../../Stores/GameStore";
import { userIsAdminStore, limitMap } from "../../Stores/GameStore";
import { ADMIN_URL } from "../../Enum/EnvironmentVariable";
const upgradeLink = ADMIN_URL + "/pricing";
const registerLink = ADMIN_URL + "/second-step-register";
</script>
<main class="warningMain" transition:fly={{ y: -200, duration: 500 }}>
@ -14,6 +15,12 @@
>here</a
>
</p>
{:else if $limitMap}
<p>
Your are une test mode. This map will be opened during 2 days. You can register your domain <a
href={registerLink}>here</a
>!
</p>
{:else}
<p>This world is close to its limit!</p>
{/if}

View file

@ -8,9 +8,10 @@ import { CharacterTexture, LocalUser } from "./LocalUser";
import { Room } from "./Room";
import { _ServiceWorker } from "../Network/ServiceWorker";
import { loginSceneVisibleIframeStore } from "../Stores/LoginSceneStore";
import { userIsConnected } from "../Stores/MenuStore";
import { userIsConnected, warningContainerStore } from "../Stores/MenuStore";
import { analyticsClient } from "../Administration/AnalyticsClient";
import { axiosWithRetry } from "./AxiosUtils";
import { limitMap } from "../Stores/GameStore";
class ConnectionManager {
private localUser!: LocalUser;
@ -148,6 +149,7 @@ class ConnectionManager {
} else if (
connexionType === GameConnexionTypes.organization ||
connexionType === GameConnexionTypes.anonymous ||
connexionType === GameConnexionTypes.limit ||
connexionType === GameConnexionTypes.empty
) {
this.authToken = localUserStore.getAuthToken();
@ -228,6 +230,12 @@ class ConnectionManager {
analyticsClient.identifyUser(this.localUser.uuid, this.localUser.email);
}
//if limit room active test headband
if (connexionType === GameConnexionTypes.limit) {
warningContainerStore.activateWarningContainer();
limitMap.set(true);
}
this.serviceWorker = new _ServiceWorker();
return Promise.resolve(this._currentRoom);
}

View file

@ -32,7 +32,7 @@ export class Room {
if (this.id.startsWith("/")) {
this.id = this.id.substr(1);
}
if (this.id.startsWith("_/")) {
if (this.id.startsWith("_/") || this.id.startsWith("*/")) {
this.isPublic = true;
} else if (this.id.startsWith("@/")) {
this.isPublic = false;
@ -138,7 +138,7 @@ export class Room {
}
if (this.isPublic) {
const match = /_\/([^/]+)\/.+/.exec(this.id);
const match = /[_*]\/([^/]+)\/.+/.exec(this.id);
if (!match) throw new Error('Could not extract instance from "' + this.id + '"');
this.instance = match[1];
return this.instance;

View file

@ -5,3 +5,5 @@ export const userMovingStore = writable(false);
export const requestVisitCardsStore = writable<string | null>(null);
export const userIsAdminStore = writable(false);
export const limitMap = writable(false);

View file

@ -9,6 +9,7 @@ export enum GameConnexionTypes {
unknown,
jwt,
login,
limit,
}
//this class is responsible with analysing and editing the game's url
@ -19,6 +20,8 @@ class UrlManager {
return GameConnexionTypes.login;
} else if (url === "/jwt") {
return GameConnexionTypes.jwt;
} else if (url.includes("*/")) {
return GameConnexionTypes.limit;
} else if (url.includes("_/")) {
return GameConnexionTypes.anonymous;
} else if (url.includes("@/")) {