From f73c2a6df4f8e50f1018eec86da35b2842ac0e61 Mon Sep 17 00:00:00 2001 From: Bobo Date: Wed, 12 Mar 2025 09:08:30 +0900 Subject: [PATCH 1/2] Locked in democracy to useBalance --- src/components/assets/NativeAssetList.vue | 10 ++++++---- src/hooks/useBalance.ts | 10 ++++++++-- 2 files changed, 14 insertions(+), 6 deletions(-) diff --git a/src/components/assets/NativeAssetList.vue b/src/components/assets/NativeAssetList.vue index 8e00b8907..2b776de52 100644 --- a/src/components/assets/NativeAssetList.vue +++ b/src/components/assets/NativeAssetList.vue @@ -341,7 +341,8 @@ export default defineComponent({ const store = useStore(); const isLoading = computed(() => store.getters['general/isLoading']); const selectedAddress = computed(() => store.getters['general/selectedAddress']); - const { balance, accountData, isLoadingBalance } = useBalance(selectedAddress); + const { balance, accountData, isLoadingBalance, lockedInDemocracy } = + useBalance(selectedAddress); const { numEvmDeposit } = useEvmDeposit(); const { currentNetworkName, nativeTokenSymbol, isSupportAuTransfer } = useNetworkInfo(); const { faucetBalRequirement } = useFaucet(); @@ -404,7 +405,6 @@ export default defineComponent({ // Memo: `vesting ` -> there has been inputted 1 space here const vesting = accountDataRef.locks.find((it) => u8aToString(it.id) === 'vesting '); const dappStake = accountDataRef.locks.find((it) => u8aToString(it.id) === 'dapstake'); - const democracy = accountDataRef.locks.find((it) => u8aToString(it.id) === 'democrac'); const reserved = accountDataRef.reserved; if (vesting) { @@ -424,8 +424,10 @@ export default defineComponent({ reservedTtl.value = Number(ethers.utils.formatEther(amount)); } - if (democracy) { - lockInDemocracy.value = Number(ethers.utils.formatEther(democracy.amount.toString())); + if (lockedInDemocracy.value) { + lockInDemocracy.value = Number( + ethers.utils.formatEther(lockedInDemocracy.value.toString()) + ); } }); diff --git a/src/hooks/useBalance.ts b/src/hooks/useBalance.ts index 9bdb7804b..8470a4779 100644 --- a/src/hooks/useBalance.ts +++ b/src/hooks/useBalance.ts @@ -2,7 +2,7 @@ import { ETHEREUM_EXTENSION } from 'src/modules/account'; import { VoidFn } from '@polkadot/api/types'; import { BalanceLockTo212 } from '@polkadot/types/interfaces'; import { PalletBalancesBalanceLock, PalletVestingVestingInfo } from 'src/v2/models'; -import { BN } from '@polkadot/util'; +import { BN, u8aToString } from '@polkadot/util'; import { $api, $web3 } from 'boot/api'; import { SystemAccount } from 'src/modules/account'; import { useStore } from 'src/store'; @@ -167,6 +167,12 @@ export function useBalance(addressRef: Ref) { const useableBalance = computed(() => { return accountData.value?.getUsableFeeBalance().toString() || '0'; }); + const lockedInDemocracy = computed(() => { + const lock = accountData.value?.locks.find((it) => u8aToString(it.id) === 'democrac'); + + return lock ? lock.amount.toBigInt() : BigInt(0); + }); + const isLoadingBalance = ref(true); const { balanceRef, accountDataRef, isLoadingAccount } = useCall(addressRef); @@ -196,7 +202,7 @@ export function useBalance(addressRef: Ref) { { immediate: true } ); - return { balance, accountData, useableBalance, isLoadingBalance }; + return { balance, accountData, useableBalance, isLoadingBalance, lockedInDemocracy }; } export class AccountData { From 4f81b9b55af8c4767c159ee35a501be1bb72f133 Mon Sep 17 00:00:00 2001 From: Bobo Date: Wed, 12 Mar 2025 14:46:46 +0900 Subject: [PATCH 2/2] Treat tokens locked in democracy as available for staking --- src/staking-v3/hooks/useVote.ts | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) diff --git a/src/staking-v3/hooks/useVote.ts b/src/staking-v3/hooks/useVote.ts index b72e3364d..77f7f0735 100644 --- a/src/staking-v3/hooks/useVote.ts +++ b/src/staking-v3/hooks/useVote.ts @@ -9,7 +9,7 @@ import { useDappStakingNavigation } from './useDappStakingNavigation'; export function useVote(dapps: Ref, dappToMoveTokensFromAddress?: string) { const { currentAccount } = useAccount(); - const { useableBalance } = useBalance(currentAccount); + const { useableBalance, lockedInDemocracy } = useBalance(currentAccount); const { ledger, totalStake, @@ -70,7 +70,8 @@ export function useVote(dapps: Ref, dappToMoveTokensFromAddress?: st ? availableToMove.value : BigInt(useableBalance.value) + max(remainingLockedTokensInitial, BigInt(0)) + - availableToMove.value + availableToMove.value + + lockedInDemocracy.value ); const availableToVoteDisplay = computed(() => { @@ -79,8 +80,14 @@ export function useVote(dapps: Ref, dappToMoveTokensFromAddress?: st } return remainingLockedTokens.value >= BigInt(0) - ? BigInt(useableBalance.value) + remainingLockedTokens.value + availableToMove.value - : BigInt(useableBalance.value) - abs(remainingLockedTokens.value) + availableToMove.value; + ? BigInt(useableBalance.value) + + lockedInDemocracy.value + + remainingLockedTokens.value + + availableToMove.value + : BigInt(useableBalance.value) + + lockedInDemocracy.value - + abs(remainingLockedTokens.value) + + availableToMove.value; }); const amountToUnstake = computed(() =>