diff options
author | Kristóf Marussy <kristof@marussy.com> | 2022-01-13 02:34:40 +0100 |
---|---|---|
committer | Kristóf Marussy <kristof@marussy.com> | 2022-02-08 21:43:03 +0100 |
commit | 5dbe6b2735c6e0f0d92f5f53806bcbcaeebfbdf2 (patch) | |
tree | 80c2e3a72a06489ab7b54682b1b8546d6bf06985 | |
parent | feat: Service switcher buttons (diff) | |
download | sophie-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.cjs | 7 | ||||
-rw-r--r-- | packages/service-preload/package.json | 4 | ||||
-rw-r--r-- | packages/service-preload/src/index.ts | 6 | ||||
-rw-r--r-- | packages/service-preload/src/utils/log.ts | 49 | ||||
-rw-r--r-- | packages/service-preload/tsconfig.json | 7 | ||||
-rw-r--r-- | packages/service-preload/types/importMeta.d.ts | 7 | ||||
-rw-r--r-- | yarn.lock | 2 |
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 @@ | |||
21 | import { ServiceToMainIpcMessage, webSource } from '@sophie/service-shared'; | 21 | import { ServiceToMainIpcMessage, webSource } from '@sophie/service-shared'; |
22 | import { ipcRenderer, webFrame } from 'electron'; | 22 | import { ipcRenderer, webFrame } from 'electron'; |
23 | 23 | ||
24 | import { getLogger } from './utils/log'; | ||
25 | |||
26 | const log = getLogger('index'); | ||
27 | |||
28 | if (webFrame.parent === null) { | 24 | if (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 | ||
64 | fetchAndExecuteInjectScript().catch((error) => { | 60 | fetchAndExecuteInjectScript().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 | |||
21 | import loglevel, { Logger } from 'loglevel'; | ||
22 | import prefix from 'loglevel-plugin-prefix'; | ||
23 | |||
24 | if (import.meta.env?.DEV) { | ||
25 | loglevel.setLevel('debug'); | ||
26 | } else { | ||
27 | loglevel.setLevel('info'); | ||
28 | } | ||
29 | |||
30 | prefix.reg(loglevel); | ||
31 | prefix.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 | |||
39 | export function getLogger(loggerName: string): Logger { | ||
40 | return loglevel.getLogger(loggerName); | ||
41 | } | ||
42 | |||
43 | export 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 @@ | |||
1 | interface ImportMeta { | ||
2 | env: { | ||
3 | DEV: boolean; | ||
4 | MODE: string; | ||
5 | PROD: boolean; | ||
6 | }; | ||
7 | } | ||
@@ -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 | ||