From d296100ffa9c4e0a172a35f257c925131372fef8 Mon Sep 17 00:00:00 2001 From: fmtabbara Date: Fri, 4 Mar 2022 13:34:15 +0000 Subject: [PATCH] allow percent profit update on locked tokens mixnode --- .../src/pages/settings/system-variables.tsx | 46 +++++++++---------- .../src/pages/settings/useSettingsState.ts | 10 ++-- 2 files changed, 29 insertions(+), 27 deletions(-) diff --git a/nym-wallet/src/pages/settings/system-variables.tsx b/nym-wallet/src/pages/settings/system-variables.tsx index 9f819499df..85bfa71381 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, CircularProgress, Grid, LinearProgress, Stack, TextField, Typography } from '@mui/material' import { PercentOutlined } from '@mui/icons-material' import { yupResolver } from '@hookform/resolvers/yup' @@ -6,28 +6,23 @@ import { useForm } from 'react-hook-form' import { InfoTooltip } from '../../components/InfoToolTip' import { InclusionProbabilityResponse, TMixnodeBondDetails } from '../../types' import { validationSchema } from './validationSchema' -import { updateMixnode } from '../../requests' +import { updateMixnode, vestingUpdateMixnode } from '../../requests' +import { useCheckOwnership } from '../../hooks/useCheckOwnership' import { ClientContext } from '../../context/main' import { Fee } from '../../components' -type TFormData = { - profitMarginPercent: number -} - export const SystemVariables = ({ - mixnodeDetails, saturation, rewardEstimation, inclusionProbability, - onUpdate, }: { - mixnodeDetails: TMixnodeBondDetails['mix_node'] saturation: number rewardEstimation: number inclusionProbability: InclusionProbabilityResponse - onUpdate: () => void }) => { const [nodeUpdateResponse, setNodeUpdateResponse] = useState<'success' | 'failed'>() + const { currency, mixnodeDetails, getBondDetails } = useContext(ClientContext) + const { ownership } = useCheckOwnership() const { register, @@ -35,23 +30,26 @@ export const SystemVariables = ({ formState: { errors, isSubmitting }, } = useForm({ resolver: yupResolver(validationSchema), - defaultValues: { profitMarginPercent: mixnodeDetails.profit_margin_percent.toString() }, + defaultValues: { profitMarginPercent: mixnodeDetails?.mix_node.profit_margin_percent }, }) - const { userBalance, currency } = useContext(ClientContext) - - const onSubmit = async (data: TFormData) => { - try { - await updateMixnode({ profitMarginPercent: data.profitMarginPercent }) - await userBalance.fetchBalance() - onUpdate() - setNodeUpdateResponse('success') - } catch (e) { - setNodeUpdateResponse('failed') - console.log(e) + const onSubmit = async ( + profitMarginPercent: number | undefined, + cb: (profitMarginPercent: number) => Promise, + ) => { + if (profitMarginPercent) { + try { + await cb(profitMarginPercent) + setNodeUpdateResponse('success') + } catch (e) { + setNodeUpdateResponse('failed') + console.log(e) + } } } + if (!mixnodeDetails) return null + return ( <> @@ -115,7 +113,9 @@ export const SystemVariables = ({