import { FormControl } from 'components/FormControl' import { FormGroup } from 'components/FormGroup' import { useInputState, useNumberInputState } from 'components/forms/FormInput.hooks' import { InputDateTime } from 'components/InputDateTime' import React, { useEffect, useState } from 'react' import { Conditional } from '../../Conditional' import { AddressInput, NumberInput } from '../../forms/FormInput' import { JsonPreview } from '../../JsonPreview' import { WhitelistUpload } from '../../WhitelistUpload' interface WhitelistDetailsProps { onChange: (data: WhitelistDetailsDataProps) => void } export interface WhitelistDetailsDataProps { whitelistType: WhitelistState contractAddress?: string members?: string[] unitPrice?: string startTime?: string endTime?: string perAddressLimit?: number memberLimit?: number } type WhitelistState = 'none' | 'existing' | 'new' export const WhitelistDetails = ({ onChange }: WhitelistDetailsProps) => { const [whitelistState, setWhitelistState] = useState('none') const [startDate, setStartDate] = useState(undefined) const [endDate, setEndDate] = useState(undefined) const [whitelistArray, setWhitelistArray] = useState([]) const whitelistAddressState = useInputState({ id: 'whitelist-address', name: 'whitelistAddress', title: 'Whitelist Address', defaultValue: '', }) const unitPriceState = useNumberInputState({ id: 'unit-price', name: 'unitPrice', title: 'Unit Price', subtitle: 'Token price for whitelisted addresses \n (min. 25 STARS)', placeholder: '25', }) const memberLimitState = useNumberInputState({ id: 'member-limit', name: 'memberLimit', title: 'Member Limit', subtitle: 'Maximum number of whitelisted addresses', placeholder: '1000', }) const perAddressLimitState = useNumberInputState({ id: 'per-address-limit', name: 'perAddressLimit', title: 'Per Address Limit', subtitle: 'Maximum number of tokens per whitelisted address', placeholder: '5', }) const whitelistFileOnChange = (data: string[]) => { setWhitelistArray(data) } useEffect(() => { const data: WhitelistDetailsDataProps = { whitelistType: whitelistState, contractAddress: whitelistAddressState.value .toLowerCase() .replace(/,/g, '') .replace(/"/g, '') .replace(/'/g, '') .replace(/ /g, ''), members: whitelistArray, unitPrice: unitPriceState.value ? (Number(unitPriceState.value) * 1_000_000).toString() : '', startTime: startDate ? (startDate.getTime() * 1_000_000).toString() : '', endTime: endDate ? (endDate.getTime() * 1_000_000).toString() : '', perAddressLimit: perAddressLimitState.value, memberLimit: memberLimitState.value, } onChange(data) // eslint-disable-next-line react-hooks/exhaustive-deps }, [ whitelistAddressState.value, unitPriceState.value, memberLimitState.value, perAddressLimitState.value, startDate, endDate, whitelistArray, whitelistState, ]) return (
{ setWhitelistState('none') }} type="radio" value="None" />
{ setWhitelistState('existing') }} type="radio" value="Existing" />
{ setWhitelistState('new') }} type="radio" value="New" />
setStartDate(date)} value={startDate} /> setEndDate(date)} value={endDate} />
0}>
) }