"use strict"; import { createWindow } from './window'; import { ipcMain, BrowserWindow } from "electron"; import { initSession } from './session'; import { backgroundMitt } from './emitter'; // const portAudio = require('naudiodon'); interface RenderMessage { content: string; context: string; subContext: string; modifiers: string; time: string; id: string; } interface IpcRendererPayload { endpoint: string; message: RenderMessage | null; } let win: BrowserWindow | null; let activeSession = false; backgroundMitt.on('ipc-renderer', (payload: IpcRendererPayload) => { if (win) win.webContents.send(payload.endpoint, { message: payload.message }); }); const windowDismount = (): void => { win = null; backgroundMitt.emit('window-active', false); ipcMain.removeAllListeners('send-message'); } /* * The main function will be run after electron app is ready. */ export async function main() { // create main window. if (!win) win = await createWindow({ width: 350, height: 525, resizable: false }); // Instantiate socket session with crimata-platorm. if (!activeSession) initSession(); activeSession = true; // Handle window close. win.on("closed", windowDismount); // TODO: FIX recorder restart bug // let audioInput: string[] = []; // const updateRecorder = async (Event: any, record: boolean): void => { // if (record) { // ia.resume(); // } else { // ia.pause(); // const audio = processAudio(audioInput); // sendAudio(audio); // audioInput = []; // } // } // function processAudio(audioInput: Array): Buffer { // let audio = ''; // audioInput.forEach(chunk => audio += chunk); // return Buffer.from(audio, "base64"); // } // const ia = new portAudio.AudioIO({ // inOptions: { // channelCount: 1, // sampleFormat: 16, // sampleRate: 16000, // deviceId: -1, // closeOnError: false, // } // }); // ia.setEncoding('base64'); // ia.start(); // ia.pause(); // ia.on('error', (e: Error) => { // console.log('Error recording audio', + e); // }); // ia.on('data', (chunk: string) => { // audioInput.push(chunk); // }); }