Skip to content

Commit 30e944a

Browse files
authored
chore: only show dollar based balances if the dollar balances are available (#2275)
1 parent d86f8aa commit 30e944a

File tree

5 files changed

+77
-42
lines changed

5 files changed

+77
-42
lines changed

apps/namadillo/src/App/AccountOverview/ShieldedAssetsOverview.tsx

Lines changed: 26 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -12,31 +12,38 @@ import { TotalBalanceCard } from "./TotalBalanceCard";
1212

1313
export const ShieldedAssetsOverview = (): JSX.Element => {
1414
const { shieldingRewardsEnabled } = useAtomValue(applicationFeaturesAtom);
15-
const { shieldedAmountInFiat } = useAmountsInFiat();
15+
const { shieldedAmountInFiat, shieldedQuery, hasShieldedAssets } =
16+
useAmountsInFiat();
1617
const textContainerClassList = `flex h-full gap-1 items-center justify-center`;
1718
const requiresNewShieldedSync = useRequiresNewShieldedSync();
1819

20+
// Hide TotalBalanceCard if shielded fiat amount is 0 but shielded assets exist
21+
const shouldHideBalanceCard =
22+
shieldedQuery.isSuccess && hasShieldedAssets && shieldedAmountInFiat.eq(0);
23+
1924
return (
2025
<Panel className="relative px-6 border-x border-b border-yellow rounded-t-none h-full">
2126
<div className="flex justify-between gap-16 mt-4">
22-
<TotalBalanceCard
23-
balanceInFiat={shieldedAmountInFiat}
24-
isShielded={true}
25-
footerButtons={
26-
<>
27-
<ActionButton
28-
href={routes.transfer}
29-
outlineColor="yellow"
30-
size="xs"
31-
className="w-auto px-4"
32-
>
33-
<span className={clsx(textContainerClassList)}>
34-
Shielded Transfer
35-
</span>
36-
</ActionButton>
37-
</>
38-
}
39-
/>
27+
{!shouldHideBalanceCard ?
28+
<TotalBalanceCard
29+
balanceInFiat={shieldedAmountInFiat}
30+
isShielded={true}
31+
footerButtons={
32+
<>
33+
<ActionButton
34+
href={routes.transfer}
35+
outlineColor="yellow"
36+
size="xs"
37+
className="w-auto px-4"
38+
>
39+
<span className={clsx(textContainerClassList)}>
40+
Shielded Transfer
41+
</span>
42+
</ActionButton>
43+
</>
44+
}
45+
/>
46+
: <div />}
4047
{shieldingRewardsEnabled && <EstimateShieldingRewardsCard />}
4148
</div>
4249
<div className="mt-10">

apps/namadillo/src/App/AccountOverview/TotalBalanceBanner.tsx

Lines changed: 15 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -14,16 +14,28 @@ export const TotalBalanceBanner = (): JSX.Element => {
1414
const { isFetching: isShieldSyncing } = useAtomValue(shieldedBalanceAtom);
1515
const requiresNewShieldedSync = useRequiresNewShieldedSync();
1616
const shouldWaitForShieldedSync = requiresNewShieldedSync && isShieldSyncing;
17-
const { shieldedQuery, unshieldedQuery, stakingQuery, totalAmountInFiat } =
18-
useAmountsInFiat();
19-
17+
const {
18+
shieldedQuery,
19+
unshieldedQuery,
20+
stakingQuery,
21+
totalAmountInFiat,
22+
hasUnshieldedAssets,
23+
hasShieldedAssets,
24+
} = useAmountsInFiat();
2025
const balancesHaveLoaded =
2126
shieldedQuery.isSuccess &&
2227
unshieldedQuery.isSuccess &&
2328
stakingQuery.isSuccess;
2429
const hasErrors =
2530
shieldedQuery.isError && unshieldedQuery.isError && stakingQuery.isError;
2631
const balanceIsLoading = !balancesHaveLoaded && !hasErrors;
32+
const hasAnyAssets = hasUnshieldedAssets || hasShieldedAssets;
33+
34+
// Hide banner if totalAmountInFiat is 0 but we have assets (means pricing is unavailable)
35+
const shouldHideBanner =
36+
balancesHaveLoaded && hasAnyAssets && totalAmountInFiat.eq(0);
37+
38+
if (shouldHideBanner) return <></>;
2739

2840
return (
2941
<Panel className="py-4">

apps/namadillo/src/App/AccountOverview/UnshieldedAssetsOverview.tsx

Lines changed: 23 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -9,32 +9,39 @@ import { TotalBalanceCard } from "./TotalBalanceCard";
99
import { UnshieldedAssetTable } from "./UnshieldedAssetTable";
1010

1111
export const UnshieldedAssetsOverview = (): JSX.Element => {
12-
const { unshieldedAmountInFiat } = useAmountsInFiat();
1312
const navigate = useNavigate();
1413
const transparentTokensQuery = useAtomValue(transparentTokensAtom);
15-
14+
const { unshieldedAmountInFiat, hasUnshieldedAssets } = useAmountsInFiat();
1615
const isLoading =
1716
transparentTokensQuery.isLoading ||
1817
(transparentTokensQuery.fetchStatus === "idle" &&
1918
!transparentTokensQuery.isFetched);
2019

20+
// Hide TotalBalanceCard if unshielded fiat amount is 0 but unshielded assets exist
21+
const shouldHideBalanceCard =
22+
transparentTokensQuery.isSuccess &&
23+
hasUnshieldedAssets &&
24+
unshieldedAmountInFiat.eq(0);
25+
2126
return (
2227
<Panel className="relative px-6 rounded-t-none h-full">
2328
<div className="flex justify-between items-center gap-16 mt-4">
24-
<TotalBalanceCard
25-
balanceInFiat={unshieldedAmountInFiat}
26-
footerButtons={
27-
<>
28-
<ActionButton
29-
onClick={() => navigate(routes.shield)}
30-
size="xs"
31-
className="w-auto px-4"
32-
>
33-
Shield Assets
34-
</ActionButton>
35-
</>
36-
}
37-
/>
29+
{!shouldHideBalanceCard ?
30+
<TotalBalanceCard
31+
balanceInFiat={unshieldedAmountInFiat}
32+
footerButtons={
33+
<>
34+
<ActionButton
35+
onClick={() => navigate(routes.shield)}
36+
size="xs"
37+
className="w-auto px-4"
38+
>
39+
Shield Assets
40+
</ActionButton>
41+
</>
42+
}
43+
/>
44+
: <div />}
3845
<UnclaimedRewardsCard />
3946
</div>
4047
{transparentTokensQuery.isSuccess && (

apps/namadillo/src/atoms/balance/atoms.ts

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -263,9 +263,9 @@ export const shieldedTokensAtom = atomWithQuery<TokenBalance[]>((get) => {
263263
async () =>
264264
mapNamadaAssetsToTokenBalances(
265265
shieldedAssets.data ?? {},
266-
tokenPrices.data ?? {}
266+
tokenPrices.isSuccess ? (tokenPrices.data ?? {}) : {}
267267
),
268-
[shieldedAssets, tokenPrices]
268+
[shieldedAssets]
269269
),
270270
};
271271
});
@@ -320,10 +320,10 @@ export const transparentTokensAtom = atomWithQuery<TokenBalance[]>((get) => {
320320
Promise.resolve(
321321
mapNamadaAssetsToTokenBalances(
322322
transparentAssets.data ?? {},
323-
tokenPrices.data ?? {}
323+
tokenPrices.isSuccess ? (tokenPrices.data ?? {}) : {}
324324
)
325325
),
326-
[transparentAssets, tokenPrices]
326+
[transparentAssets]
327327
),
328328
};
329329
});

apps/namadillo/src/hooks/useAmountsInFiat.tsx

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,8 @@ type AmountsInFiatOutput = {
1616
shieldedQuery: AtomWithQueryResult;
1717
unshieldedQuery: AtomWithQueryResult;
1818
stakingQuery: AtomWithQueryResult;
19+
hasShieldedAssets: boolean;
20+
hasUnshieldedAssets: boolean;
1921
isLoading: boolean;
2022
};
2123

@@ -61,6 +63,11 @@ export const useAmountsInFiat = (): AmountsInFiatOutput => {
6163
.plus(unshieldedDollars)
6264
.plus(stakingDollars);
6365

66+
const hasShieldedAssets =
67+
shieldedTokensQuery.data?.some((token) => token.amount.gt(0)) ?? false;
68+
const hasUnshieldedAssets =
69+
unshieldedTokensQuery.data?.some((token) => token.amount.gt(0)) ?? false;
70+
6471
return {
6572
shieldedQuery: shieldedTokensQuery,
6673
unshieldedQuery: unshieldedTokensQuery,
@@ -69,6 +76,8 @@ export const useAmountsInFiat = (): AmountsInFiatOutput => {
6976
shieldedAmountInFiat: shieldedDollars,
7077
unshieldedAmountInFiat: unshieldedDollars,
7178
stakingAmountInFiat: stakingDollars,
79+
hasShieldedAssets,
80+
hasUnshieldedAssets,
7281
isLoading:
7382
shieldedTokensQuery.isLoading ||
7483
unshieldedTokensQuery.isLoading ||

0 commit comments

Comments
 (0)