diff --git a/src/containers/Faucet/components/Activity/index.tsx b/src/containers/Faucet/components/Activity/index.tsx
index 8160072..00da00d 100644
--- a/src/containers/Faucet/components/Activity/index.tsx
+++ b/src/containers/Faucet/components/Activity/index.tsx
@@ -31,7 +31,7 @@ const Activity = () => {
),
timestamp: (
- {moment(item.timestamp).parseZone().fromNow(true)}
+ {moment(new Date(item.timestamp.parseZone().fromNow(true)))}
)
}))
diff --git a/src/containers/Proposals/components/ProposalModal/ProposalTypes/ParameterChange.tsx b/src/containers/Proposals/components/ProposalModal/ProposalTypes/ParameterChange.tsx
index f2d3663..6f8c2b1 100644
--- a/src/containers/Proposals/components/ProposalModal/ProposalTypes/ParameterChange.tsx
+++ b/src/containers/Proposals/components/ProposalModal/ProposalTypes/ParameterChange.tsx
@@ -98,7 +98,6 @@ const ParameterChange = () => {
setEvent(e)}
disableUnderline
diff --git a/src/containers/Proposals/components/ProposalModal/Proposals.tsx b/src/containers/Proposals/components/ProposalModal/Proposals.tsx
index 6454b42..f80b35f 100644
--- a/src/containers/Proposals/components/ProposalModal/Proposals.tsx
+++ b/src/containers/Proposals/components/ProposalModal/Proposals.tsx
@@ -9,6 +9,7 @@ import _ from 'lodash'
import BigNumber from 'bignumber.js'
import { useNotifications } from 'components/NotificationPopup/hooks'
import {
+ FailureMessage,
initialProposalModalState,
ModalStatus,
ProposalModalProps,
@@ -65,6 +66,17 @@ const Proposals: React.FC = ({ handleModal, modalProps }) => {
})
}
+ const handleError = (error: string) => {
+ if (
+ error.includes(
+ FailureMessage.CREATING_PROPOSAL_FAILED_TO_UNMARSHAL_NUMBER
+ )
+ ) {
+ return FailureMessage.CREATING_PROPOSAL_FAILED_TO_UNMARSHAL_END_USER
+ }
+ return FailureMessage.DEFAULT_PROPOSAL_FAILED
+ }
+
const handleProposalSubmit = async (proposerAddress: string) => {
try {
handleModal({
@@ -87,10 +99,13 @@ const Proposals: React.FC = ({ handleModal, modalProps }) => {
hash: result.transactionHash
})
} catch (error) {
- setError(error.message)
handleModal({
open: true,
- status: ModalStatus.FAILURE
+ status: ModalStatus.FAILURE,
+ failureMessage: {
+ title: 'Creating Proposal Failed.',
+ subtitle: handleError(error.message)
+ }
})
}
}
diff --git a/src/containers/ValidatorDetails/components/Details/components/ValidatorInfo/components/RedelegationModal/Redelegation.tsx b/src/containers/ValidatorDetails/components/Details/components/ValidatorInfo/components/RedelegationModal/Redelegation.tsx
index 58e8227..7f9ce14 100644
--- a/src/containers/ValidatorDetails/components/Details/components/ValidatorInfo/components/RedelegationModal/Redelegation.tsx
+++ b/src/containers/ValidatorDetails/components/Details/components/ValidatorInfo/components/RedelegationModal/Redelegation.tsx
@@ -9,7 +9,8 @@ import { coin, GasPrice } from 'cudosjs'
import {
ModalStatus,
RedelegationModalProps,
- initialRedelegationModalState
+ initialRedelegationModalState,
+ FailureMessage
} from 'store/modal'
import { calculateFee, redelegate } from 'ledgers/transactions'
import getMiddleEllipsis from 'utils/get_middle_ellipsis'
@@ -47,7 +48,6 @@ const Redelegation: React.FC = ({
handleModal
}) => {
const [delegated, setDelegated] = useState('')
- const [redelegationAddress, setRedelegationAddress] = useState('')
const [redelegationAmount, setRedelegationAmount] = useState('')
const { validator, amount, fee } = modalProps
const dispatch = useDispatch()
@@ -56,8 +56,14 @@ const Redelegation: React.FC = ({
({ profile }: RootState) => profile
)
const validators = useSelector(({ validator }: RootState) => validator.items)
- const data = validators.map((item) => ({
- value: item.validator,
+
+ const filteredValidators = validators.filter(
+ (item) => item.validator !== validator?.address
+ )
+
+ const data = filteredValidators.map((item, idx) => ({
+ value: (idx + 1).toString(),
+ address: item.validator,
label: (
= ({
)
}))
- const handleDropdown = (validatorAddress: string) => {
- setRedelegationAddress(validatorAddress)
+ const [redelegationAddress, setRedelegationAddress] = useState(
+ data[0].address
+ )
+
+ const handleDropdown = (validatorIndex: string) => {
+ const validatorAddress = data.filter(
+ (item, idx) => idx + 1 === Number(validatorIndex)
+ )
+
+ setRedelegationAddress(validatorAddress[0].address)
}
useEffect(() => {
@@ -191,6 +205,17 @@ const Redelegation: React.FC = ({
setRedelegationAmount(delegated)
}
+ const handleError = (error: string) => {
+ switch (error) {
+ case FailureMessage.REJECTED_BY_USER:
+ return FailureMessage.REJECTED_BY_USER_END_USER
+ case FailureMessage.REDELEGATION_IN_PROGRESS:
+ return FailureMessage.REDELEGATION_IN_PROGRESS_END_USER
+ default:
+ return FailureMessage.DEFAULT_TRANSACTION_FAILED
+ }
+ }
+
const handleSubmit = async (): Promise => {
handleModal({ status: ModalStatus.LOADING })
@@ -221,10 +246,7 @@ const Redelegation: React.FC = ({
status: ModalStatus.FAILURE,
failureMessage: {
title: 'Redelegation Failed!',
- subtitle:
- e.message === 'Request rejected'
- ? 'Request rejected by the user'
- : 'Seems like something went wrong with executing the transaction. Try again or check your wallet balance.'
+ subtitle: handleError(e.message)
}
})
}
diff --git a/src/store/modal.ts b/src/store/modal.ts
index e4cb51e..487a772 100644
--- a/src/store/modal.ts
+++ b/src/store/modal.ts
@@ -17,6 +17,19 @@ export type Modal = {
}
}
+export enum FailureMessage {
+ REJECTED_BY_USER = 'Request rejected',
+ REJECTED_BY_USER_END_USER = 'Request rejected by the user',
+ REDELEGATION_IN_PROGRESS = 'Query failed with (18): failed to execute message; message index: 0: redelegation to this validator already in progress; first redelegation to this validator must complete before next redelegation: invalid request',
+ REDELEGATION_IN_PROGRESS_END_USER = 'Redelegation to this validator already in progress. First redelegation to this validator must complete before next redelegation.',
+ CREATING_PROPOSAL_FAILED_TO_UNMARSHAL_NUMBER = 'err: json: cannot unmarshal number into Go value of type string: failed to set parameter: invalid proposal content: invalid request',
+ CREATING_PROPOSAL_FAILED_TO_UNMARSHAL_END_USER = 'Failed to parse field "Change Value", please wrap the input in " " and try again.',
+ DEFAULT_PROPOSAL_FAILED = 'Seems like something went wrong with creating the proposal. Try again or check your wallet balance.',
+ DEFAULT_TRANSACTION_FAILED = 'Seems like something went wrong with executing the transaction. Try again or check your wallet balance.',
+ DEFAULT_VOTING_PROPOSAL_FAILED = 'Seems like something went wrong with voting for the proposal. Try again or check your wallet balance.',
+ DEFAULT_DEPOSITING_PROPOSAL_FAILED = 'Seems like something went wrong with depositing for the proposal. Try again or check your wallet balance.'
+}
+
// ========================
// REWARDS MODAL
// ========================
@@ -45,8 +58,7 @@ export const initialRewardsModalProps: RewardsModalProps = {
txRestakeHash: '',
failureMessage: {
title: 'Claiming Rewards Failed',
- subtitle:
- 'Seems like something went wrong with executing the transaction. Try again or check your wallet balance.'
+ subtitle: FailureMessage.DEFAULT_TRANSACTION_FAILED
}
}
@@ -76,8 +88,7 @@ export const initialDelegationModalState: DelegationModalProps = {
txHash: '',
failureMessage: {
title: 'Delegation Failed',
- subtitle:
- 'Seems like something went wrong with executing the transaction. Try again or check your wallet balance.'
+ subtitle: FailureMessage.DEFAULT_TRANSACTION_FAILED
}
}
@@ -123,8 +134,7 @@ export const initialVotingModalState: VotingModalProps = {
hash: '',
failureMessage: {
title: 'Voting for Proposal Failed!',
- subtitle: `Seems like something went wrong with voting for the proposal. Try
- again or check your wallet balance.`
+ subtitle: FailureMessage.DEFAULT_VOTING_PROPOSAL_FAILED
}
}
@@ -192,8 +202,7 @@ export const initialProposalModalState: ProposalModalProps = {
},
failureMessage: {
title: 'Creating Proposal Failed!',
- subtitle: `Seems like something went wrong with creating the proposal. Try again
- or check your wallet balance.`
+ subtitle: FailureMessage.DEFAULT_PROPOSAL_FAILED
}
}
@@ -230,9 +239,8 @@ export const initialDepositModalState: DepositModalProps = {
fee: new BigNumber(0),
hash: '',
failureMessage: {
- title: 'Voting for Proposal Failed!',
- subtitle: `Seems like something went wrong with depositing for the proposal. Try again
- or check your wallet balance.`
+ title: 'Depositing for Proposal Failed!',
+ subtitle: FailureMessage.DEFAULT_DEPOSITING_PROPOSAL_FAILED
}
}
@@ -249,8 +257,7 @@ export const initialFaucetModalProps: FaucetModalProps = {
status: null,
failureMessage: {
title: 'Transaction failed!',
- subtitle:
- 'Seems like something went wrong with executing the transaction. Please try again.'
+ subtitle: FailureMessage.DEFAULT_TRANSACTION_FAILED
}
}