From 5f80628a4dadecc02dfa0644d0fe5c3ae38360db Mon Sep 17 00:00:00 2001 From: Laurent Cozic Date: Fri, 27 Nov 2020 11:08:42 +0000 Subject: [PATCH] Desktop: Fixed potential crash when watching note files or resources --- packages/lib/services/ExternalEditWatcher.ts | 5 ++++- packages/lib/services/ResourceEditWatcher/index.ts | 11 ++++++++--- 2 files changed, 12 insertions(+), 4 deletions(-) diff --git a/packages/lib/services/ExternalEditWatcher.ts b/packages/lib/services/ExternalEditWatcher.ts index 21e0285ae..6a20a49d1 100644 --- a/packages/lib/services/ExternalEditWatcher.ts +++ b/packages/lib/services/ExternalEditWatcher.ts @@ -81,7 +81,10 @@ export default class ExternalEditWatcher { if (!this.chokidar_) return; if (!this.watcher_) { - this.watcher_ = this.chokidar_.watch(fileToWatch); + this.watcher_ = this.chokidar_.watch(fileToWatch, { + useFsEvents: false, + }); + this.watcher_.on('all', async (event: string, path: string) => { this.logger().debug(`ExternalEditWatcher: Event: ${event}: ${path}`); diff --git a/packages/lib/services/ResourceEditWatcher/index.ts b/packages/lib/services/ResourceEditWatcher/index.ts index a97fda2fd..93e942682 100644 --- a/packages/lib/services/ResourceEditWatcher/index.ts +++ b/packages/lib/services/ResourceEditWatcher/index.ts @@ -156,9 +156,14 @@ export default class ResourceEditWatcher { }; if (!this.watcher_) { - this.watcher_ = this.chokidar_.watch(fileToWatch); + this.watcher_ = this.chokidar_.watch(fileToWatch, { + // Need to turn off fs-events because when it's on Chokidar + // keeps emitting "modified" events (on "raw" handler), several + // times per seconds, even when nothing is changed. + useFsEvents: false, + }); this.watcher_.on('all', async (event: any, path: string) => { - path = toSystemSlashes(path, 'linux'); + path = path ? toSystemSlashes(path, 'linux') : ''; this.logger().info(`ResourceEditWatcher: Event: ${event}: ${path}`); @@ -186,7 +191,7 @@ export default class ResourceEditWatcher { // // @ts-ignore Leave unused path variable this.watcher_.on('raw', async (event: string, path: string, options: any) => { - const watchedPath = toSystemSlashes(options.watchedPath, 'linux'); + const watchedPath = options.watchedPath ? toSystemSlashes(options.watchedPath, 'linux') : ''; this.logger().debug(`ResourceEditWatcher: Raw event: ${event}: ${watchedPath}`); if (event === 'rename') {