62 lines
1.3 KiB
TypeScript
62 lines
1.3 KiB
TypeScript
|
|
"use strict";
|
|
|
|
import { initSession, emitNewMessages, sendMessage } from '@/background/session';
|
|
import { ipcMain, IpcMainInvokeEvent, IpcMainEvent } from "electron";
|
|
import { initAudioIO } from "@/background/audio";
|
|
import { ClientMessage } from "@/types";
|
|
|
|
|
|
// Instantiate socket session with crimata-platorm.
|
|
const onSessionInit = (
|
|
_event: IpcMainInvokeEvent,
|
|
_payload: null
|
|
): void => {
|
|
|
|
console.log('[IPC]: init-session');
|
|
|
|
initSession();
|
|
|
|
initAudioIO();
|
|
}
|
|
|
|
|
|
const onAppMounted = (
|
|
_event: IpcMainInvokeEvent,
|
|
_payload: null
|
|
): void => {
|
|
|
|
console.log('[IPC]: app-mounted');
|
|
|
|
emitNewMessages()
|
|
};
|
|
|
|
|
|
// Handle messages from window/client.
|
|
const onClientMessage = (
|
|
_event: IpcMainEvent,
|
|
payload: ClientMessage
|
|
): void => {
|
|
|
|
console.log('[IPC]: client-message');
|
|
|
|
sendMessage(payload);
|
|
}
|
|
|
|
|
|
export default function useSessionListeners(): void {
|
|
|
|
console.log('[IPC]: Init session listeners.');
|
|
|
|
// Attach listeners for frontend.
|
|
ipcMain.removeAllListeners("client-message");
|
|
ipcMain.on("client-message", onClientMessage);
|
|
|
|
// Attack browser window init listener.
|
|
ipcMain.removeAllListeners("app-mounted");
|
|
ipcMain.on("app-mounted", onAppMounted);
|
|
|
|
ipcMain.removeAllListeners("init-session");
|
|
ipcMain.on("init-session", onSessionInit);
|
|
|
|
}
|