From b21a674492c5618a3ef808dde28b60ead49aff35 Mon Sep 17 00:00:00 2001 From: Karim Dalaize Date: Tue, 21 Nov 2023 16:49:29 +0100 Subject: [PATCH] =?UTF-8?q?[Added]=C2=A0Error=20check=20to=20ignore=20tend?= =?UTF-8?q?ermint=20false=20error?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../components/DepositSteps/DepositSteps.tsx | 6 ++-- .../components/Modals/Claim/Claim.tsx | 4 +-- src/redux/models/wallet.ts | 36 ++++++++++++------- src/utils/lumClient.ts | 12 +++---- 4 files changed, 34 insertions(+), 24 deletions(-) diff --git a/src/pages/Deposit/components/DepositSteps/DepositSteps.tsx b/src/pages/Deposit/components/DepositSteps/DepositSteps.tsx index 677c041..6a1fac3 100644 --- a/src/pages/Deposit/components/DepositSteps/DepositSteps.tsx +++ b/src/pages/Deposit/components/DepositSteps/DepositSteps.tsx @@ -1,6 +1,6 @@ import React, { useEffect, useState } from 'react'; import { FormikProps } from 'formik'; -import { LumConstants, LumTypes, LumUtils } from '@lum-network/sdk-javascript'; +import { LumConstants, LumTypes } from '@lum-network/sdk-javascript'; import { DepositState } from '@lum-network/sdk-javascript/build/codec/lum/network/millions/deposit'; import numeral from 'numeral'; import { useNavigate, useParams } from 'react-router-dom'; @@ -41,7 +41,7 @@ interface Props { }; onNextStep: () => void; onPrevStep: (prevAmount: string, nextAmount: string) => void; - onDeposit: (poolToDeposit: PoolModel, depositAmount: string) => Promise<{ hash: Uint8Array; error: string | null | undefined } | null>; + onDeposit: (poolToDeposit: PoolModel, depositAmount: string) => Promise<{ hash: string; error: string | null | undefined } | null>; onFinishDeposit: (callback: () => void) => void; onTwitterShare: () => void; lumWallet: LumWalletModel | null; @@ -497,7 +497,7 @@ const DepositSteps = (props: Props) => { if (res && !res.error) { onFinishDeposit(onNextStep); setTxInfos({ - hash: LumUtils.toHex(res.hash).toUpperCase(), + hash: res.hash.toUpperCase(), amount: numeral(depositAmount).format('0,0[.]00'), denom: DenomsUtils.getNormalDenom(poolToDeposit.nativeDenom).toUpperCase(), tvl: numeral(NumbersUtils.convertUnitNumber(poolToDeposit.tvlAmount) + Number(depositAmount)).format('0,0'), diff --git a/src/pages/MySavings/components/Modals/Claim/Claim.tsx b/src/pages/MySavings/components/Modals/Claim/Claim.tsx index 0e48c36..be7e568 100644 --- a/src/pages/MySavings/components/Modals/Claim/Claim.tsx +++ b/src/pages/MySavings/components/Modals/Claim/Claim.tsx @@ -1,5 +1,5 @@ import React, { useEffect, useRef, useState } from 'react'; -import { LumTypes, LumUtils } from '@lum-network/sdk-javascript'; +import { LumTypes } from '@lum-network/sdk-javascript'; import { DepositState } from '@lum-network/sdk-javascript/build/codec/lum/network/millions/deposit'; import dayjs from 'dayjs'; import numeral from 'numeral'; @@ -189,7 +189,7 @@ const Claim = ({ prizes, prices, pools }: Props) => { setClaimOnly(false); setCurrentStep(2); setShareInfos({ - hash: LumUtils.toHex(res.hash).toUpperCase(), + hash: res.hash.toUpperCase(), amount, tvl: numeral(NumbersUtils.convertUnitNumber(pool?.tvlAmount || '')).format('0,0'), compounded: compound, diff --git a/src/redux/models/wallet.ts b/src/redux/models/wallet.ts index b71fa54..c66f2fd 100644 --- a/src/redux/models/wallet.ts +++ b/src/redux/models/wallet.ts @@ -80,6 +80,16 @@ interface WalletState { prizesMutex: boolean; } +//FIXME: When tendermint invalid string on cosmjs has been fixed +const txHasError = ( + result: { + hash: string; + error: string | null | undefined; + } | null, +) => { + return !!(!result || (result && result.error && !result.error.includes('Invalid string'))); +}; + export const wallet = createModel()({ name: 'wallet', state: { @@ -603,7 +613,7 @@ export const wallet = createModel()({ client.disconnect(); - if (!result || (result && result.error)) { + if (txHasError(result)) { throw new Error(result?.error || I18n.t('errors.ibcTransfer')); } @@ -640,7 +650,7 @@ export const wallet = createModel()({ return null; } }, - async depositToPool(payload: DepositToPoolPayload, state): Promise<{ hash: Uint8Array; error: string | null | undefined } | null> { + async depositToPool(payload: DepositToPoolPayload, state): Promise<{ hash: string; error: string | null | undefined } | null> { const { lumWallet } = state.wallet; const toastId = ToastUtils.showLoadingToast({ content: I18n.t('pending.deposit', { denom: DenomsUtils.getNormalDenom(payload.pool.nativeDenom).toUpperCase() }) }); @@ -652,7 +662,7 @@ export const wallet = createModel()({ const result = await LumClient.depositToPool(lumWallet.innerWallet, payload.pool, payload.amount); - if (!result || (result && result.error)) { + if (txHasError(result)) { throw new Error(result?.error || undefined); } @@ -669,7 +679,7 @@ export const wallet = createModel()({ return null; } }, - async retryDeposit(payload: RetryDepositPayload, state): Promise<{ hash: Uint8Array; error: string | null | undefined } | null> { + async retryDeposit(payload: RetryDepositPayload, state): Promise<{ hash: string; error: string | null | undefined } | null> { const { lumWallet } = state.wallet; const toastId = ToastUtils.showLoadingToast({ content: `Retrying deposit #${payload.depositId.toNumber()} to pool #${payload.poolId.toNumber()}` }); @@ -681,7 +691,7 @@ export const wallet = createModel()({ const result = await LumClient.depositRetry(lumWallet.innerWallet, payload.poolId, payload.depositId); - if (!result || (result && result.error)) { + if (txHasError(result)) { throw new Error(result?.error || `Failed to retry deposit #${payload.depositId.toNumber()}`); } @@ -696,7 +706,7 @@ export const wallet = createModel()({ return null; } }, - async leavePool(payload: LeavePoolPayload, state): Promise<{ hash: Uint8Array; error: string | null | undefined } | null> { + async leavePool(payload: LeavePoolPayload, state): Promise<{ hash: string; error: string | null | undefined } | null> { const { lumWallet } = state.wallet; const toastId = ToastUtils.showLoadingToast({ content: I18n.t('pending.leavePool', { denom: payload.denom.toUpperCase(), poolId: payload.poolId.toString() }) }); @@ -708,7 +718,7 @@ export const wallet = createModel()({ const result = await LumClient.leavePool(lumWallet.innerWallet, payload.poolId, payload.depositId); - if (!result || (result && result.error)) { + if (txHasError(result)) { throw new Error(result?.error || undefined); } @@ -731,7 +741,7 @@ export const wallet = createModel()({ return null; } }, - async leavePoolRetry(payload: LeavePoolRetryPayload, state): Promise<{ hash: Uint8Array; error: string | null | undefined } | null> { + async leavePoolRetry(payload: LeavePoolRetryPayload, state): Promise<{ hash: string; error: string | null | undefined } | null> { const { lumWallet } = state.wallet; const toastId = ToastUtils.showLoadingToast({ content: I18n.t('pending.withdrawalRetry', { withdrawalId: payload.withdrawalId.toString(), poolId: payload.poolId.toString() }) }); @@ -743,7 +753,7 @@ export const wallet = createModel()({ const result = await LumClient.leavePoolRetry(lumWallet.innerWallet, payload.poolId, payload.withdrawalId); - if (!result || (result && result.error)) { + if (txHasError(result)) { throw new Error(result?.error || undefined); } @@ -766,7 +776,7 @@ export const wallet = createModel()({ return null; } }, - async claimPrizes(payload: ClaimPrizesPayload, state): Promise<{ hash: Uint8Array; error: string | null | undefined } | null> { + async claimPrizes(payload: ClaimPrizesPayload, state): Promise<{ hash: string; error: string | null | undefined } | null> { const { lumWallet } = state.wallet; const { prizes, batch, batchTotal, onBatchComplete } = payload; @@ -799,7 +809,7 @@ export const wallet = createModel()({ result = await LumClient.claimPrizes(lumWallet.innerWallet, toClaim); - if (!result || (result && result.error)) { + if (txHasError(result)) { throw new Error(result?.error || undefined); } else { const newPrizes = prizesToClaim.slice(toClaim.length); @@ -823,7 +833,7 @@ export const wallet = createModel()({ return null; } }, - async claimAndCompoundPrizes(payload: ClaimPrizesPayload, state): Promise<{ hash: Uint8Array; error: string | null | undefined } | null> { + async claimAndCompoundPrizes(payload: ClaimPrizesPayload, state): Promise<{ hash: string; error: string | null | undefined } | null> { const { prizes } = payload; const claimRes = await dispatch.wallet.claimPrizes(payload); @@ -865,7 +875,7 @@ export const wallet = createModel()({ const result = await LumClient.multiDeposit(lumWallet.innerWallet, toDeposit); - if (!result || (result && result.error)) { + if (txHasError(result)) { throw new Error(result?.error || undefined); } diff --git a/src/utils/lumClient.ts b/src/utils/lumClient.ts index d754d02..2a50545 100644 --- a/src/utils/lumClient.ts +++ b/src/utils/lumClient.ts @@ -312,7 +312,7 @@ class LumClient { const broadcasted = LumUtils.broadcastTxCommitSuccess(broadcastResult); return { - hash: broadcastResult.hash, + hash: LumUtils.toHex(broadcastResult.hash), error: !broadcasted ? (broadcastResult.deliverTx && broadcastResult.deliverTx.log ? broadcastResult.deliverTx.log : broadcastResult.checkTx.log) : null, }; }; @@ -342,7 +342,7 @@ class LumClient { const broadcasted = LumUtils.broadcastTxCommitSuccess(broadcastResult); return { - hash: broadcastResult.hash, + hash: LumUtils.toHex(broadcastResult.hash), error: !broadcasted ? (broadcastResult.deliverTx && broadcastResult.deliverTx.log ? broadcastResult.deliverTx.log : broadcastResult.checkTx.log) : null, }; }; @@ -381,7 +381,7 @@ class LumClient { const broadcasted = LumUtils.broadcastTxCommitSuccess(broadcastResult); return { - hash: broadcastResult.hash, + hash: LumUtils.toHex(broadcastResult.hash), error: !broadcasted ? (broadcastResult.deliverTx && broadcastResult.deliverTx.log ? broadcastResult.deliverTx.log : broadcastResult.checkTx.log) : null, }; }; @@ -411,7 +411,7 @@ class LumClient { const broadcasted = LumUtils.broadcastTxCommitSuccess(broadcastResult); return { - hash: broadcastResult.hash, + hash: LumUtils.toHex(broadcastResult.hash), error: !broadcasted ? (broadcastResult.deliverTx && broadcastResult.deliverTx.log ? broadcastResult.deliverTx.log : broadcastResult.checkTx.log) : null, }; }; @@ -441,7 +441,7 @@ class LumClient { const broadcasted = LumUtils.broadcastTxCommitSuccess(broadcastResult); return { - hash: broadcastResult.hash, + hash: LumUtils.toHex(broadcastResult.hash), error: !broadcasted ? (broadcastResult.deliverTx && broadcastResult.deliverTx.log ? broadcastResult.deliverTx.log : broadcastResult.checkTx.log) : null, }; }; @@ -475,7 +475,7 @@ class LumClient { const broadcasted = LumUtils.broadcastTxCommitSuccess(broadcastResult); return { - hash: broadcastResult.hash, + hash: LumUtils.toHex(broadcastResult.hash), error: !broadcasted ? (broadcastResult.deliverTx && broadcastResult.deliverTx.log ? broadcastResult.deliverTx.log : broadcastResult.checkTx.log) : null, }; };