From 4912e4ee9c601d57ea8c19fbce37aadb48fa8ae9 Mon Sep 17 00:00:00 2001 From: Doug Richar Date: Wed, 18 Sep 2024 04:19:21 -0400 Subject: [PATCH] fix: correct DEBUG log level handling in WalletManager (#265) - Refactor logger initialization in `WalletManager` to correctly handle DEBUG log level - Add `WalletManagerOptions` interface for better type safety - Improve log level determination logic - Export `WalletManagerOptions` from index.ts for external use This commit ensures that the DEBUG log level is properly set and respected, fixing an issue where DEBUG logs were not being output as expected. --- packages/use-wallet/src/index.ts | 2 +- packages/use-wallet/src/manager.ts | 47 +++++++++++++++++++++--------- 2 files changed, 34 insertions(+), 15 deletions(-) diff --git a/packages/use-wallet/src/index.ts b/packages/use-wallet/src/index.ts index d1a3faf6..e6d85a26 100644 --- a/packages/use-wallet/src/index.ts +++ b/packages/use-wallet/src/index.ts @@ -1,5 +1,5 @@ export { LogLevel } from './logger' -export { WalletManager, WalletManagerConfig } from './manager' +export { WalletManager, WalletManagerConfig, WalletManagerOptions } from './manager' export { NetworkId } from './network' export { State, WalletState, defaultState } from './store' export { StorageAdapter } from './storage' diff --git a/packages/use-wallet/src/manager.ts b/packages/use-wallet/src/manager.ts index 958fd050..fd927868 100644 --- a/packages/use-wallet/src/manager.ts +++ b/packages/use-wallet/src/manager.ts @@ -30,27 +30,26 @@ import type { WalletOptions } from 'src/wallets/types' +export interface WalletManagerOptions { + resetNetwork?: boolean + debug?: boolean + logLevel?: LogLevel +} + export interface WalletManagerConfig { wallets?: SupportedWallet[] network?: NetworkId algod?: NetworkConfig - options?: { - resetNetwork?: boolean - debug?: boolean - logLevel?: LogLevel - } + options?: WalletManagerOptions } export type PersistedState = Omit export class WalletManager { public _clients: Map = new Map() - public networkConfig: NetworkConfigMap - public store: Store public subscribe: (callback: (state: State) => void) => () => void - public options: { resetNetwork: boolean } private logger: ReturnType @@ -61,12 +60,15 @@ export class WalletManager { algod = {}, options = {} }: WalletManagerConfig = {}) { - const logLevel = options.debug ? LogLevel.DEBUG : options.logLevel || LogLevel.WARN - - Logger.setLevel(logLevel) - this.logger = logger.createScopedLogger('WalletManager') - - this.logger.debug('Initializing WalletManager with options:', options) + // Initialize scoped logger + this.logger = this.initializeLogger(options) + + this.logger.debug('Initializing WalletManager with config:', { + wallets, + network, + algod, + options + }) // Initialize network config this.networkConfig = this.initNetworkConfig(network, algod) @@ -114,6 +116,23 @@ export class WalletManager { this.initializeWallets(wallets) } + // ---------- Logging ----------------------------------------------- // + + private initializeLogger( + options: WalletManagerOptions + ): ReturnType { + const logLevel = this.determineLogLevel(options) + Logger.setLevel(logLevel) + return logger.createScopedLogger('WalletManager') + } + + private determineLogLevel(options: WalletManagerOptions): LogLevel { + if (options?.debug) { + return LogLevel.DEBUG + } + return options?.logLevel !== undefined ? options.logLevel : LogLevel.WARN + } + // ---------- Store ------------------------------------------------- // public get algodClient(): algosdk.Algodv2 {