Skip to content

Commit 946e4ad

Browse files
Avoid crash
1 parent e3f848d commit 946e4ad

File tree

2 files changed

+18
-9
lines changed

2 files changed

+18
-9
lines changed

src/controllers/SessionController.ts

Lines changed: 13 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -53,8 +53,6 @@ class SessionController implements SLWebSocketEventListener {
5353
console.log("Couldn't get session due to missing auth token.")
5454
return
5555
}
56-
SLWebSocket.initialize('wss://app.getluminal.com', this.onReconnectWebSocket);
57-
SLWebSocket.instance.addSLListener(this);
5856
Server.getSession(this.authToken)
5957
.then((response) => {
6058
this.sessionState = response.session_state;
@@ -69,14 +67,14 @@ class SessionController implements SLWebSocketEventListener {
6967
console.log("Couldn't connect web socket due to missing auth token.")
7068
return;
7169
}
72-
SLWebSocket.instance.slSend('connect-socket', this.authToken, {});
70+
this.getWebSocket().slSend('connect-socket', this.authToken, {});
7371
}, 0);
7472
});
7573
}
7674

7775
sendChatMessage(message: string) {
7876
if (!this.authToken) { return; }
79-
SLWebSocket.instance.slSend('send-message', this.authToken, { message: message });
77+
this.getWebSocket().slSend('send-message', this.authToken, { message: message });
8078
this.addChatMessage({
8179
id: UUIDUtilities.unsecureUUID(),
8280
sender: 'user',
@@ -89,7 +87,17 @@ class SessionController implements SLWebSocketEventListener {
8987

9088
getTablePage(tableID: string, offset: number, count: number) {
9189
if (!this.authToken) { return; }
92-
SLWebSocket.instance.slSend('get-table-page', this.authToken, { table_id: tableID, offset: offset, count: count });
90+
this.getWebSocket().slSend('get-table-page', this.authToken, { table_id: tableID, offset: offset, count: count });
91+
}
92+
93+
getWebSocket(): SLWebSocket {
94+
if (SLWebSocket.instance) {
95+
return SLWebSocket.instance;
96+
} else {
97+
const webSocket = SLWebSocket.initialize('wss://app.getluminal.com', this.onReconnectWebSocket);
98+
webSocket.addSLListener(this);
99+
return webSocket;
100+
}
93101
}
94102

95103
onWebSocketEvent(json: JSON) {

src/networking/WebSocket.ts

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -41,14 +41,15 @@ export class SLWebSocket extends WebSocket {
4141
this.onmessage = this.onMessage;
4242
}
4343

44-
static initialize(url: string, onReconnect: () => Promise<void>) {
45-
if (SLWebSocket.instance) { return; }
46-
SLWebSocket.initializeWithBufferAndListeners(url, [], [], onReconnect);
44+
static initialize(url: string, onReconnect: () => Promise<void>): SLWebSocket {
45+
if (SLWebSocket.instance) { return SLWebSocket.instance; }
46+
return SLWebSocket.initializeWithBufferAndListeners(url, [], [], onReconnect);
4747
}
4848

49-
private static initializeWithBufferAndListeners(url: string, buffer: ArrayBuffer[], listeners: SLWebSocketEventListener[], onReconnect: () => Promise<void>) {
49+
private static initializeWithBufferAndListeners(url: string, buffer: ArrayBuffer[], listeners: SLWebSocketEventListener[], onReconnect: () => Promise<void>): SLWebSocket {
5050
const instance = new SLWebSocket(url, buffer, listeners, onReconnect);
5151
SLWebSocket.instance = instance;
52+
return instance;
5253
}
5354

5455
addSLListener(listener: SLWebSocketEventListener) {

0 commit comments

Comments
 (0)