diff options
-rw-r--r-- | packages/main/package.json | 2 | ||||
-rw-r--r-- | packages/main/src/controllers/config.ts | 19 | ||||
-rw-r--r-- | packages/main/src/controllers/nativeTheme.ts | 8 | ||||
-rw-r--r-- | packages/main/vite.config.js | 13 | ||||
-rw-r--r-- | yarn.lock | 11 |
5 files changed, 46 insertions, 7 deletions
diff --git a/packages/main/package.json b/packages/main/package.json index 1c6a800..5010092 100644 --- a/packages/main/package.json +++ b/packages/main/package.json | |||
@@ -12,6 +12,7 @@ | |||
12 | "dependencies": { | 12 | "dependencies": { |
13 | "@sophie/service-shared": "workspace:*", | 13 | "@sophie/service-shared": "workspace:*", |
14 | "@sophie/shared": "workspace:*", | 14 | "@sophie/shared": "workspace:*", |
15 | "consola": "^2.15.3", | ||
15 | "electron": "16.0.5", | 16 | "electron": "16.0.5", |
16 | "json5": "^2.2.0", | 17 | "json5": "^2.2.0", |
17 | "lodash": "^4.17.21", | 18 | "lodash": "^4.17.21", |
@@ -20,6 +21,7 @@ | |||
20 | "ms": "^2.1.3" | 21 | "ms": "^2.1.3" |
21 | }, | 22 | }, |
22 | "devDependencies": { | 23 | "devDependencies": { |
24 | "@types/debug": "^4", | ||
23 | "@types/electron-devtools-installer": "^2.2.1", | 25 | "@types/electron-devtools-installer": "^2.2.1", |
24 | "@types/lodash": "^4.14.178", | 26 | "@types/lodash": "^4.14.178", |
25 | "@types/ms": "^0.7.31", | 27 | "@types/ms": "^0.7.31", |
diff --git a/packages/main/src/controllers/config.ts b/packages/main/src/controllers/config.ts index c7b027d..b6aba35 100644 --- a/packages/main/src/controllers/config.ts +++ b/packages/main/src/controllers/config.ts | |||
@@ -18,6 +18,7 @@ | |||
18 | * SPDX-License-Identifier: AGPL-3.0-only | 18 | * SPDX-License-Identifier: AGPL-3.0-only |
19 | */ | 19 | */ |
20 | 20 | ||
21 | import consola from 'consola'; | ||
21 | import { debounce } from 'lodash'; | 22 | import { debounce } from 'lodash'; |
22 | import ms from 'ms'; | 23 | import ms from 'ms'; |
23 | import { applySnapshot, getSnapshot, onSnapshot } from 'mobx-state-tree'; | 24 | import { applySnapshot, getSnapshot, onSnapshot } from 'mobx-state-tree'; |
@@ -28,11 +29,15 @@ import { Disposer } from '../utils'; | |||
28 | 29 | ||
29 | const DEFAULT_CONFIG_DEBOUNCE_TIME = ms('1s'); | 30 | const DEFAULT_CONFIG_DEBOUNCE_TIME = ms('1s'); |
30 | 31 | ||
32 | const logger = consola.withTag('sophie:controller:config'); | ||
33 | |||
31 | export async function initConfig( | 34 | export async function initConfig( |
32 | config: Config, | 35 | config: Config, |
33 | persistenceService: ConfigPersistenceService, | 36 | persistenceService: ConfigPersistenceService, |
34 | debounceTime: number = DEFAULT_CONFIG_DEBOUNCE_TIME, | 37 | debounceTime: number = DEFAULT_CONFIG_DEBOUNCE_TIME, |
35 | ): Promise<Disposer> { | 38 | ): Promise<Disposer> { |
39 | logger.debug('Initializing controller'); | ||
40 | |||
36 | let lastSnapshotOnDisk: ConfigSnapshotOut | null = null; | 41 | let lastSnapshotOnDisk: ConfigSnapshotOut | null = null; |
37 | let writingConfig: boolean = false; | 42 | let writingConfig: boolean = false; |
38 | 43 | ||
@@ -42,9 +47,9 @@ export async function initConfig( | |||
42 | try { | 47 | try { |
43 | applySnapshot(config, result.data); | 48 | applySnapshot(config, result.data); |
44 | lastSnapshotOnDisk = getSnapshot(config); | 49 | lastSnapshotOnDisk = getSnapshot(config); |
45 | console.log('Loaded config'); | 50 | logger.debug('Loaded config'); |
46 | } catch (err) { | 51 | } catch (err) { |
47 | console.error('Failed to read config', result.data, err); | 52 | logger.error('Failed to read config', result.data, err); |
48 | } | 53 | } |
49 | } | 54 | } |
50 | return result.found; | 55 | return result.found; |
@@ -56,18 +61,19 @@ export async function initConfig( | |||
56 | try { | 61 | try { |
57 | await persistenceService.writeConfig(snapshot); | 62 | await persistenceService.writeConfig(snapshot); |
58 | lastSnapshotOnDisk = snapshot; | 63 | lastSnapshotOnDisk = snapshot; |
59 | console.log('Wrote config'); | 64 | logger.debug('Wrote config'); |
60 | } finally { | 65 | } finally { |
61 | writingConfig = false; | 66 | writingConfig = false; |
62 | } | 67 | } |
63 | } | 68 | } |
64 | 69 | ||
65 | if (!await readConfig()) { | 70 | if (!await readConfig()) { |
66 | console.log('Creating new config file'); | 71 | logger.info('Config file was not found'); |
67 | try { | 72 | try { |
68 | await writeConfig(); | 73 | await writeConfig(); |
74 | logger.success('Created config file'); | ||
69 | } catch (err) { | 75 | } catch (err) { |
70 | console.error('Failed to initialize config'); | 76 | logger.error('Failed to initialize config'); |
71 | } | 77 | } |
72 | } | 78 | } |
73 | 79 | ||
@@ -75,7 +81,7 @@ export async function initConfig( | |||
75 | // We can compare snapshots by reference, since it is only recreated on store changes. | 81 | // We can compare snapshots by reference, since it is only recreated on store changes. |
76 | if (lastSnapshotOnDisk !== snapshot) { | 82 | if (lastSnapshotOnDisk !== snapshot) { |
77 | writeConfig().catch((err) => { | 83 | writeConfig().catch((err) => { |
78 | console.log('Failed to write config on config change', err); | 84 | logger.error('Failed to write config on config change', err); |
79 | }) | 85 | }) |
80 | } | 86 | } |
81 | }, debounceTime)); | 87 | }, debounceTime)); |
@@ -87,6 +93,7 @@ export async function initConfig( | |||
87 | }, debounceTime); | 93 | }, debounceTime); |
88 | 94 | ||
89 | return () => { | 95 | return () => { |
96 | logger.debug('Disposing controller'); | ||
90 | disposeWatcher(); | 97 | disposeWatcher(); |
91 | disposeOnSnapshot(); | 98 | disposeOnSnapshot(); |
92 | }; | 99 | }; |
diff --git a/packages/main/src/controllers/nativeTheme.ts b/packages/main/src/controllers/nativeTheme.ts index e4390a8..6548771 100644 --- a/packages/main/src/controllers/nativeTheme.ts +++ b/packages/main/src/controllers/nativeTheme.ts | |||
@@ -18,24 +18,32 @@ | |||
18 | * SPDX-License-Identifier: AGPL-3.0-only | 18 | * SPDX-License-Identifier: AGPL-3.0-only |
19 | */ | 19 | */ |
20 | 20 | ||
21 | import consola from 'consola'; | ||
21 | import { nativeTheme } from 'electron'; | 22 | import { nativeTheme } from 'electron'; |
22 | import { autorun } from 'mobx'; | 23 | import { autorun } from 'mobx'; |
23 | 24 | ||
24 | import type { MainStore } from '../stores/MainStore'; | 25 | import type { MainStore } from '../stores/MainStore'; |
25 | import { Disposer } from '../utils'; | 26 | import { Disposer } from '../utils'; |
26 | 27 | ||
28 | const logger = consola.withTag('sophie:controller:nativeTheme'); | ||
29 | |||
27 | export function initNativeTheme(store: MainStore): Disposer { | 30 | export function initNativeTheme(store: MainStore): Disposer { |
31 | logger.debug('Initializing controller'); | ||
32 | |||
28 | const disposeThemeSourceReaction = autorun(() => { | 33 | const disposeThemeSourceReaction = autorun(() => { |
29 | nativeTheme.themeSource = store.config.themeSource; | 34 | nativeTheme.themeSource = store.config.themeSource; |
35 | logger.debug('Set theme source:', store.config.themeSource); | ||
30 | }); | 36 | }); |
31 | 37 | ||
32 | store.setShouldUseDarkColors(nativeTheme.shouldUseDarkColors); | 38 | store.setShouldUseDarkColors(nativeTheme.shouldUseDarkColors); |
33 | const shouldUseDarkColorsListener = () => { | 39 | const shouldUseDarkColorsListener = () => { |
34 | store.setShouldUseDarkColors(nativeTheme.shouldUseDarkColors); | 40 | store.setShouldUseDarkColors(nativeTheme.shouldUseDarkColors); |
41 | logger.debug('Set should use dark colors:', nativeTheme.shouldUseDarkColors); | ||
35 | }; | 42 | }; |
36 | nativeTheme.on('updated', shouldUseDarkColorsListener); | 43 | nativeTheme.on('updated', shouldUseDarkColorsListener); |
37 | 44 | ||
38 | return () => { | 45 | return () => { |
46 | logger.debug('Disposing controller'); | ||
39 | nativeTheme.off('updated', shouldUseDarkColorsListener); | 47 | nativeTheme.off('updated', shouldUseDarkColorsListener); |
40 | disposeThemeSourceReaction(); | 48 | disposeThemeSourceReaction(); |
41 | }; | 49 | }; |
diff --git a/packages/main/vite.config.js b/packages/main/vite.config.js index a4d10b2..d6f9373 100644 --- a/packages/main/vite.config.js +++ b/packages/main/vite.config.js | |||
@@ -13,6 +13,19 @@ const PACKAGE_ROOT = __dirname; | |||
13 | */ | 13 | */ |
14 | const config = makeConfig({ | 14 | const config = makeConfig({ |
15 | root: PACKAGE_ROOT, | 15 | root: PACKAGE_ROOT, |
16 | define: { | ||
17 | // Allow access to process.env in imported packages. | ||
18 | // https://github.com/vitejs/vite/issues/3176#issuecomment-876610206 | ||
19 | 'process.env': 'process["env"]', | ||
20 | 'global.process.env': 'global.process["env"]', | ||
21 | 'globalThis.process.env': 'globalThis.process["env"]', | ||
22 | }, | ||
23 | resolve: { | ||
24 | alias: { | ||
25 | // Force resolve consola to the nodejs version. | ||
26 | consola: 'consola/dist/consola.js', | ||
27 | }, | ||
28 | }, | ||
16 | build: { | 29 | build: { |
17 | target: node, | 30 | target: node, |
18 | lib: { | 31 | lib: { |
@@ -1199,10 +1199,12 @@ __metadata: | |||
1199 | dependencies: | 1199 | dependencies: |
1200 | "@sophie/service-shared": "workspace:*" | 1200 | "@sophie/service-shared": "workspace:*" |
1201 | "@sophie/shared": "workspace:*" | 1201 | "@sophie/shared": "workspace:*" |
1202 | "@types/debug": ^4 | ||
1202 | "@types/electron-devtools-installer": ^2.2.1 | 1203 | "@types/electron-devtools-installer": ^2.2.1 |
1203 | "@types/lodash": ^4.14.178 | 1204 | "@types/lodash": ^4.14.178 |
1204 | "@types/ms": ^0.7.31 | 1205 | "@types/ms": ^0.7.31 |
1205 | "@types/node": ^17.0.5 | 1206 | "@types/node": ^17.0.5 |
1207 | consola: ^2.15.3 | ||
1206 | electron: 16.0.5 | 1208 | electron: 16.0.5 |
1207 | electron-devtools-installer: ^3.2.0 | 1209 | electron-devtools-installer: ^3.2.0 |
1208 | json5: ^2.2.0 | 1210 | json5: ^2.2.0 |
@@ -1374,7 +1376,7 @@ __metadata: | |||
1374 | languageName: node | 1376 | languageName: node |
1375 | linkType: hard | 1377 | linkType: hard |
1376 | 1378 | ||
1377 | "@types/debug@npm:^4.1.6": | 1379 | "@types/debug@npm:^4, @types/debug@npm:^4.1.6": |
1378 | version: 4.1.7 | 1380 | version: 4.1.7 |
1379 | resolution: "@types/debug@npm:4.1.7" | 1381 | resolution: "@types/debug@npm:4.1.7" |
1380 | dependencies: | 1382 | dependencies: |
@@ -2584,6 +2586,13 @@ __metadata: | |||
2584 | languageName: node | 2586 | languageName: node |
2585 | linkType: hard | 2587 | linkType: hard |
2586 | 2588 | ||
2589 | "consola@npm:^2.15.3": | ||
2590 | version: 2.15.3 | ||
2591 | resolution: "consola@npm:2.15.3" | ||
2592 | checksum: 8ef7a09b703ec67ac5c389a372a33b6dc97eda6c9876443a60d76a3076eea0259e7f67a4e54fd5a52f97df73690822d090cf8b7e102b5761348afef7c6d03e28 | ||
2593 | languageName: node | ||
2594 | linkType: hard | ||
2595 | |||
2587 | "console-control-strings@npm:^1.0.0, console-control-strings@npm:^1.1.0": | 2596 | "console-control-strings@npm:^1.0.0, console-control-strings@npm:^1.1.0": |
2588 | version: 1.1.0 | 2597 | version: 1.1.0 |
2589 | resolution: "console-control-strings@npm:1.1.0" | 2598 | resolution: "console-control-strings@npm:1.1.0" |