aboutsummaryrefslogtreecommitdiffstats
path: root/packages
diff options
context:
space:
mode:
authorLibravatar Kristóf Marussy <kristof@marussy.com>2022-01-13 02:34:40 +0100
committerLibravatar Kristóf Marussy <kristof@marussy.com>2022-02-08 21:43:03 +0100
commit5dbe6b2735c6e0f0d92f5f53806bcbcaeebfbdf2 (patch)
tree80c2e3a72a06489ab7b54682b1b8546d6bf06985 /packages
parentfeat: Service switcher buttons (diff)
downloadsophie-5dbe6b2735c6e0f0d92f5f53806bcbcaeebfbdf2.tar.gz
sophie-5dbe6b2735c6e0f0d92f5f53806bcbcaeebfbdf2.tar.zst
sophie-5dbe6b2735c6e0f0d92f5f53806bcbcaeebfbdf2.zip
fix: Do not access localStorage in service-preload
loglevel wants to persist the current log level in localStorage, which apparently crashes the network service. We'll need to find another way to log in service preload scripts. The main window preload scripts seems unaffected, even though we use loglevel (and hence localStorage) in both the preload and the renderer script. Maybe related: https://github.com/electron/electron/issues/31689 Signed-off-by: Kristóf Marussy <kristof@marussy.com>
Diffstat (limited to 'packages')
-rw-r--r--packages/service-preload/.eslintrc.cjs7
-rw-r--r--packages/service-preload/package.json4
-rw-r--r--packages/service-preload/src/index.ts6
-rw-r--r--packages/service-preload/src/utils/log.ts49
-rw-r--r--packages/service-preload/tsconfig.json7
-rw-r--r--packages/service-preload/types/importMeta.d.ts7
6 files changed, 10 insertions, 70 deletions
diff --git a/packages/service-preload/.eslintrc.cjs b/packages/service-preload/.eslintrc.cjs
index 02fab21..a5421bb 100644
--- a/packages/service-preload/.eslintrc.cjs
+++ b/packages/service-preload/.eslintrc.cjs
@@ -3,4 +3,11 @@ module.exports = {
3 node: true, 3 node: true,
4 browser: true, 4 browser: true,
5 }, 5 },
6 rules: {
7 // Using loglevel causes
8 // [ERROR:network_service_instance_impl.cc(916)] Network service crashed, restarting service.
9 // so we just log to the console instead.
10 // See also https://github.com/electron/electron/issues/31833
11 'no-console': 'off',
12 },
6}; 13};
diff --git a/packages/service-preload/package.json b/packages/service-preload/package.json
index eae1fc3..e7beac4 100644
--- a/packages/service-preload/package.json
+++ b/packages/service-preload/package.json
@@ -9,8 +9,6 @@
9 }, 9 },
10 "dependencies": { 10 "dependencies": {
11 "@sophie/service-shared": "workspace:*", 11 "@sophie/service-shared": "workspace:*",
12 "electron": "17.0.0", 12 "electron": "17.0.0"
13 "loglevel": "^1.8.0",
14 "loglevel-plugin-prefix": "^0.8.4"
15 } 13 }
16} 14}
diff --git a/packages/service-preload/src/index.ts b/packages/service-preload/src/index.ts
index bb4a62d..8b6630a 100644
--- a/packages/service-preload/src/index.ts
+++ b/packages/service-preload/src/index.ts
@@ -21,10 +21,6 @@
21import { ServiceToMainIpcMessage, webSource } from '@sophie/service-shared'; 21import { ServiceToMainIpcMessage, webSource } from '@sophie/service-shared';
22import { ipcRenderer, webFrame } from 'electron'; 22import { ipcRenderer, webFrame } from 'electron';
23 23
24import { getLogger } from './utils/log';
25
26const log = getLogger('index');
27
28if (webFrame.parent === null) { 24if (webFrame.parent === null) {
29 // Inject CSS to simulate `browserView.setBackgroundColor`. 25 // Inject CSS to simulate `browserView.setBackgroundColor`.
30 // This is injected before the page loads, so the styles from the website will overwrite it. 26 // This is injected before the page loads, so the styles from the website will overwrite it.
@@ -62,5 +58,5 @@ async function fetchAndExecuteInjectScript(): Promise<void> {
62} 58}
63 59
64fetchAndExecuteInjectScript().catch((error) => { 60fetchAndExecuteInjectScript().catch((error) => {
65 log.error('Failed to fetch inject source:', error); 61 console.error('Failed to fetch inject source:', error);
66}); 62});
diff --git a/packages/service-preload/src/utils/log.ts b/packages/service-preload/src/utils/log.ts
deleted file mode 100644
index f0bcd59..0000000
--- a/packages/service-preload/src/utils/log.ts
+++ /dev/null
@@ -1,49 +0,0 @@
1/*
2 * Copyright (C) 2022 Kristóf Marussy <kristof@marussy.com>
3 *
4 * This file is part of Sophie.
5 *
6 * Sophie is free software: you can redistribute it and/or modify
7 * it under the terms of the GNU Affero General Public License as
8 * published by the Free Software Foundation, version 3.
9 *
10 * This program is distributed in the hope that it will be useful,
11 * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 * GNU Affero General Public License for more details.
14 *
15 * You should have received a copy of the GNU Affero General Public License
16 * along with this program. If not, see <https://www.gnu.org/licenses/>.
17 *
18 * SPDX-License-Identifier: AGPL-3.0-only
19 */
20
21import loglevel, { Logger } from 'loglevel';
22import prefix from 'loglevel-plugin-prefix';
23
24if (import.meta.env?.DEV) {
25 loglevel.setLevel('debug');
26} else {
27 loglevel.setLevel('info');
28}
29
30prefix.reg(loglevel);
31prefix.apply(loglevel, {
32 format(level, name, timestamp) {
33 const timeStr = timestamp.toString();
34 const nameStr = typeof name === 'undefined' ? '' : ` ${name}`;
35 return `[${timeStr}] ${level}${nameStr}:`;
36 },
37});
38
39export function getLogger(loggerName: string): Logger {
40 return loglevel.getLogger(loggerName);
41}
42
43export function silenceLogger(): void {
44 loglevel.disableAll();
45 const loggers = loglevel.getLoggers();
46 Object.values(loggers).forEach((logger) => {
47 logger.disableAll();
48 });
49}
diff --git a/packages/service-preload/tsconfig.json b/packages/service-preload/tsconfig.json
index 189859e..33ce1de 100644
--- a/packages/service-preload/tsconfig.json
+++ b/packages/service-preload/tsconfig.json
@@ -9,10 +9,5 @@
9 "path": "../service-shared/tsconfig.build.json" 9 "path": "../service-shared/tsconfig.build.json"
10 } 10 }
11 ], 11 ],
12 "include": [ 12 "include": ["src/**/*.ts", ".eslintrc.cjs", "esbuild.config.js"]
13 "src/**/*.ts",
14 "types/**/*.ts",
15 ".eslintrc.cjs",
16 "esbuild.config.js"
17 ]
18} 13}
diff --git a/packages/service-preload/types/importMeta.d.ts b/packages/service-preload/types/importMeta.d.ts
deleted file mode 100644
index ff3b17c..0000000
--- a/packages/service-preload/types/importMeta.d.ts
+++ /dev/null
@@ -1,7 +0,0 @@
1interface ImportMeta {
2 env: {
3 DEV: boolean;
4 MODE: string;
5 PROD: boolean;
6 };
7}