From 6af1651e034ea36fb8aae30e6c893dd7addf7b7e Mon Sep 17 00:00:00 2001 From: _Bastler <_Bastler@bstly.de> Date: Mon, 20 Sep 2021 08:56:14 +0200 Subject: [PATCH] remove instance, change room url, fix invalid lastRoomUrls --- front/src/Connexion/ConnectionManager.ts | 11 +++++++++-- front/src/Connexion/LocalUserStore.ts | 19 +++++++++++++------ front/src/Connexion/Room.ts | 16 ++++++++++------ front/src/Phaser/Game/GameScene.ts | 6 +++++- 4 files changed, 37 insertions(+), 15 deletions(-) diff --git a/front/src/Connexion/ConnectionManager.ts b/front/src/Connexion/ConnectionManager.ts index 4a209013..7cc4c1d5 100644 --- a/front/src/Connexion/ConnectionManager.ts +++ b/front/src/Connexion/ConnectionManager.ts @@ -145,6 +145,7 @@ class ConnectionManager { await this.checkAuthUserConnexion(); } catch (err) { console.error(err); + await this.anonymousLogin(); } } this.localUser = localUserStore.getLocalUser() as LocalUser; //if authToken exist in localStorage then localUser cannot be null @@ -172,8 +173,13 @@ class ConnectionManager { } //get detail map for anonymous login and set texture in local storage - this._currentRoom = await Room.createRoom(new URL(roomPath)); - if (this._currentRoom.textures != undefined && this._currentRoom.textures.length > 0) { + try { + this._currentRoom = await Room.createRoom(new URL(roomPath)); + } catch (e) { + console.error(e); + localUserStore.setLastRoomUrl(null); + } + if (this._currentRoom != undefined && this._currentRoom.textures != undefined && this._currentRoom.textures.length > 0) { //check if texture was changed if (this.localUser.textures.length === 0) { this.localUser.textures = this._currentRoom.textures; @@ -201,6 +207,7 @@ class ConnectionManager { } public async anonymousLogin(isBenchmark: boolean = false): Promise { + localUserStore.setAuthToken(null); try { const data = await Axios.post(`${PUSHER_URL}/anonymLogin`).then((res) => res.data); this.localUser = new LocalUser(data.userUuid, []); diff --git a/front/src/Connexion/LocalUserStore.ts b/front/src/Connexion/LocalUserStore.ts index 6c20aadb..82ff1513 100644 --- a/front/src/Connexion/LocalUserStore.ts +++ b/front/src/Connexion/LocalUserStore.ts @@ -120,12 +120,19 @@ class LocalUserStore { return localStorage.getItem(fullscreenKey) === "true"; } - setLastRoomUrl(roomUrl: string): void { - localStorage.setItem(lastRoomUrl, roomUrl.toString()); - caches.open(cacheAPIIndex).then((cache) => { - const stringResponse = new Response(JSON.stringify({ roomUrl })); - cache.put(`/${lastRoomUrl}`, stringResponse); - }); + setLastRoomUrl(roomUrl: string | null): void { + if (roomUrl) { + localStorage.setItem(lastRoomUrl, roomUrl.toString()); + caches.open(cacheAPIIndex).then((cache) => { + const stringResponse = new Response(JSON.stringify({ roomUrl })); + cache.put(`/${lastRoomUrl}`, stringResponse); + }); + } else { + localStorage.removeItem(lastRoomUrl); + caches.open(cacheAPIIndex).then((cache) => { + cache.delete(`/${lastRoomUrl}`); + }); + } } getLastRoomUrl(): string { return ( diff --git a/front/src/Connexion/Room.ts b/front/src/Connexion/Room.ts index 0e624d78..3b3f8b1d 100644 --- a/front/src/Connexion/Room.ts +++ b/front/src/Connexion/Room.ts @@ -18,7 +18,7 @@ export class Room { private _iframeAuthentication?: string; private _mapUrl: string | undefined; private _textures: CharacterTexture[] | undefined; - private instance: string | undefined; + // private instance: string | undefined; private readonly _search: URLSearchParams; private constructor(private roomUrl: URL) { @@ -73,12 +73,13 @@ export class Room { const baseUrl = new URL(currentRoomUrl); const currentRoom = new Room(baseUrl); - let instance: string = "global"; - if (currentRoom.isPublic) { - instance = currentRoom.instance as string; - } + // let instance: string = "global"; + // if (currentRoom.isPublic) { + // instance = currentRoom.instance as string; + //} - baseUrl.pathname = "/_/" + instance + "/" + absoluteExitSceneUrl.host + absoluteExitSceneUrl.pathname; + // baseUrl.pathname = "/_/" + instance + "/" + absoluteExitSceneUrl.host + absoluteExitSceneUrl.pathname; + baseUrl.pathname = "/_/" + absoluteExitSceneUrl.host + absoluteExitSceneUrl.pathname; if (absoluteExitSceneUrl.hash) { baseUrl.hash = absoluteExitSceneUrl.hash; } @@ -114,6 +115,8 @@ export class Room { * - In a private URL: [organizationId/worldId] */ public getInstance(): string { + return ""; + /* if (this.instance !== undefined) { return this.instance; } @@ -129,6 +132,7 @@ export class Room { this.instance = match[1] + "/" + match[2]; return this.instance; } + */ } /** diff --git a/front/src/Phaser/Game/GameScene.ts b/front/src/Phaser/Game/GameScene.ts index 51f9ddcb..7bc09e9b 100644 --- a/front/src/Phaser/Game/GameScene.ts +++ b/front/src/Phaser/Game/GameScene.ts @@ -94,7 +94,7 @@ import { userIsAdminStore } from "../../Stores/GameStore"; import { layoutManagerActionStore } from "../../Stores/LayoutManagerStore"; import { EmbeddedWebsiteManager } from "./EmbeddedWebsiteManager"; import { GameMapPropertiesListener } from "./GameMapPropertiesListener"; -import {analyticsClient} from "../../Administration/AnalyticsClient"; +import { analyticsClient } from "../../Administration/AnalyticsClient"; import { get } from "svelte/store"; export interface GameSceneInitInterface { @@ -300,6 +300,10 @@ export class GameScene extends DirtyScene { //remove loader in progress removeLoader(this); + if (this.roomUrl == localUserStore.getLastRoomUrl()) { + localUserStore.setLastRoomUrl(null); + } + //display an error scene this.scene.start(ErrorSceneName, { title: "Network error",