aboutsummaryrefslogtreecommitdiffstats
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
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>
-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
-rw-r--r--yarn.lock2
7 files changed, 10 insertions, 72 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}
diff --git a/yarn.lock b/yarn.lock
index 6a1288e..e6f05ba 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -1326,8 +1326,6 @@ __metadata:
1326 dependencies: 1326 dependencies:
1327 "@sophie/service-shared": "workspace:*" 1327 "@sophie/service-shared": "workspace:*"
1328 electron: 17.0.0 1328 electron: 17.0.0
1329 loglevel: ^1.8.0
1330 loglevel-plugin-prefix: ^0.8.4
1331 languageName: unknown 1329 languageName: unknown
1332 linkType: soft 1330 linkType: soft
1333 1331