aboutsummaryrefslogtreecommitdiffstats
path: root/src/electron/ipc-api
diff options
context:
space:
mode:
authorLibravatar Kristóf Marussy <kristof@marussy.com>2022-04-23 01:59:21 +0200
committerLibravatar GitHub <noreply@github.com>2022-04-22 23:59:21 +0000
commitd02644f7c41150709795e57bfd40351b4da35a7b (patch)
tree2403fb76bd5fae1703f8b55172ffce9e0a5d2bce /src/electron/ipc-api
parentComplete tray icons redesign for all platforms (#28) (diff)
downloadferdium-app-d02644f7c41150709795e57bfd40351b4da35a7b.tar.gz
ferdium-app-d02644f7c41150709795e57bfd40351b4da35a7b.tar.zst
ferdium-app-d02644f7c41150709795e57bfd40351b4da35a7b.zip
Preload safe debug shim (#29)
In https://github.com/ferdium/ferdium-app/pull/23 we removed usages of the debug package due to an electron bug. This patch aims to restore some debug functionality by introducing a shim. The shim detect whether if it is being introduced in a preload script where the electron but would be triggered, and falls back to a simple replacement for debug. However, in the main and renderer processes, where a preload script is not being used, we still get full debug functionality. In this way, a module can be used both in a preload script and outside of it, while still preserving debug functionality whenever possible. Signed-off-by: Kristóf Marussy <kristof@marussy.com>
Diffstat (limited to 'src/electron/ipc-api')
-rw-r--r--src/electron/ipc-api/autoUpdate.ts2
-rw-r--r--src/electron/ipc-api/cld.ts2
-rw-r--r--src/electron/ipc-api/dnd.ts2
-rw-r--r--src/electron/ipc-api/download.ts7
-rw-r--r--src/electron/ipc-api/sessionStorage.ts9
5 files changed, 10 insertions, 12 deletions
diff --git a/src/electron/ipc-api/autoUpdate.ts b/src/electron/ipc-api/autoUpdate.ts
index 930644816..839f1f117 100644
--- a/src/electron/ipc-api/autoUpdate.ts
+++ b/src/electron/ipc-api/autoUpdate.ts
@@ -2,7 +2,7 @@ import { app, ipcMain, BrowserWindow } from 'electron';
2import { autoUpdater } from 'electron-updater'; 2import { autoUpdater } from 'electron-updater';
3import { isMac, isWindows } from '../../environment'; 3import { isMac, isWindows } from '../../environment';
4 4
5const debug = require('debug')('Ferdium:ipcApi:autoUpdate'); 5const debug = require('../../preload-safe-debug')('Ferdium:ipcApi:autoUpdate');
6 6
7export default (params: { mainWindow: BrowserWindow; settings: any }) => { 7export default (params: { mainWindow: BrowserWindow; settings: any }) => {
8 const enableUpdate = Boolean(params.settings.app.get('automaticUpdates')); 8 const enableUpdate = Boolean(params.settings.app.get('automaticUpdates'));
diff --git a/src/electron/ipc-api/cld.ts b/src/electron/ipc-api/cld.ts
index 8918b016f..a6332e22d 100644
--- a/src/electron/ipc-api/cld.ts
+++ b/src/electron/ipc-api/cld.ts
@@ -2,7 +2,7 @@ import { ipcMain } from 'electron';
2// @ts-ignore 2// @ts-ignore
3import cld from 'cld'; 3import cld from 'cld';
4 4
5const debug = require('debug')('Ferdium:ipcApi:cld'); 5const debug = require('../../preload-safe-debug')('Ferdium:ipcApi:cld');
6 6
7export default async () => { 7export default async () => {
8 ipcMain.handle('detect-language', async (_event, { sample }) => { 8 ipcMain.handle('detect-language', async (_event, { sample }) => {
diff --git a/src/electron/ipc-api/dnd.ts b/src/electron/ipc-api/dnd.ts
index 54a325db2..6b1777367 100644
--- a/src/electron/ipc-api/dnd.ts
+++ b/src/electron/ipc-api/dnd.ts
@@ -3,7 +3,7 @@ import { isMac } from '../../environment';
3 3
4const { getDoNotDisturb } = require('macos-notification-state'); 4const { getDoNotDisturb } = require('macos-notification-state');
5 5
6const debug = require('debug')('Ferdium:ipcApi:dnd'); 6const debug = require('../../preload-safe-debug')('Ferdium:ipcApi:dnd');
7 7
8export default async () => { 8export default async () => {
9 ipcMain.handle('get-dnd', async () => { 9 ipcMain.handle('get-dnd', async () => {
diff --git a/src/electron/ipc-api/download.ts b/src/electron/ipc-api/download.ts
index 3631e8fee..21af0d045 100644
--- a/src/electron/ipc-api/download.ts
+++ b/src/electron/ipc-api/download.ts
@@ -4,8 +4,7 @@ import mime from 'mime-types';
4import { writeFileSync } from 'fs-extra'; 4import { writeFileSync } from 'fs-extra';
5import { PathLike } from 'fs'; 5import { PathLike } from 'fs';
6 6
7// TODO: Go back to 'debug' from 'console.log' when https://github.com/electron/electron/issues/31689 is fixed 7const debug = require('../../preload-safe-debug')('Ferdium:ipcApi:download');
8// const debug = require('debug')('Ferdium:ipcApi:download');
9 8
10function decodeBase64Image(dataString: string) { 9function decodeBase64Image(dataString: string) {
11 const matches = dataString.match(/^data:([+/A-Za-z-]+);base64,(.+)$/); 10 const matches = dataString.match(/^data:([+/A-Za-z-]+);base64,(.+)$/);
@@ -28,7 +27,7 @@ export default (params: { mainWindow: BrowserWindow }) => {
28 const dl = await download(win!, url, { 27 const dl = await download(win!, url, {
29 saveAs: true, 28 saveAs: true,
30 }); 29 });
31 console.log('File saved to', dl.savePath); 30 debug('File saved to', dl.savePath);
32 } else { 31 } else {
33 const extension = mime.extension(fileOptions.mime); 32 const extension = mime.extension(fileOptions.mime);
34 const filename = `${fileOptions.name}.${extension}`; 33 const filename = `${fileOptions.name}.${extension}`;
@@ -47,7 +46,7 @@ export default (params: { mainWindow: BrowserWindow }) => {
47 'binary', 46 'binary',
48 ); 47 );
49 48
50 console.log('File blob saved to', saveDialog.filePath); 49 debug('File blob saved to', saveDialog.filePath);
51 } catch (error) { 50 } catch (error) {
52 console.error(error); 51 console.error(error);
53 } 52 }
diff --git a/src/electron/ipc-api/sessionStorage.ts b/src/electron/ipc-api/sessionStorage.ts
index 96acacd12..2a9f4b4d1 100644
--- a/src/electron/ipc-api/sessionStorage.ts
+++ b/src/electron/ipc-api/sessionStorage.ts
@@ -2,8 +2,7 @@ import { ipcMain, Session, session } from 'electron';
2 2
3import { TODOS_PARTITION_ID } from '../../config'; 3import { TODOS_PARTITION_ID } from '../../config';
4 4
5// TODO: Go back to 'debug' from 'console.log' when https://github.com/electron/electron/issues/31689 is fixed 5const debug = require('../../preload-safe-debug')('Ferdium:ipcApi:sessionStorage');
6// const debug = require('debug')('Ferdium:ipcApi:sessionStorage');
7 6
8function deduceSession(serviceId: string | undefined | null): Session { 7function deduceSession(serviceId: string | undefined | null): Session {
9 if (serviceId) { 8 if (serviceId) {
@@ -22,14 +21,14 @@ export default async () => {
22 const serviceSession = deduceSession(serviceId); 21 const serviceSession = deduceSession(serviceId);
23 serviceSession.flushStorageData(); 22 serviceSession.flushStorageData();
24 if (targetsToClear) { 23 if (targetsToClear) {
25 console.log('Clearing targets:', targetsToClear); 24 debug('Clearing targets:', targetsToClear);
26 serviceSession.clearStorageData(targetsToClear); 25 serviceSession.clearStorageData(targetsToClear);
27 } else { 26 } else {
28 console.log('Clearing all targets'); 27 debug('Clearing all targets');
29 serviceSession.clearStorageData(); 28 serviceSession.clearStorageData();
30 } 29 }
31 } catch (error) { 30 } catch (error) {
32 console.log(error); 31 debug(error);
33 } 32 }
34 }); 33 });
35 34