From 0f11a92f08be86c1b1b16bbea42a1588ad5b2771 Mon Sep 17 00:00:00 2001 From: Kristóf Marussy Date: Tue, 28 Dec 2021 18:52:50 +0100 Subject: feat: Add consola logging --- packages/main/package.json | 2 ++ packages/main/src/controllers/config.ts | 19 +++++++++++++------ packages/main/src/controllers/nativeTheme.ts | 8 ++++++++ packages/main/vite.config.js | 13 +++++++++++++ 4 files changed, 36 insertions(+), 6 deletions(-) (limited to 'packages/main') 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 @@ "dependencies": { "@sophie/service-shared": "workspace:*", "@sophie/shared": "workspace:*", + "consola": "^2.15.3", "electron": "16.0.5", "json5": "^2.2.0", "lodash": "^4.17.21", @@ -20,6 +21,7 @@ "ms": "^2.1.3" }, "devDependencies": { + "@types/debug": "^4", "@types/electron-devtools-installer": "^2.2.1", "@types/lodash": "^4.14.178", "@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 @@ * SPDX-License-Identifier: AGPL-3.0-only */ +import consola from 'consola'; import { debounce } from 'lodash'; import ms from 'ms'; import { applySnapshot, getSnapshot, onSnapshot } from 'mobx-state-tree'; @@ -28,11 +29,15 @@ import { Disposer } from '../utils'; const DEFAULT_CONFIG_DEBOUNCE_TIME = ms('1s'); +const logger = consola.withTag('sophie:controller:config'); + export async function initConfig( config: Config, persistenceService: ConfigPersistenceService, debounceTime: number = DEFAULT_CONFIG_DEBOUNCE_TIME, ): Promise { + logger.debug('Initializing controller'); + let lastSnapshotOnDisk: ConfigSnapshotOut | null = null; let writingConfig: boolean = false; @@ -42,9 +47,9 @@ export async function initConfig( try { applySnapshot(config, result.data); lastSnapshotOnDisk = getSnapshot(config); - console.log('Loaded config'); + logger.debug('Loaded config'); } catch (err) { - console.error('Failed to read config', result.data, err); + logger.error('Failed to read config', result.data, err); } } return result.found; @@ -56,18 +61,19 @@ export async function initConfig( try { await persistenceService.writeConfig(snapshot); lastSnapshotOnDisk = snapshot; - console.log('Wrote config'); + logger.debug('Wrote config'); } finally { writingConfig = false; } } if (!await readConfig()) { - console.log('Creating new config file'); + logger.info('Config file was not found'); try { await writeConfig(); + logger.success('Created config file'); } catch (err) { - console.error('Failed to initialize config'); + logger.error('Failed to initialize config'); } } @@ -75,7 +81,7 @@ export async function initConfig( // We can compare snapshots by reference, since it is only recreated on store changes. if (lastSnapshotOnDisk !== snapshot) { writeConfig().catch((err) => { - console.log('Failed to write config on config change', err); + logger.error('Failed to write config on config change', err); }) } }, debounceTime)); @@ -87,6 +93,7 @@ export async function initConfig( }, debounceTime); return () => { + logger.debug('Disposing controller'); disposeWatcher(); disposeOnSnapshot(); }; 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 @@ * SPDX-License-Identifier: AGPL-3.0-only */ +import consola from 'consola'; import { nativeTheme } from 'electron'; import { autorun } from 'mobx'; import type { MainStore } from '../stores/MainStore'; import { Disposer } from '../utils'; +const logger = consola.withTag('sophie:controller:nativeTheme'); + export function initNativeTheme(store: MainStore): Disposer { + logger.debug('Initializing controller'); + const disposeThemeSourceReaction = autorun(() => { nativeTheme.themeSource = store.config.themeSource; + logger.debug('Set theme source:', store.config.themeSource); }); store.setShouldUseDarkColors(nativeTheme.shouldUseDarkColors); const shouldUseDarkColorsListener = () => { store.setShouldUseDarkColors(nativeTheme.shouldUseDarkColors); + logger.debug('Set should use dark colors:', nativeTheme.shouldUseDarkColors); }; nativeTheme.on('updated', shouldUseDarkColorsListener); return () => { + logger.debug('Disposing controller'); nativeTheme.off('updated', shouldUseDarkColorsListener); disposeThemeSourceReaction(); }; 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; */ const config = makeConfig({ root: PACKAGE_ROOT, + define: { + // Allow access to process.env in imported packages. + // https://github.com/vitejs/vite/issues/3176#issuecomment-876610206 + 'process.env': 'process["env"]', + 'global.process.env': 'global.process["env"]', + 'globalThis.process.env': 'globalThis.process["env"]', + }, + resolve: { + alias: { + // Force resolve consola to the nodejs version. + consola: 'consola/dist/consola.js', + }, + }, build: { target: node, lib: { -- cgit v1.2.3-54-g00ecf