Skip to content

Commit

Permalink
fix: improve account selection on multiple accounts
Browse files Browse the repository at this point in the history
  • Loading branch information
icfor committed Apr 16, 2024
1 parent 5f86e52 commit ceb7a05
Show file tree
Hide file tree
Showing 2 changed files with 42 additions and 2 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -419,6 +419,33 @@ const PopOver = ({
{shouldDisplayUnstakeButton && (
<EmptyButton
onClick={() => {
if (
unstakeableStakeAccounts &&
unstakeableStakeAccounts.length > 0
) {
const [unstakeableStakeAccount] = unstakeableStakeAccounts;

const account = getAccountsForNetwork(
stakingRef.current.state,
stakingNetworkId,
).find(
(acc) =>
!!acc.info?.stakeAccounts?.find(
(s) => s.address === unstakeableStakeAccount.address,
),
);

if (account) {
setSelectedAccount(
stakingRef.current,
"unstake",
account,
);
}

return;
}

setSelectedAccount(
stakingRef.current,
"unstake",
Expand Down
17 changes: 15 additions & 2 deletions src/screens/staking/components/staking_section/unstaking_modal.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -53,6 +53,8 @@ import NetworksSelect from "./networks_select";
import StakeAccountsSelect from "./stake_accounts_select";
import * as styles from "./unstaking_modal.module.scss";

const possibleStakeAccountStatus = ["activating", "active"];

const UnstakingModal = () => {
const stakingRef = useStakingRef();

Expand Down Expand Up @@ -142,7 +144,7 @@ const UnstakingModal = () => {
account?.address,
)
: []
).filter((acc) => ["activating", "active"].includes(acc.status));
).filter((acc) => possibleStakeAccountStatus.includes(acc.status));

const onClose = () => setSelectedAccount(stakingRef.current, null, null);
const hasMemo = account ? networksWithMemo.has(account?.networkId) : false;
Expand Down Expand Up @@ -321,7 +323,18 @@ const UnstakingModal = () => {
<Label>{t("unstakingModal.unstakeFrom")}</Label>
<div>
{selectedAccount && (
<NetworksSelect disabled={isLoading} variant="accounts_wallet" />
<NetworksSelect
accountFilter={
solanaNetworks.has(selectedAccount.networkId)
? (acc) =>
!!acc.info?.stakeAccounts?.some((a) =>
possibleStakeAccountStatus.includes(a.status),
)
: () => true
}
disabled={isLoading}
variant="accounts_wallet"
/>
)}
</div>
</div>
Expand Down

0 comments on commit ceb7a05

Please sign in to comment.