botui/dist/main/main.js

103 lines
4.2 KiB
JavaScript
Raw Normal View History

2024-10-26 13:05:56 -03:00
"use strict";
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
if (k2 === undefined) k2 = k;
var desc = Object.getOwnPropertyDescriptor(m, k);
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
desc = { enumerable: true, get: function() { return m[k]; } };
}
Object.defineProperty(o, k2, desc);
}) : (function(o, m, k, k2) {
if (k2 === undefined) k2 = k;
o[k2] = m[k];
}));
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
Object.defineProperty(o, "default", { enumerable: true, value: v });
}) : function(o, v) {
o["default"] = v;
});
var __importStar = (this && this.__importStar) || function (mod) {
if (mod && mod.__esModule) return mod;
var result = {};
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
__setModuleDefault(result, mod);
return result;
};
Object.defineProperty(exports, "__esModule", { value: true });
2024-10-26 16:26:11 -03:00
require('dotenv').config();
2024-10-26 21:21:51 -03:00
require('electron-require');
2024-10-26 13:05:56 -03:00
const electron_1 = require("electron");
const path = __importStar(require("path"));
2024-10-26 16:26:11 -03:00
const electron_2 = require("electron");
2024-10-26 13:05:56 -03:00
const recorder_service_1 = require("../services/recorder.service");
const player_service_1 = require("../services/player.service");
const recorder = new recorder_service_1.RecorderService();
const player = new player_service_1.PlayerService();
function createWindow() {
const mainWindow = new electron_1.BrowserWindow({
width: 1200,
height: 800,
webPreferences: {
2024-10-26 21:21:51 -03:00
nodeIntegrationInWorker: true,
2024-10-26 13:05:56 -03:00
nodeIntegration: true,
2024-10-26 21:21:51 -03:00
nodeIntegrationInSubFrames: true,
2024-10-26 13:05:56 -03:00
contextIsolation: false,
preload: path.join(__dirname, '../preload/preload.js')
}
});
if (process.env.NODE_ENV === 'development') {
mainWindow.loadURL('http://localhost:8080');
mainWindow.webContents.openDevTools();
}
else {
mainWindow.loadFile(path.join(__dirname, '../../src/renderer/index.html'));
}
}
electron_1.app.whenReady().then(createWindow);
electron_1.app.on('window-all-closed', () => {
if (process.platform !== 'darwin') {
electron_1.app.quit();
}
});
electron_1.app.on('activate', () => {
if (electron_1.BrowserWindow.getAllWindows().length === 0) {
createWindow();
}
});
electron_1.ipcMain.handle('mouse-event', recorder.mouseHandleEvent.bind(recorder));
electron_1.ipcMain.handle('keyboard-event', recorder.keyboardHandleEvent.bind(recorder));
electron_1.ipcMain.handle('screenshot-captured', recorder.screenshotHandleEvent.bind(recorder));
2024-10-26 21:21:51 -03:00
// Handler to capture the entire screen
electron_1.ipcMain.handle('get-screenshot', async () => {
console.log('get-screenshot called');
const sources = await electron_1.desktopCapturer.getSources({ types: ['screen'] });
const screenSource = sources[0]; // Get the first screen source
const { thumbnail } = screenSource; // Thumbnail is a native image
return thumbnail.toPNG(); // Return the screenshot as PNG buffer
});
2024-10-26 13:05:56 -03:00
electron_1.ipcMain.handle('start-recording', async () => {
2024-10-26 21:21:51 -03:00
console.log('start-recording called');
2024-10-26 13:05:56 -03:00
await recorder.startRecording();
});
electron_1.ipcMain.handle('stop-recording', async () => {
2024-10-26 21:21:51 -03:00
console.log('stop-recording called');
2024-10-26 13:05:56 -03:00
return await recorder.stopRecording();
});
electron_1.ipcMain.handle('execute-basic-code', async (_, code) => {
2024-10-26 21:21:51 -03:00
console.log('execute-basic-code called with:', code);
2024-10-26 13:05:56 -03:00
await player.executeBasicCode(code);
});
2024-10-26 16:26:11 -03:00
electron_1.ipcMain.handle('check-microphone-permission', async () => {
2024-10-26 21:21:51 -03:00
console.log('check-microphone-permission called');
2024-10-26 16:26:11 -03:00
if (process.platform === 'darwin') {
const status = await electron_2.systemPreferences.getMediaAccessStatus('microphone');
if (status !== 'granted') {
const success = await electron_2.systemPreferences.askForMediaAccess('microphone');
return success;
}
return true;
}
2024-10-26 21:21:51 -03:00
return true; // On Windows/Linux, permissions are handled by the OS
2024-10-26 16:26:11 -03:00
});
// Enable required permissions
electron_1.app.commandLine.appendSwitch('enable-speech-dispatcher');