import { FormControl } from 'components/FormControl' import { FormGroup } from 'components/FormGroup' import { useNumberInputState } from 'components/forms/FormInput.hooks' import { InputDateTime } from 'components/InputDateTime' import React, { useEffect, useState } from 'react' import { Conditional } from '../../Conditional' import { NumberInput } from '../../forms/FormInput' import { JsonPreview } from '../../JsonPreview' import { WhitelistUpload } from '../../WhitelistUpload' interface WhitelistDetailsProps { onChange: (data: WhitelistDetailsDataProps) => void } export interface WhitelistDetailsDataProps { isContractAddress: boolean contractAddress?: string members?: string[] unitPrice?: string startTime?: string endTime?: string perAddressLimit?: number memberLimit?: number } export const WhitelistDetails = ({ onChange }: WhitelistDetailsProps) => { const [startDate, setStartDate] = useState(undefined) const [endDate, setEndDate] = useState(undefined) const [whitelistArray, setWhitelistArray] = useState([]) const uniPriceState = useNumberInputState({ id: 'unit-price', name: 'unitPrice', title: 'Unit Price', subtitle: 'Price of each tokens in collection', placeholder: '500', }) const memberLimitState = useNumberInputState({ id: 'member-limit', name: 'memberLimit', title: 'Member Limit', subtitle: 'Limit of the whitelisted members', placeholder: '1000', }) const perAddressLimitState = useNumberInputState({ id: 'per-address-limit', name: 'perAddressLimit', title: 'Per Address Limit', subtitle: 'Limit of tokens per address', placeholder: '5', }) const whitelistFileOnChange = (data: string[]) => { setWhitelistArray(data) } useEffect(() => { const data: WhitelistDetailsDataProps = { isContractAddress: false, contractAddress: '', members: whitelistArray, unitPrice: uniPriceState.value ? (Number(uniPriceState.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 }, [uniPriceState.value, memberLimitState.value, perAddressLimitState.value, startDate, endDate, whitelistArray]) return (
setStartDate(date)} value={startDate} /> setEndDate(date)} value={endDate} /> 0}>
) }