import { submit, fetchProfile, logout } from "@/api/account";
import { ipcMain, IpcMainInvokeEvent } from "electron";
import { store } from "@/background/store";
+import { endSession } from "@/background/session";
const parseAuthRes = (authRes: any) => {
store.delete('crimataId');
// TODO: kill crimata platform session
+ endSession();
resolve();
} catch(e) {
import { backgroundMitt } from "@/modules/emitter";
import { ipcEmit, loadState } from './helpers';
+import WebSocket from 'ws';
import useWebSockets from "./websockets";
// Info saved to json on quit (key, newMessages).
let state: SessionState;
+let socket: WebSocket | null = null;
+
// Calls appropriate endpoint for a server message.
const onMessage = (data: string): void => {
}
+export const endSession = (): void => {
+ if (socket) {
+ socket.close();
+ socket = null;
+ }
+}
+
// Call this to initialize session with Crimata servers.
export const initSession = (authPayload: {
state = loadState("session.json");
// Open socket connection.
- createSocket(authPayload);
+ if (!socket)
+ socket = createSocket(authPayload);
// Keep win up-to-date.
backgroundMitt.on('window-active', (state: boolean) => {
+
"use strict";
import WebSocket from 'ws';
const createSocket = (authPayload: {
token: string;
crimataId: string;
- }) => {
+ }):WebSocket => {
socket = new WebSocket(socketUrl)
// Add listeners.
socket.addEventListener("close", onClose)
socket.addEventListener("error", onError)
- console.log("WS:New socket created.")
+ return socket;
+
}
return {
let auth = false;
wss.on("connection", function connection(ws, req) {
+
ws.on("message", function incoming(message) {
console.log(message)
auth = true;
} else {
const parsed = JSON.parse(message);
- console.log('got a message', message)
+ console.log('got a message', message);
}
} else {
const parsed = JSON.parse(message);
- console.log('parsed', parsed)
+ console.log('parsed', parsed);
}
});