"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); }