Skip to content

Commit ea1ad81

Browse files
authored
[Lw-10372] set up defensive code for when inMemoryWallet or CardanoWallet does not exist (#1147)
* fix: set up defensive code for when inMemoryWallet or CardanoWallet does not exist * fix: two more errors on avatar and drodownmenu for defensive code missing
1 parent 160be35 commit ea1ad81

File tree

9 files changed

+14
-13
lines changed

9 files changed

+14
-13
lines changed

apps/browser-extension-wallet/src/components/DropdownMenu/DropdownMenu.tsx

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,7 @@ export const DropdownMenu = ({ isPopup }: DropdownMenuProps): React.ReactElement
4343

4444
useEffect(() => () => setIsDropdownMenuOpen(false), [setIsDropdownMenuOpen]);
4545

46-
const walletName = cardanoWallet.source.wallet.metadata.name;
46+
const walletName = cardanoWallet?.source?.wallet?.metadata?.name;
4747

4848
const titleCharBeforeEll = 10;
4949
const titleCharAfterEll = 0;
@@ -57,11 +57,11 @@ export const DropdownMenu = ({ isPopup }: DropdownMenuProps): React.ReactElement
5757
placement="bottomRight"
5858
trigger={['click']}
5959
>
60-
{process.env.USE_MULTI_WALLET === 'true' ? (
60+
{process.env.USE_MULTI_WALLET === 'true' && walletName ? (
6161
<div className={styles.profileDropdownTrigger}>
6262
<ProfileDropdown.Trigger
6363
title={addEllipsis(walletName, titleCharBeforeEll, titleCharAfterEll)}
64-
subtitle={getActiveWalletSubtitle(cardanoWallet.source.account)}
64+
subtitle={getActiveWalletSubtitle(cardanoWallet?.source.account)}
6565
active={isDropdownMenuOpen}
6666
profile={
6767
activeWalletAvatar

apps/browser-extension-wallet/src/components/MainMenu/DropdownMenuOverlay/components/UserAvatar.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ export const UserAvatar = ({ walletName, isPopup, avatar }: UserAvatarProps): Re
1515
{avatar ? (
1616
<Image src={avatar} className={styles.userAvatarImage} preview={false} />
1717
) : (
18-
<span>{walletName[0]?.toUpperCase()}</span>
18+
<span>{walletName && walletName[0]?.toUpperCase()}</span>
1919
)}
2020
</div>
2121
);

apps/browser-extension-wallet/src/hooks/useCollateral.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@ export const useCollateral = (): UseCollateralReturn => {
3333
const { setBuiltTxData } = useBuiltTxState();
3434
const [isInitializing, setIsInitializing] = useState<boolean>(false);
3535
const [isSubmitting, setIsSubmitting] = useState<boolean>(false);
36-
const addresses = useObservable(inMemoryWallet.addresses$);
36+
const addresses = useObservable(inMemoryWallet?.addresses$);
3737
const walletAddress = addresses?.[0]?.address;
3838
const maxAvailableAda = useMaxAda();
3939
const hasEnoughAda = useMemo(() => maxAvailableAda >= COLLATERAL_AMOUNT_LOVELACES, [maxAvailableAda]);

apps/browser-extension-wallet/src/hooks/useDelegationDetails.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ import { useWalletStore } from '../stores';
77

88
export const useDelegationDetails = (): Wallet.Cardano.StakePool => {
99
const { inMemoryWallet } = useWalletStore();
10-
const rewardAccounts = useObservable(inMemoryWallet.delegation.rewardAccounts$);
10+
const rewardAccounts = useObservable(inMemoryWallet?.delegation?.rewardAccounts$);
1111

1212
return useMemo(() => {
1313
const rewardAccount = !isEmpty(rewardAccounts) ? rewardAccounts[0] : undefined;

apps/browser-extension-wallet/src/hooks/useGetHandles.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ import { HandleInfo } from '@cardano-sdk/wallet';
55

66
export const useGetHandles = (): HandleInfo[] => {
77
const { inMemoryWallet } = useWalletStore();
8-
const handles = (useObservable(inMemoryWallet.handles$) || []).sort(
8+
const handles = (useObservable(inMemoryWallet?.handles$) || []).sort(
99
({ nftMetadata: { name: a } }, { nftMetadata: { name: b } }) => a.length - b.length
1010
);
1111

apps/browser-extension-wallet/src/hooks/useMaxAda.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,8 +9,8 @@ const { getTotalMinimumCoins, setMissingCoins } = Wallet;
99
export const useMaxAda = (): bigint => {
1010
const [maxADA, setMaxADA] = useState<bigint>();
1111
const { walletInfo, inMemoryWallet } = useWalletStore();
12-
const balance = useObservable(inMemoryWallet.balance.utxo.available$);
13-
const availableRewards = useObservable(inMemoryWallet.balance.rewardAccounts.rewards$);
12+
const balance = useObservable(inMemoryWallet?.balance?.utxo.available$);
13+
const availableRewards = useObservable(inMemoryWallet?.balance?.rewardAccounts?.rewards$);
1414

1515
const calculateMaxAda = useCallback(async () => {
1616
if (!balance) {

apps/browser-extension-wallet/src/hooks/useSyncingTheFirstTime.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,13 +11,13 @@ export const useSyncingTheFirstTime = (): boolean => {
1111
() =>
1212
concat(
1313
of(true),
14-
inMemoryWallet.syncStatus.isSettled$.pipe(
14+
inMemoryWallet?.syncStatus?.isSettled$.pipe(
1515
filter((s: boolean) => s),
1616
map(() => false),
1717
take(1)
1818
)
1919
),
20-
[inMemoryWallet.syncStatus.isSettled$]
20+
[inMemoryWallet?.syncStatus?.isSettled$]
2121
);
2222

2323
return useObservable(isSyncingForTheFirstTime$);

apps/browser-extension-wallet/src/hooks/useWalletAvatar.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ export const useWalletAvatar = (): UseWalletAvatar => {
1515
const [handle] = useGetHandles();
1616
const [avatars, { updateLocalStorage: setUserAvatar }] = useLocalStorage('userAvatar');
1717

18-
const activeWalletId = cardanoWallet.source.wallet.walletId;
18+
const activeWalletId = cardanoWallet?.source.wallet.walletId;
1919
const handleImage = handle?.profilePic;
2020
const activeWalletAvatar =
2121
(environmentName && avatars?.[`${environmentName}${activeWalletId}`]) ||

apps/browser-extension-wallet/src/views/browser-view/features/settings/components/SettingsWalletBase.tsx

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -64,7 +64,8 @@ export const SettingsWalletBase = <AdditionalDrawers extends string>({
6464
const { t } = useTranslation();
6565
const { environmentName, inMemoryWallet, walletInfo, setHdDiscoveryStatus } = useWalletStore();
6666
const { AVAILABLE_CHAINS } = config();
67-
const unspendable = useObservable(inMemoryWallet.balance.utxo.unspendable$);
67+
68+
const unspendable = useObservable(inMemoryWallet?.balance?.utxo.unspendable$);
6869

6970
const hasCollateral = useMemo(() => unspendable?.coins >= COLLATERAL_AMOUNT_LOVELACES, [unspendable?.coins]);
7071
const backgroundServices = useBackgroundServiceAPIContext();

0 commit comments

Comments
 (0)