From 5e0de021c46dd58510ff5c860fd8c3500c397cec Mon Sep 17 00:00:00 2001 From: John Oshalusi Date: Tue, 4 Feb 2025 18:55:50 +0100 Subject: [PATCH] refactor: use app logger instead of console --- .../components/Announcement/Announcement.tsx | 5 ++-- .../DropdownMenuOverlay.tsx | 7 +++--- .../MigrationContainer/MigrationContainer.tsx | 3 ++- .../features/dapp/components/ConfirmData.tsx | 6 ++--- .../src/features/dapp/components/Connect.tsx | 8 +++---- .../collateral/CollateralContainer.tsx | 12 +++++----- .../ConfirmTransaction.tsx | 4 ++-- .../DappTransactionContainer.tsx | 8 +++---- .../components/confirm-transaction/hooks.ts | 8 +++---- .../components/confirm-transaction/utils.ts | 3 ++- .../features/dapp/context/DappProvider.tsx | 14 +++++------ .../features/nami-migration/Activating.tsx | 4 ++-- .../nami-migration/NamiMigrationGuard.tsx | 3 ++- .../lace-migration-client.extension.ts | 6 ++--- .../create-lace-migration-open-listener.ts | 4 ++-- .../create-lace-migration-ping-listener.ts | 6 ++--- .../components/__tests__/ReceiveInfo.test.tsx | 5 ++-- .../hooks/__tests__/useWalletManager.test.tsx | 24 +++++++++---------- .../src/hooks/useCollateral.ts | 4 ++-- .../src/hooks/useHandleResolver.ts | 2 +- .../src/hooks/useInitializeTx.ts | 4 ++-- .../src/hooks/useWalletManager.ts | 5 ++-- .../lib/scripts/background/authenticator.ts | 3 ++- .../src/lib/scripts/background/cip30.ts | 11 +++++---- .../src/lib/scripts/background/content.ts | 5 ++-- .../src/lib/scripts/background/inject.ts | 5 ++-- .../src/lib/scripts/background/injectUtil.ts | 2 +- .../lib/scripts/background/nami-migration.ts | 5 ++-- .../src/lib/scripts/background/onError.ts | 3 ++- .../src/lib/scripts/background/onUpdate.ts | 5 ++-- .../background/services/dappService.ts | 9 +++---- .../lib/scripts/background/services/expose.ts | 6 ++--- .../background/services/userIdService.ts | 21 ++++++++-------- .../background/services/utilityServices.ts | 15 ++++++------ .../src/lib/scripts/migrations/migrations.ts | 7 +++--- .../src/lib/wallet-api-ui.ts | 3 +-- apps/browser-extension-wallet/src/popup.tsx | 2 +- .../analyticsTracker/AnalyticsTracker.ts | 3 ++- .../AnalyticsProvider/getUserIdService.ts | 3 ++- .../providers/AnalyticsProvider/onChain.ts | 4 ++-- .../BackgroundServiceAPI/context.tsx | 3 ++- .../client/PostHogClient.ts | 22 ++++++++--------- .../stores/slices/activity-detail-slice.ts | 3 ++- .../slices/blockchain-provider-slice.ts | 3 ++- .../src/utils/get-assets-information.ts | 3 ++- .../src/utils/own-input-resolver.ts | 3 ++- .../browser-extension-wallet/src/utils/pgp.ts | 3 ++- .../src/utils/validators/address-book.ts | 9 ++++--- .../activity/helpers/common-tx-transformer.ts | 3 ++- .../components/DappList/localDappService.ts | 3 ++- .../create-wallet/steps/SavePaperWallet.tsx | 2 +- .../multi-wallet/hardware-wallet/context.tsx | 3 ++- .../hardware-wallet/steps/Connect.tsx | 3 ++- .../steps/ScanShieldedMessage.tsx | 4 ++-- .../components/AssetPicker.tsx | 4 ++-- .../SendTransactionDrawer/Footer.tsx | 8 +++---- .../components/CustomSubmitApiDrawer.tsx | 6 ++--- .../settings/components/NetworkChoice.tsx | 4 ++-- .../SettingsPreferences/CurrencyDrawer.tsx | 4 ++-- .../sign-message/useSignMessageState.tsx | 4 ++-- .../StakePoolDetails/TransactionFail.tsx | 4 ++-- .../src/views/browser-view/routes/index.tsx | 3 ++- .../views/nami-mode/NamiDappConnectorView.tsx | 11 +++++---- .../src/views/nami-mode/NamiView.tsx | 6 ++--- .../src/views/nami-mode/utils.ts | 3 ++- .../src/{stringifyLogger.ts => AppLogger.ts} | 4 ++-- packages/common/src/index.ts | 2 +- .../creation-flow/ShareWalletDetails/utils.ts | 5 ++-- .../EnterPassword/EnterPassword.tsx | 3 ++- .../SharedWalletRestorationFlow.tsx | 3 ++- .../AddressFormBrowserView/AddressForm.tsx | 4 ++-- .../src/ui/app/components/confirmModal.tsx | 3 ++- .../ui/app/components/transactionBuilder.tsx | 6 ++--- 73 files changed, 223 insertions(+), 188 deletions(-) rename packages/common/src/{stringifyLogger.ts => AppLogger.ts} (94%) diff --git a/apps/browser-extension-wallet/src/components/Announcement/Announcement.tsx b/apps/browser-extension-wallet/src/components/Announcement/Announcement.tsx index 0298480266..d6ad831c45 100644 --- a/apps/browser-extension-wallet/src/components/Announcement/Announcement.tsx +++ b/apps/browser-extension-wallet/src/components/Announcement/Announcement.tsx @@ -1,8 +1,7 @@ -/* eslint-disable no-console */ import React, { useEffect, useState, useCallback } from 'react'; import { useTranslation } from 'react-i18next'; import { Modal, Typography } from 'antd'; -import { Button } from '@lace/common'; +import { Button, logger } from '@lace/common'; import styles from './Announcement.module.scss'; import { ExtensionUpdateData } from '@lib/scripts/types'; import { fetchNotes } from './ReleaseNotes'; @@ -26,7 +25,7 @@ export const Announcement = ({ visible, onConfirm, version, reason }: Announceme try { notes = await fetchNotes(version); } catch (error) { - console.log(error); + logger.info(error); } } setReleaseNotes(notes); diff --git a/apps/browser-extension-wallet/src/components/MainMenu/DropdownMenuOverlay/DropdownMenuOverlay.tsx b/apps/browser-extension-wallet/src/components/MainMenu/DropdownMenuOverlay/DropdownMenuOverlay.tsx index 1671d0c617..c40e84db4b 100644 --- a/apps/browser-extension-wallet/src/components/MainMenu/DropdownMenuOverlay/DropdownMenuOverlay.tsx +++ b/apps/browser-extension-wallet/src/components/MainMenu/DropdownMenuOverlay/DropdownMenuOverlay.tsx @@ -12,7 +12,7 @@ import { ThemeSwitcher, UserInfo } from './components'; -import { Switch } from '@lace/common'; +import { logger, Switch } from '@lace/common'; import styles from './DropdownMenuOverlay.module.scss'; import { NetworkInfo } from './components/NetworkInfo'; import { Sections } from './types'; @@ -60,7 +60,7 @@ export const DropdownMenuOverlay: VFC = ({ useEffect(() => { getBackgroundStorage() .then((storage) => setNamiMigration(storage.namiMigration)) - .catch(console.error); + .catch(logger.error); }, []); const openWalletAccounts = (wallet: AnyBip32Wallet) => { @@ -112,8 +112,7 @@ export const DropdownMenuOverlay: VFC = ({ try { await backgroundServices.handleOpenPopup(); } catch (error) { - // improve logging - console.warn(error); + logger.warn(error); } } else { window.location.reload(); diff --git a/apps/browser-extension-wallet/src/components/MigrationContainer/MigrationContainer.tsx b/apps/browser-extension-wallet/src/components/MigrationContainer/MigrationContainer.tsx index ce908f1d0c..bb6624dd58 100644 --- a/apps/browser-extension-wallet/src/components/MigrationContainer/MigrationContainer.tsx +++ b/apps/browser-extension-wallet/src/components/MigrationContainer/MigrationContainer.tsx @@ -12,6 +12,7 @@ import { FailedMigration } from './FailedMigration'; import { MigrationInProgress } from './MigrationInProgress'; import { useSecrets } from '@lace/core'; import type { OnPasswordChange } from '@lace/core'; +import { logger } from '@lace/common'; export interface MigrationContainerProps { children: React.ReactNode; @@ -85,7 +86,7 @@ export const MigrationContainer = ({ children, appMode }: MigrationContainerProp setIsLoadingFirstTime(true); setMigrationState(value.MIGRATION_STATE as MigrationState); }) - .catch((error) => console.error('Error fetching initial migration state:', error)); + .catch((error) => logger.error('Error fetching initial migration state:', error)); // Observe changes to MIGRATION_STATE in storage const observeMigrationState = async (changes: Record) => { diff --git a/apps/browser-extension-wallet/src/features/dapp/components/ConfirmData.tsx b/apps/browser-extension-wallet/src/features/dapp/components/ConfirmData.tsx index 1db61f5660..5cd9bd1992 100644 --- a/apps/browser-extension-wallet/src/features/dapp/components/ConfirmData.tsx +++ b/apps/browser-extension-wallet/src/features/dapp/components/ConfirmData.tsx @@ -1,6 +1,6 @@ import React, { useEffect, useState, useCallback } from 'react'; import { Wallet } from '@lace/cardano'; -import { Button, PostHogAction } from '@lace/common'; +import { Button, logger, PostHogAction } from '@lace/common'; import { useTranslation } from 'react-i18next'; import { Layout } from './Layout'; import { sectionTitle, DAPP_VIEWS } from '../config'; @@ -79,7 +79,7 @@ export const DappConfirmData = (): React.ReactElement => { baseChannel: DAPP_CHANNELS.userPrompt, properties: { readyToSignData: RemoteApiPropertyType.MethodReturningPromise } }, - { logger: console, runtime } + { logger, runtime } ); return () => { @@ -110,7 +110,7 @@ export const DappConfirmData = (): React.ReactElement => { await req.sign(); redirectToSignSuccess(); } catch (error) { - console.error('error', error); + logger.error('error', error); cancelTransaction(); redirectToSignFailure(); } diff --git a/apps/browser-extension-wallet/src/features/dapp/components/Connect.tsx b/apps/browser-extension-wallet/src/features/dapp/components/Connect.tsx index bbc8150dbb..527fceb825 100644 --- a/apps/browser-extension-wallet/src/features/dapp/components/Connect.tsx +++ b/apps/browser-extension-wallet/src/features/dapp/components/Connect.tsx @@ -1,6 +1,6 @@ /* eslint-disable react/no-multi-comp */ import React, { useEffect, useState } from 'react'; -import { Banner, Button } from '@lace/common'; +import { Banner, Button, logger } from '@lace/common'; import cn from 'classnames'; import { useTranslation } from 'react-i18next'; import { Layout } from './Layout'; @@ -80,7 +80,7 @@ const authorize = (authorization: 'deny' | 'just-once' | 'allow', url: string) = baseChannel: DAPP_CHANNELS.userPrompt, properties: { allowOrigin: RemoteApiPropertyType.MethodReturningPromise } }, - { logger: console, runtime } + { logger, runtime } ); setTimeout(() => { @@ -96,7 +96,7 @@ const dappDataApi = consumeRemoteApi>( getDappInfo: RemoteApiPropertyType.MethodReturningPromise } }, - { logger: console, runtime } + { logger, runtime } ); export const Connect = (): React.ReactElement => { @@ -116,7 +116,7 @@ export const Connect = (): React.ReactElement => { } }) .catch((error) => { - console.error(error); + logger.error(error); }); }, []); diff --git a/apps/browser-extension-wallet/src/features/dapp/components/collateral/CollateralContainer.tsx b/apps/browser-extension-wallet/src/features/dapp/components/collateral/CollateralContainer.tsx index 0c2876b085..2be1e698f6 100644 --- a/apps/browser-extension-wallet/src/features/dapp/components/collateral/CollateralContainer.tsx +++ b/apps/browser-extension-wallet/src/features/dapp/components/collateral/CollateralContainer.tsx @@ -18,7 +18,7 @@ import { CreateCollateral } from './CreateCollateral'; import { APIErrorCode, ApiError } from '@cardano-sdk/dapp-connector'; import { useRedirection } from '@hooks'; import { dAppRoutePaths } from '@routes'; -import { useObservable } from '@lace/common'; +import { logger, useObservable } from '@lace/common'; enum ReturnResponse { resolve = 'resolve', @@ -51,12 +51,12 @@ const collateralRequestResponse = (action: RejectResponse | ResolveResponse) => properties: { getCollateralRequest: RemoteApiPropertyType.MethodReturningPromise } }, { - logger: console, + logger, runtime } ); } catch (error) { - console.error(error); + logger.error(error); } }; @@ -98,7 +98,7 @@ export const DappCollateralContainer = (): React.ReactElement => { collateralRequestResponse({ response: ReturnResponse.resolve, utxos }); redirectToCreateSuccess(); } catch (error) { - console.error(error); + logger.error(error); redirectToCreateFailure(); } }, @@ -115,7 +115,7 @@ export const DappCollateralContainer = (): React.ReactElement => { getCollateralRequest: RemoteApiPropertyType.MethodReturningPromise } }, - { logger: console, runtime } + { logger, runtime } ) .getCollateralRequest() .then(({ dappInfo: requestDappInfo, collateralRequest }) => { @@ -157,7 +157,7 @@ export const DappCollateralContainer = (): React.ReactElement => { setIsCalculatingCollateral(false); }); } catch (error) { - console.error(error); + logger.error(error); redirectToCreateFailure(); } }, [redirectToCreateFailure, balance, availableRewards]); diff --git a/apps/browser-extension-wallet/src/features/dapp/components/confirm-transaction/ConfirmTransaction.tsx b/apps/browser-extension-wallet/src/features/dapp/components/confirm-transaction/ConfirmTransaction.tsx index d1a7a69222..1bcc78da70 100644 --- a/apps/browser-extension-wallet/src/features/dapp/components/confirm-transaction/ConfirmTransaction.tsx +++ b/apps/browser-extension-wallet/src/features/dapp/components/confirm-transaction/ConfirmTransaction.tsx @@ -1,6 +1,6 @@ import React, { useEffect, useState } from 'react'; import cn from 'classnames'; -import { Button, PostHogAction } from '@lace/common'; +import { Button, logger, PostHogAction } from '@lace/common'; import { useTranslation } from 'react-i18next'; import { Layout } from '../Layout'; import { useViewsFlowContext } from '@providers/ViewFlowProvider'; @@ -66,7 +66,7 @@ export const ConfirmTransaction = (): React.ReactElement => { baseChannel: DAPP_CHANNELS.userPrompt, properties: { readyToSignTx: RemoteApiPropertyType.MethodReturningPromise } }, - { logger: console, runtime } + { logger, runtime } ); return () => { diff --git a/apps/browser-extension-wallet/src/features/dapp/components/confirm-transaction/DappTransactionContainer.tsx b/apps/browser-extension-wallet/src/features/dapp/components/confirm-transaction/DappTransactionContainer.tsx index 25f92faf29..529acdea61 100644 --- a/apps/browser-extension-wallet/src/features/dapp/components/confirm-transaction/DappTransactionContainer.tsx +++ b/apps/browser-extension-wallet/src/features/dapp/components/confirm-transaction/DappTransactionContainer.tsx @@ -1,5 +1,5 @@ import React, { useState, useEffect, useMemo } from 'react'; -import { useObservable } from '@lace/common'; +import { logger, useObservable } from '@lace/common'; import { DappTransaction, TxDetailsCertificates, @@ -26,7 +26,7 @@ import { createWalletAssetProvider } from '@cardano-sdk/wallet'; import { Skeleton } from 'antd'; import { useCurrencyStore } from '@providers'; -import { logger, walletRepository } from '@lib/wallet-api-ui'; +import { walletRepository } from '@lib/wallet-api-ui'; import { useComputeTxCollateral } from '@hooks/useComputeTxCollateral'; import { eraSlotDateTime } from '@src/utils/era-slot-datetime'; import { AddressBookSchema, useDbStateValue } from '@lib/storage'; @@ -124,7 +124,7 @@ export const DappTransactionContainer = withAddressBookContext( logger }), timeout: TIMEOUT, - logger: console + logger }), summary: transactionSummaryInspector({ addresses: userAddresses, @@ -138,7 +138,7 @@ export const DappTransactionContainer = withAddressBookContext( logger }), timeout: TIMEOUT, - logger: console + logger }) }); diff --git a/apps/browser-extension-wallet/src/features/dapp/components/confirm-transaction/hooks.ts b/apps/browser-extension-wallet/src/features/dapp/components/confirm-transaction/hooks.ts index 7e40ce0653..b271fdac5a 100644 --- a/apps/browser-extension-wallet/src/features/dapp/components/confirm-transaction/hooks.ts +++ b/apps/browser-extension-wallet/src/features/dapp/components/confirm-transaction/hooks.ts @@ -1,4 +1,3 @@ -/* eslint-disable no-console */ import isPlainObject from 'lodash/isPlainObject'; import { useCallback, useEffect, useMemo, useState } from 'react'; import { AssetProvider, AssetsMintedInspection, MintedAsset } from '@cardano-sdk/core'; @@ -12,6 +11,7 @@ import { getTransactionAssetsId } from '@src/stores/slices'; import { allowSignTx, pubDRepKeyToHash, disallowSignTx } from './utils'; import { useWalletStore } from '@stores'; import { TransactionWitnessRequest, WalletType } from '@cardano-sdk/web-extension'; +import { logger } from '@lace/common'; export const useCreateAssetList = ({ assets, @@ -33,7 +33,7 @@ export const useCreateAssetList = ({ }) .then((result) => setAssetsInfo(result)) .catch((error) => { - console.error(error); + logger.error(error); }); } }, [assetIds, assetProvider, assets]); @@ -120,7 +120,7 @@ export const useCreateMintedAssetList = ({ }) .then((result) => setAssetsInfo(result)) .catch((error) => { - console.error(error); + logger.error(error); }); } }, [assetIds, assetProvider, assets]); @@ -176,7 +176,7 @@ export const useSignWithHardwareWallet = ( await req.sign(); redirectToSignSuccess(); } catch (error) { - console.error('signWithHardwareWallet error', error); + logger.error('signWithHardwareWallet error', error); disallow(false); redirectToSignFailure(); } diff --git a/apps/browser-extension-wallet/src/features/dapp/components/confirm-transaction/utils.ts b/apps/browser-extension-wallet/src/features/dapp/components/confirm-transaction/utils.ts index ae15bd6d44..76289c6ac1 100644 --- a/apps/browser-extension-wallet/src/features/dapp/components/confirm-transaction/utils.ts +++ b/apps/browser-extension-wallet/src/features/dapp/components/confirm-transaction/utils.ts @@ -6,6 +6,7 @@ import type { UserPromptService } from '@lib/scripts/background/services'; import { DAPP_CHANNELS, cardanoCoin } from '@src/utils/constants'; import { runtime } from 'webextension-polyfill'; import { of } from 'rxjs'; +import { logger } from '@lace/common'; const { CertificateType } = Wallet.Cardano; @@ -22,7 +23,7 @@ export const readyToSign = (): void => { baseChannel: DAPP_CHANNELS.userPrompt, properties: { readyToSignTx: RemoteApiPropertyType.MethodReturningPromise } }, - { logger: console, runtime } + { logger, runtime } ); }; diff --git a/apps/browser-extension-wallet/src/features/dapp/context/DappProvider.tsx b/apps/browser-extension-wallet/src/features/dapp/context/DappProvider.tsx index 27a16b877f..66bd36a297 100644 --- a/apps/browser-extension-wallet/src/features/dapp/context/DappProvider.tsx +++ b/apps/browser-extension-wallet/src/features/dapp/context/DappProvider.tsx @@ -7,6 +7,7 @@ import { consumeRemoteApi, RemoteApiPropertyType } from '@cardano-sdk/web-extens import { runtime } from 'webextension-polyfill'; import { Wallet } from '@lace/cardano'; import isEqual from 'lodash/isEqual'; +import { logger } from '@lace/common'; interface DappProviderProps { children: React.ReactNode; @@ -23,7 +24,7 @@ export const DappProvider = ({ children, initialState }: DappProviderProps): Rea authorizedDappsList: RemoteApiPropertyType.HotObservable } }, - { logger: console, runtime } + { logger, runtime } ); authorizedDappService?.authorizedDappsList.subscribe((dapps) => { @@ -41,9 +42,8 @@ type WithDappContext = ( initialState?: Wallet.DappInfo[] ) => (props?: TProps) => React.ReactElement; -export const withDappContext: WithDappContext = (Component, initialState) => (props) => - ( - - - - ); +export const withDappContext: WithDappContext = (Component, initialState) => (props) => ( + + + +); diff --git a/apps/browser-extension-wallet/src/features/nami-migration/Activating.tsx b/apps/browser-extension-wallet/src/features/nami-migration/Activating.tsx index 87fd1fd0c8..2e7acdd90d 100644 --- a/apps/browser-extension-wallet/src/features/nami-migration/Activating.tsx +++ b/apps/browser-extension-wallet/src/features/nami-migration/Activating.tsx @@ -1,5 +1,4 @@ import React, { useEffect } from 'react'; - import { NamiMigrationUpdatingYourWallet } from '@lace/core'; import { consumeRemoteApi, RemoteApiPropertyType } from '@cardano-sdk/web-extension'; import type { NamiMigrationAPI } from '@lib/scripts/background/nami-migration'; @@ -10,6 +9,7 @@ import { useCurrencyStore } from '@providers/currency'; import { MigrationState } from './migration-tool/migrator/migration-state.data'; import { useTheme } from '@providers/ThemeProvider/context'; import { NamiMigrationChannels } from '@lib/scripts/types'; +import { logger } from '@lace/common'; const namiMigrationRemoteApi = consumeRemoteApi>( { @@ -20,7 +20,7 @@ const namiMigrationRemoteApi = consumeRemoteApi>( { @@ -21,7 +22,7 @@ const namiMigrationRemoteApi = consumeRemoteApi Promise; @@ -38,9 +38,9 @@ export const completeMigration: CompleteMigration = () => { }; export const handleNamiRequests = (): void => { - console.log('[NAMI MIGRATION] createLaceMigrationPingListener'); + logger.info('[NAMI MIGRATION] createLaceMigrationPingListener'); runtime.onMessageExternal.addListener(createLaceMigrationPingListener(NAMI_EXTENSION_ID)); - console.log('[NAMI MIGRATION] createLaceMigrationOpenListener'); + logger.info('[NAMI MIGRATION] createLaceMigrationOpenListener'); runtime.onMessageExternal.addListener( createLaceMigrationOpenListener(NAMI_EXTENSION_ID, LACE_EXTENSION_ID, tabs.create) ); diff --git a/apps/browser-extension-wallet/src/features/nami-migration/migration-tool/cross-extension-messaging/lace/create-lace-migration-open-listener.ts b/apps/browser-extension-wallet/src/features/nami-migration/migration-tool/cross-extension-messaging/lace/create-lace-migration-open-listener.ts index da49843f49..edd9996048 100644 --- a/apps/browser-extension-wallet/src/features/nami-migration/migration-tool/cross-extension-messaging/lace/create-lace-migration-open-listener.ts +++ b/apps/browser-extension-wallet/src/features/nami-migration/migration-tool/cross-extension-messaging/lace/create-lace-migration-open-listener.ts @@ -1,11 +1,11 @@ -/* eslint-disable no-console */ import { closeAllLaceWindows } from '@lib/scripts/background/util'; import { MessageSender, NamiMessages } from '../shared/types'; +import { logger } from '@lace/common'; export const createLaceMigrationOpenListener = (namiExtensionId: string, laceExtensionId: string, createTab: ({ url }: { url: string }) => void) => async (message: NamiMessages, sender: MessageSender): Promise => { - console.log('[NAMI MIGRATION] createLaceMigrationOpenListener', message, sender); + logger.info('[NAMI MIGRATION] createLaceMigrationOpenListener', message, sender); if (message === NamiMessages.open && sender.id === namiExtensionId) { // First close all open lace tabs await closeAllLaceWindows(); diff --git a/apps/browser-extension-wallet/src/features/nami-migration/migration-tool/cross-extension-messaging/lace/create-lace-migration-ping-listener.ts b/apps/browser-extension-wallet/src/features/nami-migration/migration-tool/cross-extension-messaging/lace/create-lace-migration-ping-listener.ts index 0f615d2d8d..9d14bf4bc7 100644 --- a/apps/browser-extension-wallet/src/features/nami-migration/migration-tool/cross-extension-messaging/lace/create-lace-migration-ping-listener.ts +++ b/apps/browser-extension-wallet/src/features/nami-migration/migration-tool/cross-extension-messaging/lace/create-lace-migration-ping-listener.ts @@ -1,13 +1,13 @@ /* eslint-disable consistent-return */ -/* eslint-disable no-console */ import { MessageSender, NamiLacePingProtocol } from '../shared/types'; +import { logger } from '@lace/common'; export const createLaceMigrationPingListener = (namiExtensionId: string) => async (message: NamiLacePingProtocol, sender: MessageSender): Promise => { - console.log('[NAMI MIGRATION] createLaceMigrationPingListener', message, sender); + logger.info('[NAMI MIGRATION] createLaceMigrationPingListener', message, sender); if (message === NamiLacePingProtocol.ping && sender.id === namiExtensionId) { - console.log('[NAMI MIGRATION] Sending pong message to Nami'); + logger.info('[NAMI MIGRATION] Sending pong message to Nami'); return NamiLacePingProtocol.pong; } }; diff --git a/apps/browser-extension-wallet/src/features/receive-info/components/__tests__/ReceiveInfo.test.tsx b/apps/browser-extension-wallet/src/features/receive-info/components/__tests__/ReceiveInfo.test.tsx index 1ef7803057..48f4da293a 100644 --- a/apps/browser-extension-wallet/src/features/receive-info/components/__tests__/ReceiveInfo.test.tsx +++ b/apps/browser-extension-wallet/src/features/receive-info/components/__tests__/ReceiveInfo.test.tsx @@ -8,6 +8,7 @@ import '@testing-library/jest-dom'; import { i18n } from '../../../../lib/i18n'; import { mockWalletInfoTestnet } from '@src/utils/mocks/test-helpers'; import { ThemeProvider } from '@providers/ThemeProvider'; +import { logger } from '@lace/common'; jest.mock('@providers', () => ({ ...jest.requireActual('@providers'), @@ -25,8 +26,8 @@ describe('Testing ReceiveInfo component', () => { beforeAll(() => { // qrcode.react lib is printing these warning in development mode only: // https://github.com/zpao/qrcode.react/issues/134 - jest.spyOn(console, 'warn').mockImplementation(jest.fn()); - jest.spyOn(console, 'error').mockImplementation(jest.fn()); + jest.spyOn(logger, 'warn').mockImplementation(jest.fn()); + jest.spyOn(logger, 'error').mockImplementation(jest.fn()); }); afterAll(() => { jest.restoreAllMocks(); diff --git a/apps/browser-extension-wallet/src/hooks/__tests__/useWalletManager.test.tsx b/apps/browser-extension-wallet/src/hooks/__tests__/useWalletManager.test.tsx index e7676aa111..17d78eee00 100644 --- a/apps/browser-extension-wallet/src/hooks/__tests__/useWalletManager.test.tsx +++ b/apps/browser-extension-wallet/src/hooks/__tests__/useWalletManager.test.tsx @@ -45,8 +45,9 @@ import { of } from 'rxjs'; import { AnyBip32Wallet, AnyWallet, WalletManagerActivateProps, WalletType } from '@cardano-sdk/web-extension'; import { Wallet } from '@lace/cardano'; import { PasswordObj as Password } from '@lace/core'; +import { logger } from '@lace/common'; -(walletApiUi as any).logger = console; +(walletApiUi as any).logger = logger; jest.mock('@providers/AppSettings', () => ({ ...jest.requireActual('@providers/AppSettings'), @@ -117,14 +118,13 @@ jest.mock('@providers/AnalyticsProvider/getUserIdService', () => { const getWrapper = ({ backgroundService }: { backgroundService?: BackgroundServiceAPIProviderProps['value'] }) => - ({ children }: { children: React.ReactNode }) => - ( - - - {children} - - - ); + ({ children }: { children: React.ReactNode }) => ( + + + {children} + + + ); const render = () => renderHook(() => useWalletManager(), { @@ -622,7 +622,7 @@ describe('Testing useWalletManager hook', () => { }); test('puts a log in the console', async () => { - jest.spyOn(console, 'debug'); + jest.spyOn(logger, 'debug'); const { result: { current: { switchNetwork } @@ -634,8 +634,8 @@ describe('Testing useWalletManager hook', () => { await switchNetwork('incorrect' as any); // eslint-disable-next-line no-empty } catch {} - expect(console.debug).toHaveBeenCalledWith('Switching chain to', 'incorrect', expect.any(Array)); - (console.debug as unknown as SpyInstance).mockRestore(); + expect(logger.debug).toHaveBeenCalledWith('Switching chain to', 'incorrect', expect.any(Array)); + (logger.debug as unknown as SpyInstance).mockRestore(); }); test('should throw in case the chain is not supported', async () => { diff --git a/apps/browser-extension-wallet/src/hooks/useCollateral.ts b/apps/browser-extension-wallet/src/hooks/useCollateral.ts index 8ae419c111..0beae29917 100644 --- a/apps/browser-extension-wallet/src/hooks/useCollateral.ts +++ b/apps/browser-extension-wallet/src/hooks/useCollateral.ts @@ -1,6 +1,6 @@ /* eslint-disable unicorn/no-useless-undefined */ import { useCallback, useMemo, useState } from 'react'; -import { useObservable } from '@lace/common'; +import { logger, useObservable } from '@lace/common'; import { firstValueFrom } from 'rxjs'; import { map, take, filter } from 'rxjs/operators'; import { TxBuilder } from '@cardano-sdk/tx-construction'; @@ -85,7 +85,7 @@ export const useCollateral = (): UseCollateralReturn => { } catch (error) { // redirect to tx fail screen in case of hw if (!isInMemoryWallet) { - console.error('submitCollateralTx fails with:', error?.message); + logger.error('submitCollateralTx fails with:', error?.message); setBuiltTxData({ uiTx: undefined, error: error.message diff --git a/apps/browser-extension-wallet/src/hooks/useHandleResolver.ts b/apps/browser-extension-wallet/src/hooks/useHandleResolver.ts index f4adf66717..4efc39a5fa 100644 --- a/apps/browser-extension-wallet/src/hooks/useHandleResolver.ts +++ b/apps/browser-extension-wallet/src/hooks/useHandleResolver.ts @@ -3,9 +3,9 @@ import { getChainName } from '@src/utils/get-chain-name'; import { useMemo } from 'react'; import { useWalletStore } from '@src/stores'; import { handleHttpProvider } from '@cardano-sdk/cardano-services-client'; -import { logger } from '@lib/wallet-api-ui'; import axiosFetchAdapter from '@shiroyasha9/axios-fetch-adapter'; import { HandleProvider } from '@cardano-sdk/core'; +import { logger } from '@lace/common'; export const useHandleResolver = (): HandleProvider => { const { currentChain } = useWalletStore(); diff --git a/apps/browser-extension-wallet/src/hooks/useInitializeTx.ts b/apps/browser-extension-wallet/src/hooks/useInitializeTx.ts index 72269dd4aa..356c56063d 100644 --- a/apps/browser-extension-wallet/src/hooks/useInitializeTx.ts +++ b/apps/browser-extension-wallet/src/hooks/useInitializeTx.ts @@ -3,7 +3,7 @@ import { useEffect, useCallback } from 'react'; import { Wallet } from '@lace/cardano'; import { BuiltTxData, OutputsMap } from '../views/browser-view/features/send-transaction/types'; import { useSpentBalances } from '../views/browser-view/features/send-transaction/store'; -import { useObservable } from '@lace/common'; +import { logger, useObservable } from '@lace/common'; import { getReachedMaxAmountList } from '@src/views/browser-view/features/send-transaction/helpers'; import { useWalletStore } from '@src/stores'; import { UseTranslationResponse } from 'react-i18next'; @@ -103,7 +103,7 @@ export const useInitializeTx = ( reachedMaxAmountList: [] }); } catch (error) { - console.error('error initializing transaction:', { error }); + logger.error('error initializing transaction:', { error }); setBuiltTxData({ uiTx: undefined, tx: undefined, diff --git a/apps/browser-extension-wallet/src/hooks/useWalletManager.ts b/apps/browser-extension-wallet/src/hooks/useWalletManager.ts index 39f0360749..f72fd9bbb7 100644 --- a/apps/browser-extension-wallet/src/hooks/useWalletManager.ts +++ b/apps/browser-extension-wallet/src/hooks/useWalletManager.ts @@ -6,7 +6,7 @@ import { EnvironmentTypes, useWalletStore } from '@stores'; import { useAppSettingsContext } from '@providers/AppSettings'; import { useBackgroundServiceAPIContext } from '@providers/BackgroundServiceAPI'; import { AddressBookSchema, addressBookSchema, NftFoldersSchema, nftFoldersSchema, useDbState } from '@src/lib/storage'; -import { logger, observableWallet, signingCoordinator, walletManager, walletRepository } from '@src/lib/wallet-api-ui'; +import { observableWallet, signingCoordinator, walletManager, walletRepository } from '@src/lib/wallet-api-ui'; import { bufferReviver, clearLocalStorage, @@ -50,6 +50,7 @@ import { makeGenerateSharedWalletKey, useSecrets } from '@lace/core'; +import { logger } from '@lace/common'; const { AVAILABLE_CHAINS, CHAIN } = config(); const DEFAULT_CHAIN_ID = Wallet.Cardano.ChainIds[CHAIN]; @@ -480,7 +481,7 @@ export const useWalletManager = (): UseWalletManager => { // Synchronize active wallet UI state with service worker const activeWallet = wallets.find((w) => w.walletId === activeWalletProps.walletId); if (!activeWallet) { - console.error('Active wallet not found', activeWallet, wallets); + logger.error('Active wallet not found', activeWallet, wallets); return; } const activeAccount = diff --git a/apps/browser-extension-wallet/src/lib/scripts/background/authenticator.ts b/apps/browser-extension-wallet/src/lib/scripts/background/authenticator.ts index 679b7d7e00..489270c659 100644 --- a/apps/browser-extension-wallet/src/lib/scripts/background/authenticator.ts +++ b/apps/browser-extension-wallet/src/lib/scripts/background/authenticator.ts @@ -7,6 +7,7 @@ import { DAPP_CHANNELS } from '@src/utils/constants'; import { Subject } from 'rxjs'; import { requestAccessDebounced } from './requestAccess'; import { storage as webStorage } from 'webextension-polyfill'; +import { logger } from '@lace/common'; const createStorage = (_storage: PersistentAuthenticatorStorage) => { const origins$ = new Subject(); @@ -31,5 +32,5 @@ const authenticatorStorage = createPersistentAuthenticatorStorage(DAPP_CHANNELS. const internalStorage = createStorage(authenticatorStorage); export const authenticator = new PersistentAuthenticator( { requestAccess: requestAccessDebounced }, - { logger: console, storage: internalStorage } + { logger, storage: internalStorage } ); diff --git a/apps/browser-extension-wallet/src/lib/scripts/background/cip30.ts b/apps/browser-extension-wallet/src/lib/scripts/background/cip30.ts index 32ec12b82a..0a4ba7ca2f 100644 --- a/apps/browser-extension-wallet/src/lib/scripts/background/cip30.ts +++ b/apps/browser-extension-wallet/src/lib/scripts/background/cip30.ts @@ -15,6 +15,7 @@ import { dappInfo$ } from './requestAccess'; import { senderToDappInfo } from '@src/utils/senderToDappInfo'; import { getBackgroundStorage } from './storage'; import { notifyOnHaveAccessCall } from './session'; +import { logger } from '@lace/common'; const DEBOUNCE_THROTTLE = 500; @@ -53,7 +54,7 @@ export const confirmationCallback: walletCip30.CallbackConfirmation = { if (!ready) return false; return cancelOnTabClose(tab); } catch (error) { - console.error(error); + logger.error(error); return Promise.reject(new ApiError(APIErrorCode.InternalError, 'Unable to sign transaction')); } }, @@ -68,7 +69,7 @@ export const confirmationCallback: walletCip30.CallbackConfirmation = { if (!ready) return false; return cancelOnTabClose(tab); } catch (error) { - console.error(error); + logger.error(error); // eslint-disable-next-line unicorn/no-useless-undefined return Promise.reject(new ApiError(APIErrorCode.InternalError, 'Unable to sign data')); } @@ -104,14 +105,14 @@ export const confirmationCallback: walletCip30.CallbackConfirmation = { const walletApi = walletCip30.createWalletApi( wallet$.pipe(map((activeWallet) => activeWallet?.observableWallet || undefined)), confirmationCallback, - { logger: console } + { logger } ); cip30.initializeBackgroundScript( { walletName: process.env.WALLET_NAME }, { authenticator: notifyOnHaveAccessCall(authenticator, dAppConnectorActivity$.next.bind(dAppConnectorActivity$)), - logger: console, + logger, runtime, walletApi } @@ -129,5 +130,5 @@ exposeApi( getDappInfo: () => Promise.resolve(dappInfo$.value) }) }, - { logger: console, runtime } + { logger, runtime } ); diff --git a/apps/browser-extension-wallet/src/lib/scripts/background/content.ts b/apps/browser-extension-wallet/src/lib/scripts/background/content.ts index e7d611478c..84bdbdf9bc 100644 --- a/apps/browser-extension-wallet/src/lib/scripts/background/content.ts +++ b/apps/browser-extension-wallet/src/lib/scripts/background/content.ts @@ -2,10 +2,11 @@ import { runtime } from 'webextension-polyfill'; import { consumeRemoteApi, MessengerDependencies, runContentScriptMessageProxy } from '@cardano-sdk/web-extension'; import { consumeRemoteAuthenticatorApi, consumeRemoteWalletApi } from './api-consumers'; import { LACE_FEATURES_CHANNEL, laceFeaturesApiProperties } from './injectUtil'; +import { logger } from '@lace/common'; // Disable logging in production for performance & security measures if (process.env.USE_DAPP_CONNECTOR === 'true') { - console.info('initializing content script'); + logger.info('initializing content script'); const initializeContentScript = (walletName: string, dependencies: MessengerDependencies) => { const apis = [ @@ -23,5 +24,5 @@ if (process.env.USE_DAPP_CONNECTOR === 'true') { return runContentScriptMessageProxy(apis, dependencies.logger); }; - initializeContentScript(process.env.WALLET_NAME, { logger: console, runtime }); + initializeContentScript(process.env.WALLET_NAME, { logger, runtime }); } diff --git a/apps/browser-extension-wallet/src/lib/scripts/background/inject.ts b/apps/browser-extension-wallet/src/lib/scripts/background/inject.ts index cf61b29fbf..79a107218a 100644 --- a/apps/browser-extension-wallet/src/lib/scripts/background/inject.ts +++ b/apps/browser-extension-wallet/src/lib/scripts/background/inject.ts @@ -4,6 +4,7 @@ import { cip30, injectedRuntime, MessengerDependencies } from '@cardano-sdk/web- import { consumeRemoteAuthenticatorApi, consumeRemoteWalletApi } from './api-consumers'; import { getWalletMode, isCachedWalletModeResult } from './injectUtil'; import { WalletMode } from '../types'; +import { logger as appLogger } from '@lace/common'; const cip30WalletProperties: WalletProperties = { // eslint-disable-next-line max-len @@ -85,7 +86,7 @@ export const initializeInjectedScript = async ({ logger }: cip30.InitializeInjec }; if (process.env.USE_DAPP_CONNECTOR === 'true') { - console.info('injecting content script'); + appLogger.info('injecting content script'); // Disable logging in production for performance & security measures - initializeInjectedScript({ logger: console }); + initializeInjectedScript({ logger: appLogger }); } diff --git a/apps/browser-extension-wallet/src/lib/scripts/background/injectUtil.ts b/apps/browser-extension-wallet/src/lib/scripts/background/injectUtil.ts index d57428daa9..3e84317cc9 100644 --- a/apps/browser-extension-wallet/src/lib/scripts/background/injectUtil.ts +++ b/apps/browser-extension-wallet/src/lib/scripts/background/injectUtil.ts @@ -6,9 +6,9 @@ import { RemoteApiProperties, RemoteApiPropertyType } from '@cardano-sdk/web-extension'; +import { logger } from '@lace/common'; const WALLET_MODE_STORAGE_KEY = 'lace-wallet-mode'; -const logger = console; export const LACE_FEATURES_CHANNEL = 'lace-features'; export const laceFeaturesApiProperties: RemoteApiProperties = { diff --git a/apps/browser-extension-wallet/src/lib/scripts/background/nami-migration.ts b/apps/browser-extension-wallet/src/lib/scripts/background/nami-migration.ts index 42afddca6a..195583bd4b 100644 --- a/apps/browser-extension-wallet/src/lib/scripts/background/nami-migration.ts +++ b/apps/browser-extension-wallet/src/lib/scripts/background/nami-migration.ts @@ -9,11 +9,12 @@ import { exposeApi, getWalletStoreId, RemoteApiPropertyType } from '@cardano-sdk import { storage } from '@cardano-sdk/wallet'; import { of } from 'rxjs'; import { NamiMigrationChannels } from '@lib/scripts/types'; +import { logger } from '@lace/common'; const collateralRepository: CollateralRepository = async ({ utxo, chainId, walletId, accountIndex }) => { const walletStoreId = getWalletStoreId(walletId, chainId, accountIndex); const baseDbName = getBaseDbName(walletStoreId); - const db = new storage.PouchDbUtxoStore({ dbName: `${baseDbName}UnspendableUtxo` }, console); + const db = new storage.PouchDbUtxoStore({ dbName: `${baseDbName}UnspendableUtxo` }, logger); db.setAll([utxo]); }; @@ -56,5 +57,5 @@ exposeApi( abortMigration: RemoteApiPropertyType.MethodReturningPromise } }, - { logger: console, runtime } + { logger, runtime } ); diff --git a/apps/browser-extension-wallet/src/lib/scripts/background/onError.ts b/apps/browser-extension-wallet/src/lib/scripts/background/onError.ts index 919d3ba266..9f618f4e3e 100644 --- a/apps/browser-extension-wallet/src/lib/scripts/background/onError.ts +++ b/apps/browser-extension-wallet/src/lib/scripts/background/onError.ts @@ -2,6 +2,7 @@ import { WebRequest, webRequest, runtime } from 'webextension-polyfill'; import { MessageTypes } from '../types'; import { backendFailures$, requestMessage$ } from './services'; +import { logger } from '@lace/common'; const INTERNAL_SERVER_ERROR_STATUS_CODE = 500; const GATEWAY_TIMEOUT_STATUS_CODE = 503; @@ -45,7 +46,7 @@ const handleConnectionIssues = async (error: WebRequest.OnErrorOccurredDetailsTy ) return; - console.error('xmlhttprequest:net::ERR_INTERNET_DISCONNECTED', error); + logger.error('xmlhttprequest:net::ERR_INTERNET_DISCONNECTED', error); requestMessage$.next({ type: MessageTypes.HTTP_CONNECTION, data: { connected: false } }); if (!webRequest.onCompleted.hasListener(handleRequests)) { diff --git a/apps/browser-extension-wallet/src/lib/scripts/background/onUpdate.ts b/apps/browser-extension-wallet/src/lib/scripts/background/onUpdate.ts index 801e6ea858..2ad2d7fc53 100644 --- a/apps/browser-extension-wallet/src/lib/scripts/background/onUpdate.ts +++ b/apps/browser-extension-wallet/src/lib/scripts/background/onUpdate.ts @@ -2,6 +2,7 @@ import { Runtime, runtime, storage } from 'webextension-polyfill'; import { checkMigrations } from '../migrations'; import { ABOUT_EXTENSION_KEY, ExtensionUpdateData, MigrationState } from '../types'; import { initMigrationState } from './storage'; +import { logger } from '@lace/common'; type UpdateType = 'downgrade' | 'update'; @@ -33,7 +34,7 @@ const displayReleaseAnnouncements = async ({ reason }: Runtime.OnInstalledDetail [ABOUT_EXTENSION_KEY]: { version: currentVersion, acknowledged: false, reason: updateType } as ExtensionUpdateData }); - console.info('extension got updated due to reason:', updateType); + logger.info('extension got updated due to reason:', updateType); } }; @@ -43,7 +44,7 @@ if (!runtime.onInstalled.hasListener(displayReleaseAnnouncements)) if (!runtime.onInstalled.hasListener(checkMigrationsOnUpdate)) runtime.onInstalled.addListener(checkMigrationsOnUpdate); const updateToVersionCallback = (details: Runtime.OnUpdateAvailableDetailsType) => { - console.info(`updating to version ${details.version}`); + logger.info(`updating to version ${details.version}`); if (runtime.onUpdateAvailable.hasListener(updateToVersionCallback)) { runtime.onUpdateAvailable.removeListener(updateToVersionCallback); } diff --git a/apps/browser-extension-wallet/src/lib/scripts/background/services/dappService.ts b/apps/browser-extension-wallet/src/lib/scripts/background/services/dappService.ts index c2a1c8cf62..519f3491a5 100644 --- a/apps/browser-extension-wallet/src/lib/scripts/background/services/dappService.ts +++ b/apps/browser-extension-wallet/src/lib/scripts/background/services/dappService.ts @@ -7,6 +7,7 @@ import { runtime, storage as webStorage } from 'webextension-polyfill'; import { authenticator } from '../authenticator'; import { Wallet } from '@lace/cardano'; import { AUTHORIZED_DAPPS_KEY } from '@lib/scripts/types'; +import { logger } from '@lace/common'; const getAuthorizedDappListFromStorage = async () => { const { authorizedDapps }: AuthorizedDappStorage = await webStorage.local.get(AUTHORIZED_DAPPS_KEY); @@ -19,7 +20,7 @@ const authorizedDappsApi: AuthorizedDappService = { authorizedDappsList, removeAuthorizedDapp: async (origin: Origin): Promise => { const originUrl = new URL(origin).origin; - console.debug(`revoking access for ${originUrl}`); + logger.debug(`revoking access for ${originUrl}`); const accessRevoked = await authenticator.revokeAccess({ url: originUrl }); if (accessRevoked) { const { authorizedDapps }: AuthorizedDappStorage = await webStorage.local.get(AUTHORIZED_DAPPS_KEY); @@ -42,7 +43,7 @@ exposeApi( baseChannel: DAPP_CHANNELS.authorizedDapps, properties: dappServiceProperties }, - { logger: console, runtime } + { logger, runtime } ); export interface UserPromptService { @@ -62,7 +63,7 @@ export const userPromptService = consumeRemoteApi( getCollateralRequest: RemoteApiPropertyType.MethodReturningPromise } }, - { logger: console, runtime } + { logger, runtime } ); try { @@ -74,5 +75,5 @@ try { throw new Error(error); }); } catch (error) { - console.error(error); + logger.error(error); } diff --git a/apps/browser-extension-wallet/src/lib/scripts/background/services/expose.ts b/apps/browser-extension-wallet/src/lib/scripts/background/services/expose.ts index 626f3a4d14..1a49e40430 100644 --- a/apps/browser-extension-wallet/src/lib/scripts/background/services/expose.ts +++ b/apps/browser-extension-wallet/src/lib/scripts/background/services/expose.ts @@ -6,6 +6,7 @@ import { USER_ID_SERVICE_BASE_CHANNEL, UserIdService as UserIdServiceInterface } import { of } from 'rxjs'; import { runtime } from 'webextension-polyfill'; import * as laceMigrationClient from '@src/features/nami-migration/migration-tool/cross-extension-messaging/lace-migration-client.extension'; +import { logger } from '@lace/common'; // This was hoisted from userIdService.ts so that it's not being exposed while running the unit tests of the class itself. // It might be a good idea to follow the pattern and hoist all exposeApi calls to this file. @@ -16,9 +17,8 @@ exposeApi( baseChannel: USER_ID_SERVICE_BASE_CHANNEL, properties: userIdServiceProperties }, - { logger: console, runtime } + { logger, runtime } ); -// eslint-disable-next-line no-console -console.log('[NAMI MIGRATION] handling nami requests'); +logger.info('[NAMI MIGRATION] handling nami requests'); laceMigrationClient.handleNamiRequests(); diff --git a/apps/browser-extension-wallet/src/lib/scripts/background/services/userIdService.ts b/apps/browser-extension-wallet/src/lib/scripts/background/services/userIdService.ts index a0e8b3f096..4b012dac52 100644 --- a/apps/browser-extension-wallet/src/lib/scripts/background/services/userIdService.ts +++ b/apps/browser-extension-wallet/src/lib/scripts/background/services/userIdService.ts @@ -7,6 +7,7 @@ import randomBytes from 'randombytes'; import { UserTrackingType } from '@providers/AnalyticsProvider/analyticsTracker'; import isUndefined from 'lodash/isUndefined'; import { clearBackgroundStorage, getBackgroundStorage, setBackgroundStorage } from '../storage'; +import { logger } from '@lace/common'; export type UserIdServiceStorage = { get: typeof getBackgroundStorage; @@ -53,12 +54,12 @@ export class UserIdService implements UserIdServiceInterface { async init(): Promise { if (!this.userIdRestored) { - console.debug('[ANALYTICS] Restoring user ID...'); + logger.debug('[ANALYTICS] Restoring user ID...'); await this.restoreUserId(); } if (!this.randomizedUserId) { - console.debug('[ANALYTICS] User ID not found - generating new one'); + logger.debug('[ANALYTICS] User ID not found - generating new one'); this.randomizedUserId = randomBytes(USER_ID_BYTE_SIZE).toString('hex'); } } @@ -87,7 +88,7 @@ export class UserIdService implements UserIdServiceInterface { this.userTrackingType$.next(UserTrackingType.Enhanced); } } - console.debug(`[ANALYTICS] getwalletBasedUserId() called (current Wallet Based ID: ${this.walletBasedUserId})`); + logger.debug(`[ANALYTICS] getwalletBasedUserId() called (current Wallet Based ID: ${this.walletBasedUserId})`); // eslint-disable-next-line consistent-return return this.walletBasedUserId; } @@ -96,7 +97,7 @@ export class UserIdService implements UserIdServiceInterface { async getRandomizedUserId(): Promise { await this.init(); - console.debug(`[ANALYTICS] getId() called (current ID: ${this.randomizedUserId})`); + logger.debug(`[ANALYTICS] getId() called (current ID: ${this.randomizedUserId})`); return this.randomizedUserId; } @@ -125,7 +126,7 @@ export class UserIdService implements UserIdServiceInterface { } async clearId(): Promise { - console.debug('[ANALYTICS] clearId() called'); + logger.debug('[ANALYTICS] clearId() called'); this.randomizedUserId = undefined; this.walletBasedUserId = undefined; this.clearSessionTimeout(); @@ -135,7 +136,7 @@ export class UserIdService implements UserIdServiceInterface { } async makePersistent(): Promise { - console.debug('[ANALYTICS] Converting user ID into persistent'); + logger.debug('[ANALYTICS] Converting user ID into persistent'); this.clearSessionTimeout(); this.setSessionTimeout(); const userId = await this.getRandomizedUserId(); @@ -148,14 +149,14 @@ export class UserIdService implements UserIdServiceInterface { } async makeTemporary(): Promise { - console.debug('[ANALYTICS] Converting user ID into temporary'); + logger.debug('[ANALYTICS] Converting user ID into temporary'); await this.storage.set({ usePersistentUserId: false, userId: undefined }); this.setSessionTimeout(); this.userTrackingType$.next(UserTrackingType.Basic); } async extendLifespan(): Promise { - console.debug('[ANALYTICS] Extending temporary ID lifespan'); + logger.debug('[ANALYTICS] Extending temporary ID lifespan'); this.clearSessionTimeout(); this.setSessionTimeout(); } @@ -164,7 +165,7 @@ export class UserIdService implements UserIdServiceInterface { const { userId, usePersistentUserId } = await this.storage.get(); if (usePersistentUserId) { - console.debug('[ANALYTICS] Restoring user ID from extension storage'); + logger.debug('[ANALYTICS] Restoring user ID from extension storage'); this.randomizedUserId = userId; } @@ -193,7 +194,7 @@ export class UserIdService implements UserIdServiceInterface { } generateWalletBasedUserId(extendedAccountPublicKey: Wallet.Crypto.Bip32PublicKeyHex): string { - console.debug('[ANALYTICS] Wallet based ID not found - generating new one'); + logger.debug('[ANALYTICS] Wallet based ID not found - generating new one'); // by requirement, we want to hash the extended account public key twice const hash = hashExtendedAccountPublicKey(extendedAccountPublicKey); return hashExtendedAccountPublicKey(hash); diff --git a/apps/browser-extension-wallet/src/lib/scripts/background/services/utilityServices.ts b/apps/browser-extension-wallet/src/lib/scripts/background/services/utilityServices.ts index 481bf92d01..798584531b 100644 --- a/apps/browser-extension-wallet/src/lib/scripts/background/services/utilityServices.ts +++ b/apps/browser-extension-wallet/src/lib/scripts/background/services/utilityServices.ts @@ -27,6 +27,7 @@ import { currencies as currenciesMap, currencyCode } from '@providers/currency/c import { clearBackgroundStorage, getBackgroundStorage, setBackgroundStorage } from '../storage'; import { laceFeaturesApiProperties, LACE_FEATURES_CHANNEL } from '../injectUtil'; import { getErrorMessage } from '@src/utils/get-error-message'; +import { logger } from '@lace/common'; export const requestMessage$ = new Subject(); export const backendFailures$ = new BehaviorSubject(0); @@ -101,11 +102,11 @@ const handleOpenBrowser = async (data: OpenBrowserData) => { break; } const params = data.urlSearchParams ? `?${data.urlSearchParams}` : ''; - await tabs.create({ url: `app.html#${path}${params}` }).catch((error) => console.error(error)); + await tabs.create({ url: `app.html#${path}${params}` }).catch((error) => logger.error(error)); }; const handleOpenNamiBrowser = async (data: OpenNamiBrowserData) => { - await tabs.create({ url: `popup.html#${data.path}` }).catch((error) => console.error(error)); + await tabs.create({ url: `popup.html#${data.path}` }).catch((error) => logger.error(error)); }; const handleOpenPopup = async () => { @@ -122,7 +123,7 @@ const handleOpenPopup = async () => { }, 30); } catch (error) { // unable to programatically open the popup again - console.error(error); + logger.error(error); } }; @@ -151,7 +152,7 @@ const fetchTokenPrices = () => { coinPrices.tokenPrices$.next({ tokens: tokenPrices, status: 'fetched' }); }) .catch((error) => { - console.error('Error fetching coin prices:', error); + logger.error('Error fetching coin prices:', error); coinPrices.tokenPrices$.next({ ...coinPrices.tokenPrices$.value, status: 'error' }); }); }; @@ -177,7 +178,7 @@ const fetchAdaPrice = () => { }); }) .catch(async (error) => { - console.error('Error fetching coin prices:', error); + logger.error('Error fetching coin prices:', error); // If for some reason we couldn't fetch the ada price, get it from background store const adaPrice = await getADAPriceFromBackgroundStorage(); if (!adaPrice) return coinPrices.adaPrices$.next({ prices: {}, status: 'error', timestamp: undefined }); @@ -216,7 +217,7 @@ exposeApi( baseChannel: LACE_FEATURES_CHANNEL, properties: laceFeaturesApiProperties }, - { logger: console, runtime } + { logger, runtime } ); const toUnhandledError = (error: unknown, type: UnhandledError['type']): UnhandledError => ({ @@ -254,5 +255,5 @@ exposeApi( baseChannel: BaseChannels.BACKGROUND_ACTIONS, properties: backgroundServiceProperties }, - { logger: console, runtime } + { logger, runtime } ); diff --git a/apps/browser-extension-wallet/src/lib/scripts/migrations/migrations.ts b/apps/browser-extension-wallet/src/lib/scripts/migrations/migrations.ts index 6e87218ae3..aa3abebb76 100644 --- a/apps/browser-extension-wallet/src/lib/scripts/migrations/migrations.ts +++ b/apps/browser-extension-wallet/src/lib/scripts/migrations/migrations.ts @@ -4,6 +4,7 @@ import pRetry from 'p-retry'; import { MigrationState } from '../types'; import { compareVersions, isVersionNewerThan, isVersionOlderThanOrEqual } from './util'; import * as versions from './versions'; +import { logger } from '@lace/common'; const MIGRATIONS_RETRIES = 4; // 5 attempts = first attempt + 4 retries @@ -73,7 +74,7 @@ export const applyMigrations = async ( for (const migration of upgradeMigrationsToApply) { await pRetry( async (attemptNumber) => { - console.info(`Applying migration for version ${migration.version} (attempt: ${attemptNumber})`); + logger.info(`Applying migration for version ${migration.version} (attempt: ${attemptNumber})`); const shouldSkip = await migration.shouldSkip?.(); if (shouldSkip) return; const { prepare, assert, persist, rollback } = await migration.upgrade(password); @@ -96,7 +97,7 @@ export const applyMigrations = async ( minTimeout: 0, retries: MIGRATIONS_RETRIES, onFailedAttempt: (error) => - console.error( + logger.error( `Migration attempt ${error.attemptNumber} for ${migration.version} upgrade failed. There are ${error.retriesLeft} retries left.` ) } @@ -107,7 +108,7 @@ export const applyMigrations = async ( // Reload app states with updated storage window.location.reload(); } catch (error) { - console.error('Error applying migrations:', error); + logger.error('Error applying migrations:', error); await storage.local.set({ MIGRATION_STATE: { ...migrationState, state: 'error' } as MigrationState }); diff --git a/apps/browser-extension-wallet/src/lib/wallet-api-ui.ts b/apps/browser-extension-wallet/src/lib/wallet-api-ui.ts index 2fa6041018..5a8204d97f 100644 --- a/apps/browser-extension-wallet/src/lib/wallet-api-ui.ts +++ b/apps/browser-extension-wallet/src/lib/wallet-api-ui.ts @@ -18,8 +18,7 @@ import { firstValueFrom, from, of } from 'rxjs'; import { mergeMap, map, finalize } from 'rxjs/operators'; import { runtime } from 'webextension-polyfill'; import { Password } from '@input-output-hk/lace-ui-toolkit'; - -export const logger = console; +import { logger } from '@lace/common'; export const walletManager = consumeRemoteApi( { baseChannel: walletManagerChannel(process.env.WALLET_NAME), properties: walletManagerProperties }, diff --git a/apps/browser-extension-wallet/src/popup.tsx b/apps/browser-extension-wallet/src/popup.tsx index feac21eb4f..7dd14f4bd2 100644 --- a/apps/browser-extension-wallet/src/popup.tsx +++ b/apps/browser-extension-wallet/src/popup.tsx @@ -26,7 +26,7 @@ import { getBackgroundStorage } from '@lib/scripts/background/storage'; import { runtime, storage } from 'webextension-polyfill'; import { NamiMigrationGuard } from './features/nami-migration/NamiMigrationGuard'; import { createNonBackgroundMessenger } from '@cardano-sdk/web-extension'; -import { logger } from '@lib/wallet-api-ui'; +import { logger } from '@lace/common'; const App = (): React.ReactElement => { const [mode, setMode] = useState<'lace' | 'nami'>(); diff --git a/apps/browser-extension-wallet/src/providers/AnalyticsProvider/analyticsTracker/AnalyticsTracker.ts b/apps/browser-extension-wallet/src/providers/AnalyticsProvider/analyticsTracker/AnalyticsTracker.ts index a4be85a3d7..66adb6db7b 100644 --- a/apps/browser-extension-wallet/src/providers/AnalyticsProvider/analyticsTracker/AnalyticsTracker.ts +++ b/apps/browser-extension-wallet/src/providers/AnalyticsProvider/analyticsTracker/AnalyticsTracker.ts @@ -16,6 +16,7 @@ import { getUserIdService } from '@providers/AnalyticsProvider/getUserIdService' import { UserIdService } from '@lib/scripts/types'; import { PostHogMultiWalletAction, PostHogOnboardingAction, PostHogNamiMigrationAction } from './events'; import { NamiModeActions } from '@lace/nami'; +import { logger } from '@lace/common'; export type Action = | PostHogAction @@ -66,7 +67,7 @@ export class AnalyticsTracker implements IAnalyticsTracker { private async checkNewSessionStarted(): Promise { if (!this.postHogClient) { - console.debug('[ANALYTICS] no posthog client'); + logger.debug('[ANALYTICS] no posthog client'); return; } if (await this.userIdService.isNewSession()) { diff --git a/apps/browser-extension-wallet/src/providers/AnalyticsProvider/getUserIdService.ts b/apps/browser-extension-wallet/src/providers/AnalyticsProvider/getUserIdService.ts index ca9f82e922..686bbad556 100644 --- a/apps/browser-extension-wallet/src/providers/AnalyticsProvider/getUserIdService.ts +++ b/apps/browser-extension-wallet/src/providers/AnalyticsProvider/getUserIdService.ts @@ -2,13 +2,14 @@ import { consumeRemoteApi } from '@cardano-sdk/web-extension'; import { userIdServiceProperties } from '@lib/scripts/background/config'; import { USER_ID_SERVICE_BASE_CHANNEL, UserIdService } from '@lib/scripts/types'; import { runtime } from 'webextension-polyfill'; +import { logger } from '@lace/common'; const userIdService = consumeRemoteApi( { baseChannel: USER_ID_SERVICE_BASE_CHANNEL, properties: userIdServiceProperties }, - { runtime, logger: console } + { runtime, logger } ); export const getUserIdService = (): UserIdService => userIdService; diff --git a/apps/browser-extension-wallet/src/providers/AnalyticsProvider/onChain.ts b/apps/browser-extension-wallet/src/providers/AnalyticsProvider/onChain.ts index cfc7af279d..ef64fa621b 100644 --- a/apps/browser-extension-wallet/src/providers/AnalyticsProvider/onChain.ts +++ b/apps/browser-extension-wallet/src/providers/AnalyticsProvider/onChain.ts @@ -1,4 +1,3 @@ -/* eslint-disable no-console */ /* eslint-disable no-magic-numbers, @typescript-eslint/no-empty-function */ import { useEffect } from 'react'; import { PostHogAction, PostHogProperties, TX_CREATION_TYPE_KEY } from './analyticsTracker'; @@ -6,6 +5,7 @@ import { getValueFromLocalStorage, saveValueInLocalStorage } from '@src/utils/lo import { ILocalStorage, UnconfirmedTransaction, UnconfirmedTransactions } from '@src/types'; import { EMPTY, Observable, Subject, filter, map, merge, take } from 'rxjs'; import { ObservableWallet } from '@cardano-sdk/wallet'; +import { logger } from '@lace/common'; const ONE_WEEK = 7 * 24 * 60 * 60 * 1000; @@ -110,7 +110,7 @@ export const sendConfirmedTransactionAnalytics = async ({ saveUnconfirmedTransactionsFn(unconfirmedAndFreshTransactions); } catch (error) { - console.error(error); + logger.error(error); } }; diff --git a/apps/browser-extension-wallet/src/providers/BackgroundServiceAPI/context.tsx b/apps/browser-extension-wallet/src/providers/BackgroundServiceAPI/context.tsx index 698788a7ae..338351ced2 100644 --- a/apps/browser-extension-wallet/src/providers/BackgroundServiceAPI/context.tsx +++ b/apps/browser-extension-wallet/src/providers/BackgroundServiceAPI/context.tsx @@ -4,6 +4,7 @@ import { backgroundServiceProperties } from '@lib/scripts/background/config'; import { BackgroundService, BaseChannels } from '@lib/scripts/types'; import React, { createContext, useContext } from 'react'; import { runtime } from 'webextension-polyfill'; +import { logger } from '@lace/common'; export interface BackgroundServiceAPIProviderProps { children: React.ReactNode; @@ -15,7 +16,7 @@ const backgroundServices = consumeRemoteApi( baseChannel: BaseChannels.BACKGROUND_ACTIONS, properties: backgroundServiceProperties }, - { runtime, logger: console } + { runtime, logger } ); const BackgroundServiceAPIContext = createContext(backgroundServices); diff --git a/apps/browser-extension-wallet/src/providers/PostHogClientProvider/client/PostHogClient.ts b/apps/browser-extension-wallet/src/providers/PostHogClientProvider/client/PostHogClient.ts index 43a0eab2fc..cdf3b2bcbc 100644 --- a/apps/browser-extension-wallet/src/providers/PostHogClientProvider/client/PostHogClient.ts +++ b/apps/browser-extension-wallet/src/providers/PostHogClientProvider/client/PostHogClient.ts @@ -23,7 +23,7 @@ import { } from './config'; import { BackgroundService, BackgroundStorage, UserIdService } from '@lib/scripts/types'; import { BehaviorSubject, distinctUntilChanged, Observable, Subscription } from 'rxjs'; -import { PostHogAction, PostHogProperties } from '@lace/common'; +import { logger, PostHogAction, PostHogProperties } from '@lace/common'; import { ExperimentName, FeatureFlag, @@ -149,14 +149,14 @@ export class PostHogClient { } async sendSessionStartEvent(): Promise { - console.debug('[ANALYTICS] Logging Session Start Event'); + logger.debug('[ANALYTICS] Logging Session Start Event'); posthog.capture(String(PostHogAction.WalletSessionStartPageview), { ...(await this.getEventMetadata()) }); } async sendPageNavigationEvent(): Promise { - console.debug('[ANALYTICS] Logging page navigation event to PostHog'); + logger.debug('[ANALYTICS] Logging page navigation event to PostHog'); posthog.capture('$pageview', { ...(await this.getEventMetadata()) @@ -167,10 +167,10 @@ export class PostHogClient { const { id, alias } = await this.userIdService.getAliasProperties(this.chain.networkMagic); // If one of this does not exist, should not send the alias event if (!alias || !id) { - console.debug('[ANALYTICS] IDs were not found'); + logger.debug('[ANALYTICS] IDs were not found'); return; } - console.debug('[ANALYTICS] Linking randomized ID with wallet-based ID'); + logger.debug('[ANALYTICS] Linking randomized ID with wallet-based ID'); posthog.alias(alias, id); } @@ -179,11 +179,11 @@ export class PostHogClient { async sendMergeEvent(extendedAccountPublicKey: Wallet.Crypto.Bip32PublicKeyHex): Promise { const id = await this.userIdService.generateWalletBasedUserId(extendedAccountPublicKey); if (!id) { - console.debug('[ANALYTICS] Wallet-based ID not found'); + logger.debug('[ANALYTICS] Wallet-based ID not found'); return; } - console.debug('[ANALYTICS] Merging wallet-based ID into current user'); + logger.debug('[ANALYTICS] Merging wallet-based ID into current user'); posthog.capture('$merge_dangerously', { alias: id }); @@ -195,14 +195,14 @@ export class PostHogClient { ...properties }; - console.debug('[ANALYTICS] Logging event to PostHog', action, payload); + logger.debug('[ANALYTICS] Logging event to PostHog', action, payload); posthog.capture(String(action), payload); } setChain(chain: Wallet.Cardano.ChainId): void { const token = this.getApiToken(); this.chain = chain; - console.debug('[ANALYTICS] Changing PostHog API token', token); + logger.debug('[ANALYTICS] Changing PostHog API token', token); posthog.set_config({ token }); @@ -220,7 +220,7 @@ export class PostHogClient { this.updatePersonaProperties = true; this.optedInBeta$.next(optedInBeta); - console.debug('[ANALYTICS] Changing Opted In Beta', optedInBeta); + logger.debug('[ANALYTICS] Changing Opted In Beta', optedInBeta); } isFeatureFlagEnabled(feature: FeatureFlag): boolean { @@ -318,7 +318,7 @@ export class PostHogClient { // type-casting can be removed after Lace uses strict null checks payloadsByFeature[featureFlag] = featureFlagSchema.common.parse(payload) as FeatureFlagCommonSchema; } catch (error) { - console.error(`Failed to parse payload for ${featureFlag}:`, error); + logger.error(`Failed to parse payload for ${featureFlag}:`, error); } } diff --git a/apps/browser-extension-wallet/src/stores/slices/activity-detail-slice.ts b/apps/browser-extension-wallet/src/stores/slices/activity-detail-slice.ts index b7ffc3fa62..cddd8943e1 100644 --- a/apps/browser-extension-wallet/src/stores/slices/activity-detail-slice.ts +++ b/apps/browser-extension-wallet/src/stores/slices/activity-detail-slice.ts @@ -28,6 +28,7 @@ import { createHistoricalOwnInputResolver, HistoricalOwnInputResolverArgs } from import { getCollateral } from '@cardano-sdk/core'; import { hasPhase2ValidationFailed } from '@src/utils/phase2-validation'; import { eraSlotDateTime } from '@utils/era-slot-datetime'; +import { logger } from '@lace/common'; /** * validates if the transaction is confirmed @@ -290,7 +291,7 @@ const buildGetActivityDetail = ); if (pools.length === 0) { - console.error('Stake pool was not found for delegation tx'); + logger.error('Stake pool was not found for delegation tx'); } else { transaction = { ...transaction, diff --git a/apps/browser-extension-wallet/src/stores/slices/blockchain-provider-slice.ts b/apps/browser-extension-wallet/src/stores/slices/blockchain-provider-slice.ts index 6473ba51d3..d9900c477b 100644 --- a/apps/browser-extension-wallet/src/stores/slices/blockchain-provider-slice.ts +++ b/apps/browser-extension-wallet/src/stores/slices/blockchain-provider-slice.ts @@ -3,6 +3,7 @@ import { Wallet } from '@lace/cardano'; import { consumeRemoteApi } from '@cardano-sdk/web-extension'; import { runtime } from 'webextension-polyfill'; import { Cardano, DRepProvider } from '@cardano-sdk/core'; +import { logger } from '@lace/common'; export interface IBlockchainProvider { stakePoolProvider: Wallet.StakePoolProvider; @@ -51,7 +52,7 @@ const providers = consumeRemoteApi( baseChannel: Wallet.walletProvidersChannel(process.env.WALLET_NAME), properties: Wallet.walletProvidersProperties }, - { logger: console, runtime } + { logger, runtime } ); export const getProviders: BlockchainProviderFactory = () => IBlockchainProvider.fromWalletProviders(providers); diff --git a/apps/browser-extension-wallet/src/utils/get-assets-information.ts b/apps/browser-extension-wallet/src/utils/get-assets-information.ts index cbfd340e96..e14080b888 100644 --- a/apps/browser-extension-wallet/src/utils/get-assets-information.ts +++ b/apps/browser-extension-wallet/src/utils/get-assets-information.ts @@ -1,5 +1,6 @@ import { Wallet } from '@lace/cardano'; import chunk from 'lodash/chunk'; +import { logger } from '@lace/common'; export type TokenInfo = Map; interface AssetExtraData { @@ -33,7 +34,7 @@ export const getAssetsInformation = async ( fetchedAssets.push(...fetched); } catch (error) { // If an error occurs fetching from the provider then just skip this chunk - console.error('Error fetching assets info', { error: error.message }); + logger.error('Error fetching assets info', { error: error.message }); } } assetsInformation.push(...fetchedAssets); diff --git a/apps/browser-extension-wallet/src/utils/own-input-resolver.ts b/apps/browser-extension-wallet/src/utils/own-input-resolver.ts index 0cf2b6e10a..c3fde3d340 100644 --- a/apps/browser-extension-wallet/src/utils/own-input-resolver.ts +++ b/apps/browser-extension-wallet/src/utils/own-input-resolver.ts @@ -1,6 +1,7 @@ /* eslint-disable unicorn/no-null */ import { ObservableWalletState } from '@hooks/useWalletState'; import { Wallet } from '@lace/cardano'; +import { logger } from '@lace/common'; export type HistoricalOwnInputResolverArgs = Pick & { transactions: Pick; @@ -18,7 +19,7 @@ export const createHistoricalOwnInputResolver = ({ const output = tx.body.outputs[index]; if (!output) { - console.error('Resolving utxo with invalid index', txId, index); + logger.error('Resolving utxo with invalid index', txId, index); return null; } if (addresses.some(({ address }) => address === output.address)) { diff --git a/apps/browser-extension-wallet/src/utils/pgp.ts b/apps/browser-extension-wallet/src/utils/pgp.ts index fecfbaaae1..e9a26b6574 100644 --- a/apps/browser-extension-wallet/src/utils/pgp.ts +++ b/apps/browser-extension-wallet/src/utils/pgp.ts @@ -3,6 +3,7 @@ import { createMessage, decrypt, encrypt, readKey, readMessage, readPrivateKey, import type { Key, MaybeArray, Message, PartialConfig, PrivateKey, PublicKey } from 'openpgp'; import { i18n } from '@lace/translation'; import type { PublicPgpKeyData } from '@src/types'; +import { logger } from '@lace/common'; export const WEAK_KEY_REGEX = new RegExp(/RSA keys shorter than 2047 bits are considered too weak./); export const NO_ENCRYPTION_PACKET_REGEX = new RegExp(/Could not find valid encryption key packet in key/); @@ -201,7 +202,7 @@ export const pgpPublicKeyVerification = } else if (error.message === 'PGP key is not public') { setPgpValidation({ error: i18n.t('pgp.error.privateKeySuppliedInsteadOfPublic') }); } else { - console.error(error); + logger.error(error); // Default fallback setPgpValidation({ error: i18n.t('pgp.error.misformedArmoredText') }); } diff --git a/apps/browser-extension-wallet/src/utils/validators/address-book.ts b/apps/browser-extension-wallet/src/utils/validators/address-book.ts index ba5094ffcc..10f0bdef84 100644 --- a/apps/browser-extension-wallet/src/utils/validators/address-book.ts +++ b/apps/browser-extension-wallet/src/utils/validators/address-book.ts @@ -3,7 +3,7 @@ import { Wallet } from '@lace/cardano'; import { ValidationResult } from '@types'; import { AddressBookSchema } from '@lib/storage'; import { AddressRecordParams } from '@src/features/address-book/context'; -import { ToastProps } from '@lace/common'; +import { logger, ToastProps } from '@lace/common'; import { addressErrorMessage, nameErrorMessage } from '@lib/storage/helpers'; import { TOAST_DEFAULT_DURATION } from '@hooks/useActionExecution'; import ErrorIcon from '@assets/icons/address-error-icon.component.svg'; @@ -50,7 +50,10 @@ export class CustomConflictError extends Error { } export class CustomError extends Error { - constructor(message: string, public readonly isValidHandle: boolean = true) { + constructor( + message: string, + public readonly isValidHandle: boolean = true + ) { super(message); this.name = 'CustomError'; Object.setPrototypeOf(this, CustomError.prototype); @@ -62,7 +65,7 @@ export const isValidAddress = (address: string): boolean => { try { isValid = Wallet.Cardano.isAddress(address); } catch (error) { - console.error(error.message); + logger.error(error.message); isValid = false; } return isValid; diff --git a/apps/browser-extension-wallet/src/views/browser-view/features/activity/helpers/common-tx-transformer.ts b/apps/browser-extension-wallet/src/views/browser-view/features/activity/helpers/common-tx-transformer.ts index b8ace53f56..65b76ce904 100644 --- a/apps/browser-extension-wallet/src/views/browser-view/features/activity/helpers/common-tx-transformer.ts +++ b/apps/browser-extension-wallet/src/views/browser-view/features/activity/helpers/common-tx-transformer.ts @@ -12,6 +12,7 @@ import capitalize from 'lodash/capitalize'; import dayjs from 'dayjs'; import { hasPhase2ValidationFailed } from '@src/utils/phase2-validation'; import { createTxInspector, Milliseconds, transactionSummaryInspector } from '@cardano-sdk/core'; +import { logger } from '@lace/common'; // eslint-disable-next-line no-magic-numbers const TIMEOUT = 2000 as Milliseconds; @@ -183,7 +184,7 @@ export const txTransformer = async ({ healthCheck: () => Promise.resolve({ ok: true }) }, timeout: TIMEOUT, - logger: console + logger }) }); diff --git a/apps/browser-extension-wallet/src/views/browser-view/features/dapp/components/DappList/localDappService.ts b/apps/browser-extension-wallet/src/views/browser-view/features/dapp/components/DappList/localDappService.ts index f1879014ae..2de8174a06 100644 --- a/apps/browser-extension-wallet/src/views/browser-view/features/dapp/components/DappList/localDappService.ts +++ b/apps/browser-extension-wallet/src/views/browser-view/features/dapp/components/DappList/localDappService.ts @@ -2,6 +2,7 @@ import { consumeRemoteApi, RemoteApiPropertyType } from '@cardano-sdk/web-extens import { AuthorizedDappService } from '@src/types/dappConnector'; import { DAPP_CHANNELS } from '@src/utils/constants'; import { runtime } from 'webextension-polyfill'; +import { logger } from '@lace/common'; export const localDappService = consumeRemoteApi>( { @@ -10,5 +11,5 @@ export const localDappService = consumeRemoteApi> removeAuthorizedDapp: RemoteApiPropertyType.MethodReturningPromise } }, - { logger: console, runtime } + { logger, runtime } ); diff --git a/apps/browser-extension-wallet/src/views/browser-view/features/multi-wallet/create-wallet/steps/SavePaperWallet.tsx b/apps/browser-extension-wallet/src/views/browser-view/features/multi-wallet/create-wallet/steps/SavePaperWallet.tsx index 76ef97e220..769e99ad5c 100644 --- a/apps/browser-extension-wallet/src/views/browser-view/features/multi-wallet/create-wallet/steps/SavePaperWallet.tsx +++ b/apps/browser-extension-wallet/src/views/browser-view/features/multi-wallet/create-wallet/steps/SavePaperWallet.tsx @@ -11,7 +11,6 @@ import { import { Wallet } from '@lace/cardano'; import { PaperWalletInfoCard, WalletSetupStepLayoutRevamp, WalletTimelineSteps } from '@lace/core'; import { i18n } from '@lace/translation'; -import { logger } from '@lib/wallet-api-ui'; import { useAnalyticsContext } from '@providers/AnalyticsProvider'; import { config } from '@src/config'; import { useWalletOnboarding } from '../../walletOnboardingContext'; @@ -20,6 +19,7 @@ import { generatePaperWalletPdf } from '@src/utils/PaperWallet'; import { PaperWalletPDF } from '@src/types'; import { replaceWhitespace } from '@src/utils/format-string'; import styles from './SavePaperWallet.module.scss'; +import { logger } from '@lace/common'; const deriveAccountFromMnemonic = async ( createWalletData: CreateWalletParams, chain: keyof typeof Wallet.Cardano.ChainIds diff --git a/apps/browser-extension-wallet/src/views/browser-view/features/multi-wallet/hardware-wallet/context.tsx b/apps/browser-extension-wallet/src/views/browser-view/features/multi-wallet/hardware-wallet/context.tsx index b11fa2e0bb..6d71033537 100644 --- a/apps/browser-extension-wallet/src/views/browser-view/features/multi-wallet/hardware-wallet/context.tsx +++ b/apps/browser-extension-wallet/src/views/browser-view/features/multi-wallet/hardware-wallet/context.tsx @@ -12,6 +12,7 @@ import { getWalletAccountsQtyString } from '@utils/get-wallet-count-string'; import { firstValueFrom } from 'rxjs'; import { isHdWallet } from '../isHdWallet'; import { useWalletOnboarding } from '../walletOnboardingContext'; +import { logger } from '@lace/common'; type WalletData = { accountIndex: number; @@ -181,7 +182,7 @@ export const HardwareWalletProvider = ({ children }: HardwareWalletProviderProps accountIndexes: [walletData.accountIndex] }); } catch (error) { - console.error('ERROR creating hardware wallet', { error }); + logger.error('ERROR creating hardware wallet', { error }); const walletDuplicatedError = error instanceof WalletConflictError; if (!walletDuplicatedError) { diff --git a/apps/browser-extension-wallet/src/views/browser-view/features/multi-wallet/hardware-wallet/steps/Connect.tsx b/apps/browser-extension-wallet/src/views/browser-view/features/multi-wallet/hardware-wallet/steps/Connect.tsx index 5b21e0bf81..ab4f47fec3 100644 --- a/apps/browser-extension-wallet/src/views/browser-view/features/multi-wallet/hardware-wallet/steps/Connect.tsx +++ b/apps/browser-extension-wallet/src/views/browser-view/features/multi-wallet/hardware-wallet/steps/Connect.tsx @@ -9,6 +9,7 @@ import { useAnalyticsContext } from '@providers'; import { useHardwareWallet } from '../context'; import { isTimeoutError } from '../useWrapWithTimeout'; import { useWalletOnboarding } from '../../walletOnboardingContext'; +import { logger } from '@lace/common'; export const isTrezorHWSupported = (): boolean => process.env.USE_TREZOR_HW === 'true'; @@ -92,7 +93,7 @@ export const Connect: VFC = () => { next(); } catch (error) { setDiscoveryState(DiscoveryState.Idle); - console.error('ERROR connecting hardware wallet', error); + logger.error('ERROR connecting hardware wallet', error); setConnectionError(parseConnectionError(error)); } })(); diff --git a/apps/browser-extension-wallet/src/views/browser-view/features/multi-wallet/restore-wallet/steps/ScanShieldedMessage.tsx b/apps/browser-extension-wallet/src/views/browser-view/features/multi-wallet/restore-wallet/steps/ScanShieldedMessage.tsx index 009e58a184..0f79d024b3 100644 --- a/apps/browser-extension-wallet/src/views/browser-view/features/multi-wallet/restore-wallet/steps/ScanShieldedMessage.tsx +++ b/apps/browser-extension-wallet/src/views/browser-view/features/multi-wallet/restore-wallet/steps/ScanShieldedMessage.tsx @@ -23,7 +23,7 @@ import styles from './ScanShieldedMessage.module.scss'; import cn from 'classnames'; import { useAnalyticsContext } from '@providers'; import { useWalletOnboarding } from '../../walletOnboardingContext'; -import { Loader } from '@lace/common'; +import { Loader, logger } from '@lace/common'; interface Validation { error?: { @@ -136,7 +136,7 @@ export const ScanShieldedMessage: VFC = () => { const localVideoDevices = allDevices.filter((device) => device.kind === 'videoinput'); setVideoDevices(localVideoDevices); } catch (error) { - console.error('Error enumerating devices:', error); + logger.error('Error enumerating devices:', error); } }; enumerateDevices(); diff --git a/apps/browser-extension-wallet/src/views/browser-view/features/send-transaction/components/AssetPicker.tsx b/apps/browser-extension-wallet/src/views/browser-view/features/send-transaction/components/AssetPicker.tsx index 03e48d222f..a57c2d5fff 100644 --- a/apps/browser-extension-wallet/src/views/browser-view/features/send-transaction/components/AssetPicker.tsx +++ b/apps/browser-extension-wallet/src/views/browser-view/features/send-transaction/components/AssetPicker.tsx @@ -27,7 +27,7 @@ import { walletBalanceTransformer } from '@src/api/transformers'; import styles from './AssetPicker.module.scss'; import { useCurrencyStore } from '@providers'; import { isNFT } from '@src/utils/is-nft'; -import { useObservable, VirtualisedGridColumns } from '@lace/common'; +import { logger, useObservable, VirtualisedGridColumns } from '@lace/common'; import { searchToken } from '../../assets/components/AssetsPortfolio/AssetPortfolioContent'; import { searchNft } from '@hooks/useNftSearch'; @@ -152,7 +152,7 @@ export const AssetPicker = ({ isPopupView }: AssetPickerProps): React.ReactEleme if (selectedTokenList.length > 0) { isTokenBundleSizeExceedingLimit(selectedTokenList, inMemoryWallet) .then((res) => setExceededLimit(res)) - .catch((error) => console.error(error)); + .catch((error) => logger.error(error)); } }, [selectedTokenList, inMemoryWallet]); diff --git a/apps/browser-extension-wallet/src/views/browser-view/features/send-transaction/components/SendTransactionDrawer/Footer.tsx b/apps/browser-extension-wallet/src/views/browser-view/features/send-transaction/components/SendTransactionDrawer/Footer.tsx index a806368ead..f1cc09c507 100644 --- a/apps/browser-extension-wallet/src/views/browser-view/features/send-transaction/components/SendTransactionDrawer/Footer.tsx +++ b/apps/browser-extension-wallet/src/views/browser-view/features/send-transaction/components/SendTransactionDrawer/Footer.tsx @@ -6,7 +6,7 @@ /* eslint-disable sonarjs/cognitive-complexity */ import React, { useCallback, useMemo, useEffect, useRef, useState } from 'react'; import { useTranslation } from 'react-i18next'; -import { Button } from '@lace/common'; +import { Button, logger } from '@lace/common'; import { Wallet } from '@lace/cardano'; import styles from './Footer.module.scss'; import EditIcon from '@assets/icons/edit.component.svg'; @@ -205,7 +205,7 @@ export const Footer = withAddressBookContext( sharedWalletTx = Serialization.Transaction.fromCore(signedTx); } } catch (error) { - console.error('Shared wallet TX sign error', error); + logger.error('Shared wallet TX sign error', error); throw error; } @@ -217,7 +217,7 @@ export const Footer = withAddressBookContext( try { await inMemoryWallet.submitTx(sharedWalletTx.toCbor()); } catch (error) { - console.error('Shared wallet TX submit error', error); + logger.error('Shared wallet TX submit error', error); throw error; } } else { @@ -235,7 +235,7 @@ export const Footer = withAddressBookContext( try { await inMemoryWallet.submitTx(signedTx); } catch (error) { - console.error('TX submit error', error); + logger.error('TX submit error', error); throw error; } txSubmitted$.next({ diff --git a/apps/browser-extension-wallet/src/views/browser-view/features/settings/components/CustomSubmitApiDrawer.tsx b/apps/browser-extension-wallet/src/views/browser-view/features/settings/components/CustomSubmitApiDrawer.tsx index ab4f349db2..583dc55585 100644 --- a/apps/browser-extension-wallet/src/views/browser-view/features/settings/components/CustomSubmitApiDrawer.tsx +++ b/apps/browser-extension-wallet/src/views/browser-view/features/settings/components/CustomSubmitApiDrawer.tsx @@ -1,5 +1,5 @@ import React, { ReactElement, useEffect, useState } from 'react'; -import { Drawer, DrawerHeader, DrawerNavigation, PostHogAction, toast } from '@lace/common'; +import { Drawer, DrawerHeader, DrawerNavigation, logger, PostHogAction, toast } from '@lace/common'; import { Typography } from 'antd'; import styles from './SettingsLayout.module.scss'; import { useTranslation } from 'react-i18next'; @@ -47,7 +47,7 @@ export const CustomSubmitApiDrawer = ({ .then((storage) => { setCustomSubmitTxUrl(storage.customSubmitTxUrl || DEFAULT_SUBMIT_API); }) - .catch(console.error); + .catch(logger.error); }, []); const handleCustomTxSubmitEndpoint = async (enable: boolean) => { @@ -71,7 +71,7 @@ export const CustomSubmitApiDrawer = ({ void analytics.sendEventToPostHog(PostHogAction.SettingsCustomSubmitApiEnableClick); } } catch (error) { - console.error('Error switching TxSubmit endpoint', error); + logger.error('Error switching TxSubmit endpoint', error); toast.notify({ text: t('general.errors.somethingWentWrong'), icon: ErrorIcon }); } }; diff --git a/apps/browser-extension-wallet/src/views/browser-view/features/settings/components/NetworkChoice.tsx b/apps/browser-extension-wallet/src/views/browser-view/features/settings/components/NetworkChoice.tsx index 8631575eac..554a180d79 100644 --- a/apps/browser-extension-wallet/src/views/browser-view/features/settings/components/NetworkChoice.tsx +++ b/apps/browser-extension-wallet/src/views/browser-view/features/settings/components/NetworkChoice.tsx @@ -1,5 +1,5 @@ import React, { useCallback } from 'react'; -import { toast } from '@lace/common'; +import { logger, toast } from '@lace/common'; import styles from './SettingsLayout.module.scss'; import { useTranslation } from 'react-i18next'; import { Radio, RadioChangeEvent } from 'antd'; @@ -84,7 +84,7 @@ export const NetworkChoice = ({ section }: { section?: 'settings' | 'wallet-prof const eventByNetworkName = section === 'settings' ? settingsEventByNetworkName : walletProfileEventByNetworkName; await analytics.sendEventToPostHog(eventByNetworkName[event.target.value as Wallet.ChainName]); } catch (error) { - console.error('Error switching networks', error); + logger.error('Error switching networks', error); toast.notify({ text: t('general.errors.somethingWentWrong'), icon: ErrorIcon }); } return event; diff --git a/apps/browser-extension-wallet/src/views/browser-view/features/settings/components/SettingsPreferences/CurrencyDrawer.tsx b/apps/browser-extension-wallet/src/views/browser-view/features/settings/components/SettingsPreferences/CurrencyDrawer.tsx index 3bc7dcd481..65fc388bd6 100644 --- a/apps/browser-extension-wallet/src/views/browser-view/features/settings/components/SettingsPreferences/CurrencyDrawer.tsx +++ b/apps/browser-extension-wallet/src/views/browser-view/features/settings/components/SettingsPreferences/CurrencyDrawer.tsx @@ -2,7 +2,7 @@ import React from 'react'; import { Radio, RadioChangeEvent, Typography } from 'antd'; import { useTranslation } from 'react-i18next'; import { Wallet } from '@lace/cardano'; -import { Drawer, DrawerHeader, DrawerNavigation, toast } from '@lace/common'; +import { Drawer, DrawerHeader, DrawerNavigation, logger, toast } from '@lace/common'; import SwithIcon from '@src/assets/icons/edit.component.svg'; import ErrorIcon from '@src/assets/icons/address-error-icon.component.svg'; import styles from '../SettingsLayout.module.scss'; @@ -40,7 +40,7 @@ export const CurrencyDrawer = ({ sendCurrencyChangeEvent(event.target.value); } } catch (error) { - console.error('Error updating currency', error); + logger.error('Error updating currency', error); toast.notify({ text: t('general.errors.somethingWentWrong'), icon: ErrorIcon }); } return event; diff --git a/apps/browser-extension-wallet/src/views/browser-view/features/sign-message/useSignMessageState.tsx b/apps/browser-extension-wallet/src/views/browser-view/features/sign-message/useSignMessageState.tsx index b06c267054..cb9762b339 100644 --- a/apps/browser-extension-wallet/src/views/browser-view/features/sign-message/useSignMessageState.tsx +++ b/apps/browser-extension-wallet/src/views/browser-view/features/sign-message/useSignMessageState.tsx @@ -1,7 +1,7 @@ import { useState, useCallback } from 'react'; import { useTranslation } from 'react-i18next'; import { useWalletStore } from '@stores'; -import { PostHogAction, useObservable } from '@lace/common'; +import { logger, PostHogAction, useObservable } from '@lace/common'; import { withSignDataConfirmation } from '@lib/wallet-api-ui'; import { Cip30DataSignature } from '@cardano-sdk/dapp-connector'; import { Wallet } from '@lace/cardano'; @@ -62,7 +62,7 @@ export const useSignMessageState = (): SignMessageState => { setSignature(signatureGenerated); } catch (signingError: unknown) { - console.error('Error signing message:', signingError); + logger.error('Error signing message:', signingError); if ( isHardwareWallet && typeof signingError === 'object' && diff --git a/apps/browser-extension-wallet/src/views/browser-view/features/staking/components/StakePoolDetails/TransactionFail.tsx b/apps/browser-extension-wallet/src/views/browser-view/features/staking/components/StakePoolDetails/TransactionFail.tsx index d0ba04e5ae..19a75e594f 100644 --- a/apps/browser-extension-wallet/src/views/browser-view/features/staking/components/StakePoolDetails/TransactionFail.tsx +++ b/apps/browser-extension-wallet/src/views/browser-view/features/staking/components/StakePoolDetails/TransactionFail.tsx @@ -2,7 +2,7 @@ import React, { useState } from 'react'; import cn from 'classnames'; import { useTranslation } from 'react-i18next'; -import { Button } from '@lace/common'; +import { Button, logger } from '@lace/common'; import { ResultMessage } from '@components/ResultMessage'; import { Sections } from '../../types'; import { useStakePoolDetails, sectionsConfig } from '../../store'; @@ -60,7 +60,7 @@ export const TransactionFailFooter = ({ popupView }: TransactionFailProps): Reac setSection(sectionsConfig[Sections.SUCCESS_TX]); clearSecrets(); } catch (error) { - console.error('failed to sign or submit tx due to:', error); + logger.error('failed to sign or submit tx due to:', error); setIsLoading(false); } }; diff --git a/apps/browser-extension-wallet/src/views/browser-view/routes/index.tsx b/apps/browser-extension-wallet/src/views/browser-view/routes/index.tsx index 5b78f35105..182aaf5433 100644 --- a/apps/browser-extension-wallet/src/views/browser-view/routes/index.tsx +++ b/apps/browser-extension-wallet/src/views/browser-view/routes/index.tsx @@ -40,6 +40,7 @@ import { DAppExplorer } from '@views/browser/features/dapp/explorer/components/D import { useFatalError } from '@hooks/useFatalError'; import { Crash } from '@components/Crash'; import { useIsPosthogClientInitialized } from '@providers/PostHogClientProvider/useIsPosthogClientInitialized'; +import { logger } from '@lace/common'; export const defaultRoutes: RouteMap = [ { @@ -136,7 +137,7 @@ export const BrowserViewRoutes = ({ routesMap = defaultRoutes }: { routesMap?: R useEffect(() => { getBackgroundStorage() .then((storage) => setNamiMigration(storage.namiMigration)) - .catch(console.error); + .catch(logger.error); }, []); useEffect(() => { diff --git a/apps/browser-extension-wallet/src/views/nami-mode/NamiDappConnectorView.tsx b/apps/browser-extension-wallet/src/views/nami-mode/NamiDappConnectorView.tsx index de8ef71548..2c17387fb1 100644 --- a/apps/browser-extension-wallet/src/views/nami-mode/NamiDappConnectorView.tsx +++ b/apps/browser-extension-wallet/src/views/nami-mode/NamiDappConnectorView.tsx @@ -25,6 +25,7 @@ import { useSecrets } from '@lace/core'; import { getBackgroundStorage, setBackgroundStorage } from '@lib/scripts/background/storage'; import { useTxWitnessRequest } from '@providers/TxWitnessRequestProvider'; import type { TransactionWitnessRequest } from '@cardano-sdk/web-extension'; +import { logger } from '@lace/common'; const DAPP_TOAST_DURATION = 100; const dappConnector: Omit = { @@ -36,7 +37,7 @@ const dappConnector: Omit = getDappInfo: RemoteApiPropertyType.MethodReturningPromise } }, - { logger: console, runtime } + { logger, runtime } ); return dappDataService.getDappInfo(); }, @@ -56,7 +57,7 @@ const dappConnector: Omit = baseChannel: DAPP_CHANNELS.userPrompt, properties: { allowOrigin: RemoteApiPropertyType.MethodReturningPromise } }, - { logger: console, runtime } + { logger, runtime } ); setTimeout(() => { @@ -91,7 +92,7 @@ const dappConnector: Omit = baseChannel: DAPP_CHANNELS.userPrompt, properties: { readyToSignData: RemoteApiPropertyType.MethodReturningPromise } }, - { logger: console, runtime } + { logger, runtime } ); return firstValueFrom( @@ -159,7 +160,7 @@ export const NamiDappConnectorView = withDappContext((): React.ReactElement => { assetProvider, assetInfo$: inMemoryWallet.assetInfo$, tx, - logger: console + logger }), // eslint-disable-next-line no-magic-numbers, new-cap timeout: Milliseconds(6000) @@ -185,7 +186,7 @@ export const NamiDappConnectorView = withDappContext((): React.ReactElement => { useEffect(() => { getBackgroundStorage() .then((storage) => setNamiMigration(storage.namiMigration)) - .catch(console.error); + .catch(logger.error); }, []); const switchWalletMode = useCallback(async () => { diff --git a/apps/browser-extension-wallet/src/views/nami-mode/NamiView.tsx b/apps/browser-extension-wallet/src/views/nami-mode/NamiView.tsx index 97512f486d..94cb81d393 100644 --- a/apps/browser-extension-wallet/src/views/nami-mode/NamiView.tsx +++ b/apps/browser-extension-wallet/src/views/nami-mode/NamiView.tsx @@ -35,7 +35,7 @@ import { useStakePoolDetails } from '@src/features/stake-pool-details/store'; import { getPoolInfos, getProviders } from '@src/stores/slices'; import { Wallet } from '@lace/cardano'; import { walletBalanceTransformer } from '@src/api/transformers'; -import { PostHogAction, useObservable } from '@lace/common'; +import { logger, PostHogAction, useObservable } from '@lace/common'; import { getBackgroundStorage, setBackgroundStorage } from '@lib/scripts/background/storage'; import { useWrapWithTimeout } from '../browser-view/features/multi-wallet/hardware-wallet/useWrapWithTimeout'; import { certificateInspectorFactory } from '@src/features/dapp/components/confirm-transaction/utils'; @@ -102,7 +102,7 @@ export const NamiView = withDappContext((): React.ReactElement => { useEffect(() => { getBackgroundStorage() .then(({ dappInjectCompatibilityMode }) => setIsCompatibilityMode(dappInjectCompatibilityMode)) - .catch(console.error); + .catch(logger.error); }, []); const handleCompatibilityModeChoice = async (newCompatMode: boolean) => { await setBackgroundStorage({ dappInjectCompatibilityMode: newCompatMode }); @@ -148,7 +148,7 @@ export const NamiView = withDappContext((): React.ReactElement => { useEffect(() => { getBackgroundStorage() .then((storage) => setNamiMigration(storage.namiMigration)) - .catch(console.error); + .catch(logger.error); }, []); const switchWalletMode = useCallback(async () => { diff --git a/apps/browser-extension-wallet/src/views/nami-mode/utils.ts b/apps/browser-extension-wallet/src/views/nami-mode/utils.ts index f63286ad3b..88a6da0e6d 100644 --- a/apps/browser-extension-wallet/src/views/nami-mode/utils.ts +++ b/apps/browser-extension-wallet/src/views/nami-mode/utils.ts @@ -1,6 +1,7 @@ import { Milliseconds, TimeoutError } from '@cardano-sdk/core'; import { WalletType } from '@cardano-sdk/web-extension'; import { Wallet } from '@lace/cardano'; +import { logger } from '@lace/common'; export const isNamiWallet = (wallet?: Wallet.CardanoWallet): boolean => { if (!wallet || wallet.source.wallet.type !== WalletType.InMemory) return false; @@ -44,7 +45,7 @@ export const tryGetAssetInfos = async ({ assetIds, assetProvider, timeout }: Try timeout ); } catch (error) { - console.error('Error: Failed to retrieve assets', error); + logger.error('Error: Failed to retrieve assets', error); return assetIds.map((assetId) => { const policyId = Wallet.Cardano.AssetId.getPolicyId(assetId); diff --git a/packages/common/src/stringifyLogger.ts b/packages/common/src/AppLogger.ts similarity index 94% rename from packages/common/src/stringifyLogger.ts rename to packages/common/src/AppLogger.ts index 91df3e4ba5..d6a38a7645 100644 --- a/packages/common/src/stringifyLogger.ts +++ b/packages/common/src/AppLogger.ts @@ -13,7 +13,7 @@ enum LogLevel { export type LogLevelString = keyof typeof LogLevel; -class StringifyLogger implements Logger { +class AppLogger implements Logger { private logLevel: LogLevel; constructor(logLevel: LogLevelString = 'info') { @@ -66,4 +66,4 @@ class StringifyLogger implements Logger { } } -export const logger = new StringifyLogger(); +export const logger = new AppLogger(); diff --git a/packages/common/src/index.ts b/packages/common/src/index.ts index 122792a035..a830c69b8e 100644 --- a/packages/common/src/index.ts +++ b/packages/common/src/index.ts @@ -32,4 +32,4 @@ export * from '@ui/components/VirtualisedGrid'; export * from '@analytics/index'; -export * from './stringifyLogger'; +export * from './AppLogger'; diff --git a/packages/core/src/shared-wallets/add-shared-wallet/creation-flow/ShareWalletDetails/utils.ts b/packages/core/src/shared-wallets/add-shared-wallet/creation-flow/ShareWalletDetails/utils.ts index d9dffbf0fe..12844020cc 100644 --- a/packages/core/src/shared-wallets/add-shared-wallet/creation-flow/ShareWalletDetails/utils.ts +++ b/packages/core/src/shared-wallets/add-shared-wallet/creation-flow/ShareWalletDetails/utils.ts @@ -1,3 +1,4 @@ +import { logger } from '@lace/common'; import type { NativeScript, ScriptPubkey, @@ -88,10 +89,10 @@ export const downloadWalletData = async (state: CreationFlowState): Promise = ({ const next = () => { if (!password.value) { - console.error('Password is undefined'); + logger.error('Password is undefined'); return; } diff --git a/packages/core/src/shared-wallets/add-shared-wallet/restore-flow/SharedWalletRestorationFlow.tsx b/packages/core/src/shared-wallets/add-shared-wallet/restore-flow/SharedWalletRestorationFlow.tsx index 2a14a9fe39..d6042f3c81 100644 --- a/packages/core/src/shared-wallets/add-shared-wallet/restore-flow/SharedWalletRestorationFlow.tsx +++ b/packages/core/src/shared-wallets/add-shared-wallet/restore-flow/SharedWalletRestorationFlow.tsx @@ -1,5 +1,6 @@ /* eslint-disable unicorn/no-useless-undefined */ import { Dialog, FileUpload, Text } from '@input-output-hk/lace-ui-toolkit'; +import { logger } from '@lace/common'; import React, { VFC, useEffect, useState } from 'react'; import { Trans, useTranslation } from 'react-i18next'; import { FileErrorMessage, FileValidationError } from '../../../shared-wallets/types'; @@ -68,7 +69,7 @@ export const SharedWalletRestorationFlow: VFC = ({ cosignerData && onRestoreSharedWallet(cosignerData); navigateToAppHome(); } catch (error_) { - console.error(error_); + logger.error(error_); } }; diff --git a/packages/core/src/ui/components/AddressFormBrowserView/AddressForm.tsx b/packages/core/src/ui/components/AddressFormBrowserView/AddressForm.tsx index 707cf8a002..bcba07eb07 100644 --- a/packages/core/src/ui/components/AddressFormBrowserView/AddressForm.tsx +++ b/packages/core/src/ui/components/AddressFormBrowserView/AddressForm.tsx @@ -3,7 +3,7 @@ import React, { useCallback, useEffect, useMemo } from 'react'; import { Form } from 'antd'; import { CheckCircleOutlined, CloseCircleOutlined, PlusCircleOutlined } from '@ant-design/icons'; import classnames from 'classnames'; -import { Input, Button, Search } from '@lace/common'; +import { Input, Button, Search, logger } from '@lace/common'; import { ReactComponent as PlusIcon } from '../../assets/icons/plus.component.svg'; import { ReactComponent as PlusIconDisabled } from '../../assets/icons/plus-disabled.component.svg'; import styles from './AddressForm.module.scss'; @@ -49,7 +49,7 @@ export const AddressFormBrowserView = ({ form.resetFields(); if (onClose) onClose(); } catch (error) { - console.error('Error while submitting new address', error); + logger.error('Error while submitting new address', error); } }; const Plus = PlusIcon ? : ; diff --git a/packages/nami/src/ui/app/components/confirmModal.tsx b/packages/nami/src/ui/app/components/confirmModal.tsx index f4753de912..e6f3bfffb0 100644 --- a/packages/nami/src/ui/app/components/confirmModal.tsx +++ b/packages/nami/src/ui/app/components/confirmModal.tsx @@ -22,6 +22,7 @@ import { ERROR } from '../../../config/config'; import type { PasswordObj as Password } from '@lace/core'; import { NamiPassword } from './namiPassword'; +import {logger} from "@lace/common"; interface Props { ready?: boolean; @@ -274,7 +275,7 @@ const ConfirmModalHw = ({ await props.sign(); await props.onConfirm(true); } catch (error_) { - console.error(error_); + logger.error(error_); if (error_ === ERROR.submit) props.onConfirm(false, error_); else setError('An error occured'); } diff --git a/packages/nami/src/ui/app/components/transactionBuilder.tsx b/packages/nami/src/ui/app/components/transactionBuilder.tsx index fa6595c484..60ab4d488d 100644 --- a/packages/nami/src/ui/app/components/transactionBuilder.tsx +++ b/packages/nami/src/ui/app/components/transactionBuilder.tsx @@ -46,7 +46,7 @@ import UnitDisplay from './unitDisplay'; import type { ConfirmModalRef } from './confirmModal'; import { StakingErrorType } from '../../../features/outside-handles-provider'; -import { Ellipsis } from '@lace/common'; +import {Ellipsis, logger} from '@lace/common'; type States = 'DONE' | 'EDITING' | 'ERROR' | 'LOADING'; const PoolStates: Record = { @@ -376,7 +376,7 @@ const TransactionBuilder = (undefined, ref) => { await signAndSubmitTransaction(); } catch (error) { - console.error(error); + logger.error(error); throw error; } }} @@ -591,7 +591,7 @@ const TransactionBuilder = (undefined, ref) => { await signAndSubmitTransaction(); } catch (error) { - console.error(error); + logger.error(error); throw error; } }}