diff --git a/nym-wallet/src/pages/settings/index.tsx b/nym-wallet/src/pages/settings/index.tsx index ea00fe30c5..d3a59a3e29 100644 --- a/nym-wallet/src/pages/settings/index.tsx +++ b/nym-wallet/src/pages/settings/index.tsx @@ -44,9 +44,7 @@ export const Settings = () => { )} {selectedTab === 0 && mixnodeDetails && } - {selectedTab === 1 && mixnodeDetails && ( - - )} + {selectedTab === 1 && mixnodeDetails && } {selectedTab === 2 && mixnodeDetails && } diff --git a/nym-wallet/src/pages/settings/system-variables.tsx b/nym-wallet/src/pages/settings/system-variables.tsx index befdbd72bc..0ad6b50e25 100644 --- a/nym-wallet/src/pages/settings/system-variables.tsx +++ b/nym-wallet/src/pages/settings/system-variables.tsx @@ -1,4 +1,4 @@ -import React, { useContext, useState } from 'react' +import React, { useContext, useEffect, useState } from 'react' import { Box, Button, @@ -15,24 +15,18 @@ import { AccessTimeOutlined, PercentOutlined } from '@mui/icons-material' import { yupResolver } from '@hookform/resolvers/yup' import { useForm } from 'react-hook-form' import { InfoTooltip } from '../../components/InfoToolTip' -import { EnumNodeType, TMixnodeBondDetails } from '../../types' +import { TMixnodeBondDetails } from '../../types' import { validationSchema } from './validationSchema' -import { bond, unbond } from '../../requests' -import { ClientContext } from '../../context/main' +import { getGasFee, updateMixnode } from '../../requests' +import { ClientContext, MAJOR_CURRENCY } from '../../context/main' type TFormData = { profitMarginPercent: number - signature: string } -export const SystemVariables = ({ - mixnodeDetails, - pledge, -}: { - mixnodeDetails: TMixnodeBondDetails['mix_node'] - pledge: TMixnodeBondDetails['pledge_amount'] -}) => { +export const SystemVariables = ({ mixnodeDetails }: { mixnodeDetails: TMixnodeBondDetails['mix_node'] }) => { const [nodeUpdateResponse, setNodeUpdateResponse] = useState<'success' | 'failed'>() + const [configFee, setConfigFee] = useState() const { register, @@ -40,28 +34,28 @@ export const SystemVariables = ({ formState: { errors, isSubmitting }, } = useForm({ resolver: yupResolver(validationSchema), - defaultValues: { profitMarginPercent: mixnodeDetails.profit_margin_percent.toString(), signature: '' }, + defaultValues: { profitMarginPercent: mixnodeDetails.profit_margin_percent.toString() }, }) + useEffect(() => { + ;(async () => { + const fee = await getGasFee('UpdateMixnodeConfig') + setConfigFee(fee.amount) + })() + }, []) + const { userBalance } = useContext(ClientContext) const onSubmit = async (data: TFormData) => { - await unbond(EnumNodeType.mixnode) - await bond({ - type: EnumNodeType.mixnode, - data: { ...mixnodeDetails, profit_margin_percent: data.profitMarginPercent }, - pledge: { denom: 'Minor', amount: pledge.amount }, - //hardcoded for the moment as required in bonding but not necessary - ownerSignature: data.signature, - }) - .then(() => { + try { + await updateMixnode({ profitMarginPercent: data.profitMarginPercent }).then(() => { userBalance.fetchBalance() setNodeUpdateResponse('success') }) - .catch((e) => { - setNodeUpdateResponse('failed') - console.log(e) - }) + } catch (e) { + setNodeUpdateResponse('failed') + console.log(e) + } } return ( @@ -80,13 +74,6 @@ export const SystemVariables = ({ error={!!errors.profitMarginPercent} disabled={isSubmitting} /> - Node updated failed ) : ( - + + Fee for this transaction: {`${configFee} ${MAJOR_CURRENCY}`}{' '} + )}