From 70138ff54a5ad402a0a1758d000985ecad7b52ba Mon Sep 17 00:00:00 2001 From: fmtabbara Date: Thu, 6 Jan 2022 13:00:50 +0000 Subject: [PATCH 1/2] update frontend to use new profit update api --- nym-wallet/src/pages/settings/index.tsx | 6 +-- .../src/pages/settings/system-variables.tsx | 41 +++++-------------- .../src/pages/settings/validationSchema.ts | 1 - nym-wallet/src/requests/index.ts | 3 ++ 4 files changed, 15 insertions(+), 36 deletions(-) diff --git a/nym-wallet/src/pages/settings/index.tsx b/nym-wallet/src/pages/settings/index.tsx index fca3b126dc..b25859d88a 100644 --- a/nym-wallet/src/pages/settings/index.tsx +++ b/nym-wallet/src/pages/settings/index.tsx @@ -24,7 +24,7 @@ export const Settings = () => { setMixnodeDetails(details) } if (showSettings) getBondDetails() - }, [showSettings]) + }, [showSettings, selectedTab]) const handleTabChange = (event: React.SyntheticEvent, newTab: number) => setSelectedTab(newTab) @@ -50,9 +50,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..1f131c957e 100644 --- a/nym-wallet/src/pages/settings/system-variables.tsx +++ b/nym-wallet/src/pages/settings/system-variables.tsx @@ -15,23 +15,16 @@ 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 { updateMixnode } from '../../requests' import { ClientContext } 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 { @@ -40,28 +33,21 @@ 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() }, }) 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 +66,6 @@ export const SystemVariables = ({ error={!!errors.profitMarginPercent} disabled={isSubmitting} /> - export const getMixnodeBondDetails = async (): Promise => await invoke('mixnode_bond_details') + +export const updateMixnode = async ({ profitMarginPercent }: { profitMarginPercent: number }) => + await invoke('update_mixnode', { profitMarginPercent }) From db2ce8070c9e834238df4363c9a400b86c4aae51 Mon Sep 17 00:00:00 2001 From: fmtabbara Date: Thu, 6 Jan 2022 16:16:32 +0000 Subject: [PATCH 2/2] display mixnode update fee --- .../src/pages/settings/system-variables.tsx | 18 ++++++++++++++---- nym-wallet/src/requests/index.ts | 2 +- 2 files changed, 15 insertions(+), 5 deletions(-) diff --git a/nym-wallet/src/pages/settings/system-variables.tsx b/nym-wallet/src/pages/settings/system-variables.tsx index 1f131c957e..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, @@ -17,8 +17,8 @@ import { useForm } from 'react-hook-form' import { InfoTooltip } from '../../components/InfoToolTip' import { TMixnodeBondDetails } from '../../types' import { validationSchema } from './validationSchema' -import { updateMixnode } from '../../requests' -import { ClientContext } from '../../context/main' +import { getGasFee, updateMixnode } from '../../requests' +import { ClientContext, MAJOR_CURRENCY } from '../../context/main' type TFormData = { profitMarginPercent: number @@ -26,6 +26,7 @@ type TFormData = { export const SystemVariables = ({ mixnodeDetails }: { mixnodeDetails: TMixnodeBondDetails['mix_node'] }) => { const [nodeUpdateResponse, setNodeUpdateResponse] = useState<'success' | 'failed'>() + const [configFee, setConfigFee] = useState() const { register, @@ -36,6 +37,13 @@ export const SystemVariables = ({ mixnodeDetails }: { mixnodeDetails: TMixnodeBo 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) => { @@ -107,7 +115,9 @@ export const SystemVariables = ({ mixnodeDetails }: { mixnodeDetails: TMixnodeBo ) : nodeUpdateResponse === 'failed' ? ( Node updated failed ) : ( - + + Fee for this transaction: {`${configFee} ${MAJOR_CURRENCY}`}{' '} + )}