const chokidar = require("chokidar"); const { ipcMain } = require("electron"); const settings = require("electron-settings"); const { default: ipcTypes } = require("../../src/ipc.types"); var watcher; function StartWatcher() { const filePaths = settings.getSync("filePaths") || []; console.log("StartWatcher -> filePaths", filePaths); watcher = chokidar.watch(filePaths, { ignored: /[\/\\]\./, persistent: true, ignoreInitial: true, awaitWriteFinish: { pollInterval: 100, stabilityThreshold: 2000, }, }); watcher .on("add", function (path) { console.log("File", path, "has been added"); }) .on("addDir", function (path) { console.log("Directory", path, "has been added"); }) .on("change", function (path) { console.log("File", path, "has been changed"); }) .on("unlink", function (path) { console.log("File", path, "has been removed"); }) .on("unlinkDir", function (path) { console.log("Directory", path, "has been removed"); }) .on("error", function (error) { console.log("Error happened", error); ipcMain.emit(ipcTypes.fileWatcher.toRenderer.error, error); }) .on("ready", onWatcherReady) .on("raw", function (event, path, details) { // This event should be triggered everytime something happens. console.log("Raw event info:", event, path, details); }); return filePaths; } function onWatcherReady() { console.log("Ready!"); ipcMain.emit(ipcTypes.fileWatcher.toRenderer.startSuccess); } async function StopWatcher() { await watcher.close(); ipcMain.emit(ipcTypes.fileWatcher.toRenderer.stopSuccess); console.log("Watcher Stopped!", watcher); } exports.StartWatcher = StartWatcher; exports.StopWatcher = StopWatcher; exports.watcher = watcher;