diff --git a/src/editor-api/realtime/asset.ts b/src/editor-api/realtime/asset.ts index a3a78ad3d..0e803573e 100644 --- a/src/editor-api/realtime/asset.ts +++ b/src/editor-api/realtime/asset.ts @@ -131,7 +131,7 @@ class RealtimeAsset extends Events { } _onOp(ops: any, local: boolean) { - if (local) { + if (local || !this._loaded) { return; } diff --git a/src/editor/alerts/alert-connection.ts b/src/editor/alerts/alert-connection.ts index 81843ae7c..47478b841 100644 --- a/src/editor/alerts/alert-connection.ts +++ b/src/editor/alerts/alert-connection.ts @@ -120,7 +120,7 @@ editor.once('load', () => { editor.on('viewport:error', (err) => { viewportError = true; - log.error(err); + console.error(err); console.trace(); content.innerHTML = 'Failed creating WebGL Context.
Please check WebGL Report and report to Forum.'; overlay.hidden = false; diff --git a/src/editor/assets/assets-rename.ts b/src/editor/assets/assets-rename.ts index 07e474bea..dae775df4 100644 --- a/src/editor/assets/assets-rename.ts +++ b/src/editor/assets/assets-rename.ts @@ -2,7 +2,7 @@ editor.once('load', () => { const changeName = function (assetId: string | number, assetName: string) { editor.api.globals.rest.assets.assetUpdate(assetId, { name: assetName }) .on('error', (err, data) => { - log.error`rename error: ${err} ${data}`; + console.warn(`rename error: ${err} ${data}`); editor.call('status:error', `Couldn't update the name: ${data}`); }); }; diff --git a/src/editor/entities/entities-treeview.ts b/src/editor/entities/entities-treeview.ts index 343960c48..33994626f 100644 --- a/src/editor/entities/entities-treeview.ts +++ b/src/editor/entities/entities-treeview.ts @@ -810,7 +810,7 @@ class EntitiesTreeView extends TreeView { if (child) { treeViewItem.append(this._onAddEntity(child)); } else { - log.error`cannot find child entity ${childId} of parent ${entity.get('name')} (${resourceId})`; + console.warn(`cannot find child entity ${childId} of parent ${entity.get('name')} (${resourceId})`); editor.call('status:error', `Cannot find child entity ${childId} of parent "${entity.get('name')}" (${resourceId})`); } } diff --git a/src/editor/relay/relay-server.ts b/src/editor/relay/relay-server.ts index 780204985..bc856b41a 100644 --- a/src/editor/relay/relay-server.ts +++ b/src/editor/relay/relay-server.ts @@ -40,6 +40,8 @@ class RelayServer extends Events { private _rooms: Record>; + private _pendingRooms: Set; + private _userId: number | null; private socket: WebSocket; @@ -54,6 +56,7 @@ class RelayServer extends Events { this._pingTimeout = null; this._pongTimeout = null; this._rooms = {}; + this._pendingRooms = new Set(); this._userId = null; this.on('welcome', (data) => { @@ -150,6 +153,7 @@ class RelayServer extends Events { }); } this._rooms = {}; + this._pendingRooms.clear(); this.emit('disconnect'); @@ -194,6 +198,8 @@ class RelayServer extends Events { } _handleRoomJoin(msg: { t: string; name: string; users?: number[]; userId?: number }) { + this._pendingRooms.delete(msg.name); + if (msg.users) { this._rooms[msg.name] = new Set(msg.users); } else if (msg.userId) { @@ -281,7 +287,7 @@ class RelayServer extends Events { * @param msg - The message data */ send(msg: string | object) { - if (!this._connected) { + if (!this._connected || this.socket.readyState !== WebSocket.OPEN) { return; } @@ -319,6 +325,11 @@ class RelayServer extends Events { * @param authentication - The authentication handling of the room. */ joinRoom(name: string, authentication: RoomAuthentication) { + if (this._rooms[name] || this._pendingRooms.has(name)) { + return; + } + + this._pendingRooms.add(name); this.send({ t: 'room:join', name: name,