Skip to content

Commit

Permalink
fix(ui): convert current rewardPerPayout to whole units (#178)
Browse files Browse the repository at this point in the history
* fix(ui): default/initial value must be converted to whole units

* feat(ui): show reward token unit name in modal description

* feat(ui): instruct user to enter whole units for reward per payout

* chore(ui): rename variable to differentiate current/new amount
  • Loading branch information
drichar authored May 23, 2024
1 parent 1c5848b commit f5d4340
Show file tree
Hide file tree
Showing 2 changed files with 13 additions and 5 deletions.
1 change: 1 addition & 0 deletions ui/src/components/AddValidatorForm.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -711,6 +711,7 @@ export function AddValidatorForm({ constraints }: AddValidatorFormProps) {
<FormControl>
<Input placeholder="" {...field} />
</FormControl>
<FormDescription>Enter amount in whole units (not base units)</FormDescription>
<FormMessage>{errors.rewardPerPayout?.message}</FormMessage>
</FormItem>
)}
Expand Down
17 changes: 12 additions & 5 deletions ui/src/components/ValidatorDetails/EditRewardPerPayout.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@ import { DialogFooter } from '@/components/ui/dialog'
import {
Form,
FormControl,
FormDescription,
FormField,
FormItem,
FormLabel,
Expand All @@ -21,7 +22,7 @@ import { Input } from '@/components/ui/input'
import { EditValidatorModal } from '@/components/ValidatorDetails/EditValidatorModal'
import { Validator } from '@/interfaces/validator'
import { setValidatorQueriesData } from '@/utils/contracts'
import { convertToBaseUnits } from '@/utils/format'
import { convertFromBaseUnits, convertToBaseUnits } from '@/utils/format'
import { validatorSchemas } from '@/utils/validation'

interface EditRewardPerPayoutProps {
Expand All @@ -47,8 +48,13 @@ export function EditRewardPerPayout({ validator }: EditRewardPerPayoutProps) {
rewardPerPayout,
} = validator.config

const tokenUnitName = validator.rewardToken?.params['unit-name']
const tokenDecimals = validator.rewardToken?.params.decimals

const rewardPerPayoutWholeUnits = convertFromBaseUnits(rewardPerPayout, tokenDecimals)

const defaultValues = {
rewardPerPayout: String(Number(rewardPerPayout) || ''),
rewardPerPayout: String(rewardPerPayoutWholeUnits || ''),
}

const form = useForm<z.infer<typeof formSchema>>({
Expand Down Expand Up @@ -90,7 +96,7 @@ export function EditRewardPerPayout({ validator }: EditRewardPerPayoutProps) {
throw new Error('No reward token found')
}

const rewardPerPayoutBaseUnits = convertToBaseUnits(
const newRewardPerPayoutBaseUnits = convertToBaseUnits(
values.rewardPerPayout,
validator.rewardToken.params.decimals,
)
Expand All @@ -103,7 +109,7 @@ export function EditRewardPerPayout({ validator }: EditRewardPerPayoutProps) {
entryGatingAddress,
entryGatingAssets,
gatingAssetMinBalance,
BigInt(rewardPerPayoutBaseUnits),
BigInt(newRewardPerPayoutBaseUnits),
transactionSigner,
activeAddress,
)
Expand Down Expand Up @@ -131,7 +137,7 @@ export function EditRewardPerPayout({ validator }: EditRewardPerPayoutProps) {
return (
<EditValidatorModal
title="Edit Reward Per Payout"
description={`Set the amount of reward tokens paid out each epoch for Validator ${validator.id}`}
description={`Set the amount of ${tokenUnitName || 'reward tokens'} paid out each epoch for Validator ${validator.id}`}
open={isOpen}
onOpenChange={handleOpenChange}
>
Expand All @@ -147,6 +153,7 @@ export function EditRewardPerPayout({ validator }: EditRewardPerPayoutProps) {
<FormControl>
<Input placeholder="" {...field} />
</FormControl>
<FormDescription>Enter amount in whole units (not base units)</FormDescription>
<FormMessage>{errors.rewardPerPayout?.message}</FormMessage>
</FormItem>
)}
Expand Down

0 comments on commit f5d4340

Please sign in to comment.