From bac5d229ddd1addaf100755458b9a50032238db9 Mon Sep 17 00:00:00 2001 From: Kheops <26880866+0xKheops@users.noreply.github.com> Date: Tue, 10 Sep 2024 14:42:26 +0900 Subject: [PATCH] fix: staking buttons visibility and isNomPoolStaking detection (#1608) * fix: staking buttons visibility when an account is selected * fix: isNomPoolStaking detection if staking in non default pool --- .../AssetDetails/DashboardAssetDetails.tsx | 17 ++++++++------- .../AssetDetails/PopupAssetDetails.tsx | 21 ++++++++++++------- .../NomPoolBond/useNomPoolBondButton.ts | 2 +- 3 files changed, 25 insertions(+), 15 deletions(-) diff --git a/apps/extension/src/ui/domains/Portfolio/AssetDetails/DashboardAssetDetails.tsx b/apps/extension/src/ui/domains/Portfolio/AssetDetails/DashboardAssetDetails.tsx index cf1fd0a77..b2d004fca 100644 --- a/apps/extension/src/ui/domains/Portfolio/AssetDetails/DashboardAssetDetails.tsx +++ b/apps/extension/src/ui/domains/Portfolio/AssetDetails/DashboardAssetDetails.tsx @@ -263,7 +263,7 @@ const ChainTokenBalancesDetailRow = ({ className={classNames(status.status === "fetching" && "animate-pulse transition-opacity")} /> - {!!row.locked && row.meta && row.address && tokenId && ( + {!!row.locked && row.meta && tokenId && ( = ({ tokenId, address, rowMeta, isLoading }) => { const { t } = useTranslation() const { data } = useNomPoolStakingStatus(tokenId) + const { account } = useSelectedAccount() + + const rowAddress = useMemo(() => address ?? account?.address ?? null, [account?.address, address]) const accountStatus = useMemo( - () => data?.accounts?.find((s) => s.address === address), - [address, data?.accounts] + () => data?.accounts?.find((s) => s.address === rowAddress), + [data?.accounts, rowAddress] ) - if (!accountStatus) return null + if (!rowAddress || !accountStatus) return null return (
{rowMeta.unbonding ? ( accountStatus.canWithdraw ? ( - + ) : (
) ) : accountStatus.canUnstake ? ( - + ) : null}
) diff --git a/apps/extension/src/ui/domains/Portfolio/AssetDetails/PopupAssetDetails.tsx b/apps/extension/src/ui/domains/Portfolio/AssetDetails/PopupAssetDetails.tsx index 3d068bab8..14511d97c 100644 --- a/apps/extension/src/ui/domains/Portfolio/AssetDetails/PopupAssetDetails.tsx +++ b/apps/extension/src/ui/domains/Portfolio/AssetDetails/PopupAssetDetails.tsx @@ -206,7 +206,7 @@ const ChainTokenBalancesDetailRow = ({
{row.title}{" "} - {tokenId && row.address && row.meta && ( + {!!row.locked && tokenId && row.meta && ( = ({ tokenId, address, rowMeta, isLoading }) => { const { t } = useTranslation() const { data } = useNomPoolStakingStatus(tokenId) + const { account } = useSelectedAccount() + + const rowAddress = useMemo(() => address ?? account?.address ?? null, [account?.address, address]) const accountStatus = useMemo( - () => data?.accounts?.find((s) => s.address === address), - [address, data?.accounts] + () => data?.accounts?.find((s) => s.address === rowAddress), + [rowAddress, data?.accounts] ) - if (!accountStatus) return null + if (!rowAddress || !accountStatus) return null return ( <> @@ -276,7 +279,7 @@ const LockedExtra: FC<{ accountStatus.canWithdraw ? ( ) : ( @@ -293,7 +296,11 @@ const LockedExtra: FC<{ ) ) : //eslint-disable-next-line @typescript-eslint/no-explicit-any accountStatus.canUnstake ? ( - + ) : null} ) diff --git a/apps/extension/src/ui/domains/Staking/NomPoolBond/useNomPoolBondButton.ts b/apps/extension/src/ui/domains/Staking/NomPoolBond/useNomPoolBondButton.ts index ee3949394..d95940c53 100644 --- a/apps/extension/src/ui/domains/Staking/NomPoolBond/useNomPoolBondButton.ts +++ b/apps/extension/src/ui/domains/Staking/NomPoolBond/useNomPoolBondButton.ts @@ -48,7 +48,7 @@ export const useNomPoolBondButton = ({ // lookup existing poolId for that account for (const balance of sorted.filter((b) => b.address === address)) { type Meta = { poolId?: number } - const pool = balance.nompools.find((np) => (np.meta as Meta).poolId === poolId) + const pool = balance.nompools.find((np) => !!(np.meta as Meta).poolId) const meta = pool?.meta as Meta | undefined if (meta?.poolId) { poolId = meta.poolId