import { ipcMain } from "electron"; import { WORKING_DIR } from "../constants"; import fs from 'fs/promises' import path from 'path' import { Logger } from "../logger"; const logger = Logger('ipcFilestorage'); ipcMain.handle('fileStorage:writeFile', async (_, file: string, data: string | Buffer, inWorkingDir : boolean = true) => { logger.log(`System call fileStorage:writeFile with file=${file} inWorkingDir=${inWorkingDir}`); const fullPath = path.join(inWorkingDir ? WORKING_DIR : '', file); await fs.mkdir(path.dirname(fullPath), { recursive: true }); await fs.writeFile(fullPath, data); return true; }); ipcMain.handle('fileStorage:readFile', async (_, file: string, inWorkingDir : boolean = true) => { logger.log(`System call fileStorage:readFile with file=${file} inWorkingDir=${inWorkingDir}`); try{ const fullPath = path.join(inWorkingDir ? WORKING_DIR : '', file); const data = await fs.readFile(fullPath); return data; }catch(e){ return null; } }); ipcMain.handle('fileStorage:size', async (_, file: string, inWorkingDir : boolean = true) => { logger.log(`System call fileStorage:size with file=${file} inWorkingDir=${inWorkingDir}`); try{ const fullPath = path.join(inWorkingDir ? WORKING_DIR : '', file); const stats = await fs.stat(fullPath); return stats.size; }catch(e){ return 0; } }); ipcMain.handle('fileStorage:fileExists', async (_, file: string, inWorkingDir : boolean = true) => { logger.log(`System call fileStorage:fileExists with file=${file} inWorkingDir=${inWorkingDir}`); try{ const fullPath = path.join(inWorkingDir ? WORKING_DIR : '', file); await fs.access(fullPath); return true; }catch(e){ return false; } });