remove instance, change room url, fix invalid lastRoomUrls
This commit is contained in:
parent
ccafaf11e3
commit
6af1651e03
@ -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<void> {
|
||||
localUserStore.setAuthToken(null);
|
||||
try {
|
||||
const data = await Axios.post(`${PUSHER_URL}/anonymLogin`).then((res) => res.data);
|
||||
this.localUser = new LocalUser(data.userUuid, []);
|
||||
|
@ -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 (
|
||||
|
@ -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;
|
||||
}
|
||||
*/
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -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",
|
||||
|
Loading…
Reference in New Issue
Block a user