Fix transferable balance (#10842)

* Fix transferable balance

* fix nits

* Fix all transferrable to transferable
This commit is contained in:
Tarik Gul 2024-08-20 15:06:10 -07:00 committed by GitHub
parent 037233c061
commit 9e1af82fd9
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
49 changed files with 70 additions and 69 deletions

View File

@ -1218,7 +1218,7 @@
"total staked": "إجمالي المرهون",
"transactions": "معاملات",
"transfer received": "تم استلام التحويل",
"transferrable": "قابل للتحويل",
"transferable": "قابل للتحويل",
"trusted social recovery helpers": "مساعدو الإسترجاع الاجتماعي الموثوق بهم",
"turnout": "معدل المشاركة في الإنتخابات",
"twitter": "تويتر",

View File

@ -1291,7 +1291,7 @@
"transactions": "লেনদেনসমূহ",
"transfer received": "প্রাপ্ত হস্তান্তর",
"transfer remark/comment": "হস্তান্তর উক্তি/মন্তব্য",
"transferrable": "হস্তান্তরযোগ্য",
"transferable": "হস্তান্তরযোগ্য",
"trusted social recovery helpers": "বিশ্বস্ত সামাজিক পুনরুদ্ধার সহায়কবৃন্দ",
"turnout": "ভোটার",
"twitter": "টুইটার",

View File

@ -285,7 +285,7 @@
"total balance": "total balance",
"total deposit": "total deposit",
"total locked": "total locked",
"total transferrable": "total transferrable",
"total transferable": "total transferable",
"trusted social recovery helpers": "trusted social recovery helpers",
"twitter": "twitter",
"unbonding": "unbonding",

View File

@ -63,7 +63,7 @@
"read": "read",
"read contract only, no execution": "read contract only, no execution",
"status": "status",
"transferrable": "transferrable",
"transferable": "transferable",
"unique deployment salt": "unique deployment salt",
"use deployment salt": "use deployment salt",
"use estimated gas": "use estimated gas",

View File

@ -66,7 +66,7 @@
"send from account": "send from account",
"threshold": "threshold",
"total": "total",
"transferrable": "transferrable",
"transferable": "transferable",
"turnout": "turnout",
"votes": "votes",
"voting period": "voting period",

View File

@ -37,6 +37,6 @@
"files": "files",
"password": "password",
"status": "status",
"transferrable": "transferrable",
"transferable": "transferable",
"⚡️ Thunder Gateway": "⚡️ Thunder Gateway"
}

View File

@ -21,7 +21,7 @@
"send via proxy": "send via proxy",
"submit gilt bid": "submit gilt bid",
"target": "target",
"transferrable": "transferrable",
"transferable": "transferable",
"use proxied account": "use proxied account",
"yes": "yes"
}

View File

@ -18,6 +18,6 @@
"queues": "queues",
"send via proxy": "send via proxy",
"submit nis bid": "submit nis bid",
"transferrable": "transferrable",
"transferable": "transferable",
"use proxied account": "use proxied account"
}

View File

@ -155,7 +155,7 @@
"timeout": "timeout",
"total": "total",
"total raised / cap": "total raised / cap",
"transferrable": "transferrable",
"transferable": "transferable",
"validation code": "validation code",
"validator {{index}}": "validator {{index}}",
"value": "value",

View File

@ -18,5 +18,5 @@
"propose": "propose",
"send from account": "send from account",
"status": "status",
"transferrable": "transferrable"
"transferable": "transferable"
}

View File

@ -102,7 +102,7 @@
"total": "total",
"total issuance": "total issuance",
"track origin": "track origin",
"transferrable": "transferrable",
"transferable": "transferable",
"vote": "vote",
"votes": "votes",
"{{blocks}} blocks": "{{blocks}} blocks",

View File

@ -110,8 +110,8 @@
"threshold": "threshold",
"total": "total",
"transactions": "transactions",
"transferrable": "transferrable",
"transferrable minus fees": "transferrable minus fees",
"transferable": "transferable",
"transferable minus fees": "transferable minus fees",
"twitter": "twitter",
"type": "type",
"unbonding": "unbonding",

View File

@ -1754,13 +1754,13 @@
"total stake": "",
"total staked": "",
"total sub": "",
"total transferrable": "",
"total transferable": "",
"track origin": "",
"transactions": "",
"transfer asset": "",
"transfer received": "",
"transferrable": "",
"transferrable minus fees": "",
"transferable": "",
"transferable minus fees": "",
"transfers": "",
"trusted social recovery helpers": "",
"turnout": "",

View File

@ -1052,7 +1052,7 @@
"total staked": "staked total",
"transactions": "transacciones",
"transfer received": "transferencia recibida",
"transferrable": "transferible",
"transferable": "transferible",
"trusted social recovery helpers": "asistentes de confianza para la recuperación social",
"turnout": "participación",
"twitter": "twitter",

View File

@ -1433,8 +1433,8 @@
"transactions": "transactions",
"transfer received": "transfert reçu",
"transfer remark/comment": "transférer une remarque/commentaire",
"transferrable": "transferrable",
"transferrable minus fees": "transferable moins les frais",
"transferable": "transferable",
"transferable minus fees": "transferable moins les frais",
"trusted social recovery helpers": "assistants sociaux de confiance",
"turnout": "participation",
"twitter": "twitter",

View File

@ -1051,7 +1051,7 @@
"total staked": "कुल दांव",
"transactions": "लेनदेन",
"transfer received": "स्थानांतरण प्राप्त हुआ",
"transferrable": "हस्तांतरणीय",
"transferable": "हस्तांतरणीय",
"trusted social recovery helpers": "विश्वसनीय सामाजिक पुनर्प्राप्ति सहायक",
"turnout": "भागीदारी",
"twitter": "ट्विटर",

View File

@ -1359,8 +1359,8 @@
"transactions": "transaksi",
"transfer received": "transfer diterima",
"transfer remark/comment": "transfer ucapan/komentar",
"transferrable": "yang dapat ditransfer",
"transferrable minus fees": "biaya dikurangi yang dapat dialihkan",
"transferable": "yang dapat ditransfer",
"transferable minus fees": "biaya dikurangi yang dapat dialihkan",
"trusted social recovery helpers": "pemulihan sosial helper terpercaya",
"turnout": "beralih",
"twitter": "twitter",

View File

@ -2017,8 +2017,8 @@
"transfer asset": "trasferimento asset",
"transfer received": "trasferimento ricevuto",
"transfer remark/comment": "commento/nota sul trasferimento",
"transferrable": "trasferibili",
"transferrable minus fees": "transferibile al netto delle commissioni",
"transferable": "trasferibili",
"transferable minus fees": "transferibile al netto delle commissioni",
"transfers": "trasferimenti",
"trusted social recovery helpers": "garanti di fiducia per recupero account",
"turnout": "partecipanti",

View File

@ -546,7 +546,7 @@
"threshold": "出発点",
"transactions": "トランザクション",
"transfer received": "受信",
"transferrable": "送信可能な",
"transferable": "送信可能な",
"trusted social recovery helpers": "信頼できるソーシャルリカバリーヘルパー",
"twitter": "twitter",
"type": "タイプ",

View File

@ -1389,8 +1389,8 @@
"transactions": "거래 목록",
"transfer received": "트랜스퍼를 받았습니다",
"transfer remark/comment": "이체할 발언/ 논평",
"transferrable": "이체 가능",
"transferrable minus fees": "수수료를 제외하고 이체 가능",
"transferable": "이체 가능",
"transferable minus fees": "수수료를 제외하고 이체 가능",
"trusted social recovery helpers": "신뢰할 수 있는 \"계정 복구 도우미\" 목록",
"turnout": "투표자 수",
"twitter": "트워터",

View File

@ -328,8 +328,8 @@
"threshold": "próg / limit",
"total deposit": "ogólny depozyt",
"transactions": "tranzakcje",
"transferrable": "możliwy do przeslania",
"transferrable minus fees": "możliwy do przesłania po odjęciu opłat",
"transferable": "możliwy do przeslania",
"transferable minus fees": "możliwy do przesłania po odjęciu opłat",
"trusted social recovery helpers": "zaufani pomocnicy w naprawie społecznej",
"twitter": "twitter",
"type": "typ",

View File

@ -1057,7 +1057,7 @@
"total staked": "total em participação",
"transactions": "transações",
"transfer received": "transferência recebida",
"transferrable": "transferível",
"transferable": "transferível",
"trusted social recovery helpers": "auxiliares confiáveis de recuperação social",
"turnout": "vire para fora",
"twitter": "Twitter",

View File

@ -1384,12 +1384,12 @@
"total peers": "всего соединений с другими нодами",
"total stake": "всего стейк",
"total staked": "всего застейкано",
"total transferrable": "всего доступно для перевода",
"total transferable": "всего доступно для перевода",
"transactions": "транзакции",
"transfer asset": "отправить средства",
"transfer received": "трансферов получено",
"transferrable": "передаваемые",
"transferrable minus fees": "доступное для перевода без комиссии",
"transferable": "передаваемые",
"transferable minus fees": "доступное для перевода без комиссии",
"trusted social recovery helpers": "доверяемые помощники для социального восстановления",
"turnout": "оказаться",
"twitter": "twitter",

View File

@ -1292,7 +1292,7 @@
"transactions": "ٹرانزیکشنز",
"transfer received": "منتقلی موصول ہوئی",
"transfer remark/comment": "منتقلی پر کمینٹ/ریمارک دیں",
"transferrable": "قابل منتقلی",
"transferable": "قابل منتقلی",
"trusted social recovery helpers": "قابل اعتماد سوشل ریکوری ہیلپرز",
"turnout": "ٹرن آؤٹ",
"twitter": "ٹویٹر",

View File

@ -1295,7 +1295,7 @@
"transactions": "交易",
"transfer received": "转账接收成功",
"transfer remark/comment": "转账备注/评论",
"transferrable": "可转账的",
"transferable": "可转账的",
"trusted social recovery helpers": "信任的社交恢复帮手",
"turnout": "结果",
"twitter": "Twitter",

View File

@ -197,7 +197,7 @@ function Account ({ account: { address, meta }, className = '', delegation, filt
locked: balancesAll.lockedBalance,
redeemable: stakingInfo?.redeemable || BN_ZERO,
total: balancesAll.freeBalance.add(balancesAll.reservedBalance),
transferrable: balancesAll.availableBalance,
transferable: balancesAll.transferable || balancesAll.availableBalance,
unbonding: calcUnbonding(stakingInfo)
});

View File

@ -28,11 +28,11 @@ function Summary ({ balance, className }: Props) {
</CardSummary>
<CardSummary
className='media--900'
label={t('total transferrable')}
label={t('total transferable')}
>
<FormatBalance
className={balance ? '' : '--tmp'}
value={balance?.transferrable || 1}
value={balance?.transferable || 1}
/>
</CardSummary>
<CardSummary label={t('total locked')}>

View File

@ -110,10 +110,10 @@ describe.skip('Accounts page', () => {
const rows = await accountsPage.getAccountRows();
await rows[0].assertBalancesDetails([
{ amount: balance(0), name: 'transferrable' },
{ amount: balance(0), name: 'transferable' },
{ amount: balance(30), name: 'locked' }]);
await rows[1].assertBalancesDetails([
{ amount: balance(50), name: 'transferrable' },
{ amount: balance(50), name: 'transferable' },
{ amount: balance(150), name: 'reserved' }]);
});
@ -211,7 +211,7 @@ describe.skip('Accounts page', () => {
anAccountWithBalance({ availableBalance: balance(600) })
);
const summary = await screen.findByTestId(/card-summary:(total )?transferrable/i);
const summary = await screen.findByTestId(/card-summary:(total )?transferable/i);
expect(summary).toHaveTextContent(showBalance(400 + 600));
});

View File

@ -140,7 +140,7 @@ function Overview ({ className = '', onStatusChange }: Props): React.ReactElemen
locked: aggregate('locked'),
redeemable: aggregate('redeemable'),
total: aggregate('total'),
transferrable: aggregate('transferrable'),
transferable: aggregate('transferable'),
unbonding: aggregate('unbonding')
}
};

View File

@ -37,7 +37,7 @@ export interface SortedAccount {
export interface AccountBalance {
total: BN;
locked: BN;
transferrable: BN;
transferable: BN;
bonded: BN;
redeemable: BN;
unbonding: BN;

View File

@ -95,10 +95,10 @@ describe.skip('Addresses page', () => {
const rows = await addressesPage.getAddressesRows();
await rows[0].assertBalancesDetails([
{ amount: balance(0), name: 'transferrable' },
{ amount: balance(0), name: 'transferable' },
{ amount: balance(30), name: 'locked' }]);
await rows[1].assertBalancesDetails([
{ amount: balance(50), name: 'transferrable' },
{ amount: balance(50), name: 'transferable' },
{ amount: balance(150), name: 'reserved' }]);
});

View File

@ -8,8 +8,9 @@ import { createNamedHook, useApi, useCall } from '@polkadot/react-hooks';
function useBalanceImpl (accountId: string | null): Balance | undefined {
const { api } = useApi();
const balancesAll = useCall<DeriveBalancesAll>(api.derive.balances?.all, [accountId]);
return useCall<DeriveBalancesAll>(api.derive.balances?.all, [accountId])?.availableBalance;
return balancesAll?.transferable || balancesAll?.availableBalance;
}
export const useBalance = createNamedHook('useBalance', useBalanceImpl);

View File

@ -163,7 +163,7 @@ function Upload ({ onClose }: Props): React.ReactElement {
label={t('deployment account')}
labelExtra={
<Available
label={t('transferrable')}
label={t('transferable')}
params={accountId}
/>
}

View File

@ -175,7 +175,7 @@ function Call ({ className = '', contract, messageIndex, onCallResult, onChangeM
label={t('call from account')}
labelExtra={
<Available
label={t('transferrable')}
label={t('transferable')}
params={accountId}
/>
}

View File

@ -128,7 +128,7 @@ function Deploy ({ codeHash, constructorIndex = 0, onClose, setConstructorIndex
label={t('deployment account')}
labelExtra={
<Available
label={t('transferrable')}
label={t('transferable')}
params={accountId}
/>
}

View File

@ -73,7 +73,7 @@ function PreImage ({ className = '', imageHash, isImminent = false, onClose }: P
label={t('send from account')}
labelExtra={
<Available
label={<span className='label'>{t('transferrable')}</span>}
label={<span className='label'>{t('transferable')}</span>}
params={accountId}
/>
}

View File

@ -82,7 +82,7 @@ function Propose ({ className = '', onClose }: Props): React.ReactElement<Props>
label={t('send from account')}
labelExtra={
<Available
label={<span className='label'>{t('transferrable')}</span>}
label={<span className='label'>{t('transferable')}</span>}
params={accountId}
/>
}

View File

@ -338,7 +338,7 @@ function UploadModal ({ className, file, onClose = NOOP, onSuccess = NOOP }: Pro
label={t('Please choose account')}
labelExtra={
<Available
label={t('transferrable')}
label={t('transferable')}
params={account}
/>
}

View File

@ -61,7 +61,7 @@ function Bid ({ className, isDisabled, proxies }: Props): React.ReactElement<Pro
label={t('use proxied account')}
labelExtra={
<Available
label={<span className='label'>{t('transferrable')}</span>}
label={<span className='label'>{t('transferable')}</span>}
params={accountId}
/>
}

View File

@ -60,7 +60,7 @@ function Bid ({ className, isDisabled, proxies }: Props): React.ReactElement<Pro
label={t('use proxied account')}
labelExtra={
<Available
label={<span className='label'>{t('transferrable')}</span>}
label={<span className='label'>{t('transferable')}</span>}
params={accountId}
/>
}

View File

@ -139,7 +139,7 @@ function Teleport ({ onClose }: Props): React.ReactElement<Props> | null {
label={t('send from account')}
labelExtra={
<Available
label={t('transferrable')}
label={t('transferable')}
params={senderId}
/>
}

View File

@ -40,7 +40,7 @@ function Add ({ className, imageHash }: Props): React.ReactElement<Props> {
label={t('send from account')}
labelExtra={
<Available
label={<span className='label'>{t('transferrable')}</span>}
label={<span className='label'>{t('transferable')}</span>}
params={accountId}
/>
}

View File

@ -41,7 +41,7 @@ function Deposit ({ className = '', id, palletReferenda, track }: Props): React.
label={t('deposit from account')}
labelExtra={
<Available
label={<span className='label'>{t('transferrable')}</span>}
label={<span className='label'>{t('transferable')}</span>}
params={accountId}
/>
}

View File

@ -166,7 +166,7 @@ function Submit ({ className = '', isMember, members, palletReferenda, tracks }:
label={t('propose from account')}
labelExtra={
<Available
label={<span className='label'>{t('transferrable')}</span>}
label={<span className='label'>{t('transferable')}</span>}
params={accountId}
/>
}

View File

@ -15,7 +15,7 @@ function useAmountErrorImpl (accountId?: string | null, amount?: BN | null, minA
return useMemo(
() => !amount || amount.isZero() || !minAmount || minAmount.gt(amount) || (
!!balances &&
amount.gt(balances.availableBalance.sub(api.consts.balances.existentialDeposit))
amount.gt((balances.transferable || balances.availableBalance).sub(api.consts.balances.existentialDeposit))
),
[api, amount, balances, minAmount]
);

View File

@ -252,14 +252,14 @@ function createBalanceItems (formatIndex: number, lookup: Record<string, string>
/>
</React.Fragment>
);
balancesAll && balanceDisplay.available && deriveBalances.availableBalance && allItems.push(
balancesAll && balanceDisplay.available && (deriveBalances.transferable || deriveBalances.availableBalance) && allItems.push(
<React.Fragment key={1}>
<Label label={t('transferrable')} />
<Label label={t('transferable')} />
<FormatBalance
className='result'
formatIndex={formatIndex}
labelPost={<IconVoid />}
value={deriveBalances.availableBalance}
value={deriveBalances.transferable || deriveBalances.availableBalance}
/>
</React.Fragment>
);

View File

@ -73,10 +73,10 @@ function Transfer ({ className = '', onClose, recipientId: propRecipientId, send
if (balances && balances.accountId?.eq(fromId) && fromId && toId && api.call.transactionPaymentApi && api.tx.balances) {
nextTick(async (): Promise<void> => {
try {
const extrinsic = (api.tx.balances.transferAllowDeath || api.tx.balances.transfer)(toId, balances.availableBalance);
const extrinsic = (api.tx.balances.transferAllowDeath || api.tx.balances.transfer)(toId, (balances.transferable || balances.availableBalance));
const { partialFee } = await extrinsic.paymentInfo(fromId);
const adjFee = partialFee.muln(110).div(BN_HUNDRED);
const maxTransfer = balances.availableBalance.sub(adjFee);
const maxTransfer = (balances.transferable || balances.availableBalance).sub(adjFee);
setMaxTransfer(
api.consts.balances && maxTransfer.gt(api.consts.balances.existentialDeposit)
@ -121,7 +121,7 @@ function Transfer ({ className = '', onClose, recipientId: propRecipientId, send
label={t('send from account')}
labelExtra={
<Available
label={t('transferrable')}
label={t('transferable')}
params={propSenderId || senderId}
/>
}
@ -136,7 +136,7 @@ function Transfer ({ className = '', onClose, recipientId: propRecipientId, send
label={t('send to address')}
labelExtra={
<Available
label={t('transferrable')}
label={t('transferable')}
params={propRecipientId || recipientId}
/>
}
@ -155,7 +155,7 @@ function Transfer ({ className = '', onClose, recipientId: propRecipientId, send
defaultValue={maxTransfer}
isDisabled
key={maxTransfer?.toString()}
label={t('transferrable minus fees')}
label={t('transferable minus fees')}
/>
)
: (

View File

@ -25,7 +25,7 @@ function AvailableDisplay ({ children, className = '', label, params }: Props):
<FormatBalance
className={className}
label={label}
value={allBalances?.availableBalance}
value={allBalances?.transferable || allBalances?.availableBalance}
>
{children}
</FormatBalance>

View File

@ -49,7 +49,7 @@ function PaymentInfo ({ accountId, className = '', extrinsic, isHeader }: Props)
}
const isFeeError = api.consts.balances && !(api.tx.balances?.transferAllowDeath?.is(extrinsic) || api.tx.balances?.transfer?.is(extrinsic)) && balances?.accountId.eq(accountId) && (
balances.availableBalance.lte(dispatchInfo.partialFee) ||
(balances.transferable || balances.availableBalance).lte(dispatchInfo.partialFee) ||
balances.freeBalance.sub(dispatchInfo.partialFee).lte(api.consts.balances.existentialDeposit)
);