diff --git a/package.json b/package.json index 09f5526d..d39a373b 100644 --- a/package.json +++ b/package.json @@ -9,7 +9,7 @@ "main": "app/background.js", "scripts": { "dev": "nextron", - "postinstall": "electron-builder install-app-deps", + "postinstall": "electron-builder install-app-deps && patch-package", "build:mac": "nextron build --mac --x64", "build:win": "nextron build --win --x64", "build:linux": "nextron build --linux" @@ -61,6 +61,7 @@ "nextron": "^5.15.0", "opensubtitles-api": "^5.1.2", "parse-torrent-title": "^1.3.0", + "patch-package": "^6.2.2", "plyr": "^3.6.2", "prettier": "^2.0.5", "pretty-bytes": "^5.3.0", diff --git a/patches/electron-unhandled+3.0.2.patch b/patches/electron-unhandled+3.0.2.patch new file mode 100644 index 00000000..45b1d466 --- /dev/null +++ b/patches/electron-unhandled+3.0.2.patch @@ -0,0 +1,104 @@ +diff --git a/node_modules/electron-unhandled/index.d.ts b/node_modules/electron-unhandled/index.d.ts +index 6231ad4..b5172f2 100644 +--- a/node_modules/electron-unhandled/index.d.ts ++++ b/node_modules/electron-unhandled/index.d.ts +@@ -1,31 +1,33 @@ +-declare namespace unhandled { ++ declare namespace unhandled { + interface UnhandledOptions { + /** + Custom logger that receives the error. +- + Can be useful if you for example integrate with Sentry. +- + @default console.error + */ + readonly logger?: (error: Error) => void; + + /** + Present an error dialog to the user. +- + Default: [Only in production](https://github.com/sindresorhus/electron-is-dev). + */ + readonly showDialog?: boolean; + ++ + /** +- When specified, the error dialog will include a `Report…` button, which when clicked, executes the given function with the error as the first argument. ++ Filter option that receives an array of regex. ++ electron-unhandled would not show the error dialog if error message passed by any of regex. ++ @default [] ++ */ ++ readonly filter?: Array; + ++ /** ++ When specified, the error dialog will include a `Report…` button, which when clicked, executes the given function with the error as the first argument. + @default undefined +- + @example + ``` + import unhandled = require('electron-unhandled'); + import {openNewGitHubIssue, debugInfo} = require('electron-util'); +- + unhandled({ + reportButton: error => { + openNewGitHubIssue({ +@@ -35,7 +37,6 @@ declare namespace unhandled { + }); + } + }); +- + // Example of how the GitHub issue will look like: https://github.com/sindresorhus/electron-unhandled/issues/new?body=%60%60%60%0AError%3A+Test%0A++++at+%2FUsers%2Fsindresorhus%2Fdev%2Foss%2Felectron-unhandled%2Fexample.js%3A27%3A21%0A%60%60%60%0A%0A---%0A%0AExample+1.1.0%0AElectron+3.0.8%0Adarwin+18.2.0%0ALocale%3A+en-US + ``` + */ +@@ -45,7 +46,6 @@ declare namespace unhandled { + interface LogErrorOptions { + /** + Title of the error dialog. +- + @default `${appName} encountered an error` + */ + readonly title?: string; +@@ -55,19 +55,16 @@ declare namespace unhandled { + declare const unhandled: { + /** + Catch unhandled errors and promise rejections in your [Electron](https://electronjs.org) app. +- + You probably want to call this both in the main process and any renderer processes to catch all possible errors. + */ + (options?: unhandled.UnhandledOptions): void; + + /** + Log an error. This does the same as with caught unhandled errors. +- + It will use the same options specified in the `unhandled()` call or the defaults. +- + @param error - Error to log. + */ + logError(error: Error, options?: unhandled.LogErrorOptions): void; + }; + +-export = unhandled; ++export = unhandled +\ No newline at end of file +diff --git a/node_modules/electron-unhandled/index.js b/node_modules/electron-unhandled/index.js +index 094955d..7ea7ed9 100644 +--- a/node_modules/electron-unhandled/index.js ++++ b/node_modules/electron-unhandled/index.js +@@ -17,11 +17,15 @@ let installed = false; + + let options = { + logger: console.error, +- showDialog: !isDev ++ showDialog: !isDev, ++ filter: [] + }; + + const handleError = (title, error) => { + error = ensureError(error); ++ if (options.filter && options.filter.some(regex => regex.test(error.message))) { ++ return; ++ } + + try { + options.logger(error);