import { Button } from '@/components/ui/button' import { Input } from '@/components/ui/input' import { Label } from '@/components/ui/label' import { Switch } from '@/components/ui/switch' import { normalizeUrl } from '@/lib/url' import { TPollCreateData } from '@/types' import dayjs from 'dayjs' import { Eraser, X } from 'lucide-react' import { Dispatch, SetStateAction, useEffect, useState } from 'react' import { useTranslation } from 'react-i18next' import AlertCard from '../AlertCard' export default function PollEditor({ pollCreateData, setPollCreateData, setIsPoll }: { pollCreateData: TPollCreateData setPollCreateData: Dispatch> setIsPoll: Dispatch> }) { const { t } = useTranslation() const [isMultipleChoice, setIsMultipleChoice] = useState(pollCreateData.isMultipleChoice) const [options, setOptions] = useState(pollCreateData.options) const [endsAt, setEndsAt] = useState( pollCreateData.endsAt ? dayjs(pollCreateData.endsAt * 1000).format('YYYY-MM-DDTHH:mm') : '' ) const [relayUrls, setRelayUrls] = useState(pollCreateData.relays.join(', ')) useEffect(() => { setPollCreateData({ isMultipleChoice, options, endsAt: endsAt ? dayjs(endsAt).startOf('minute').unix() : undefined, relays: relayUrls ? relayUrls .split(',') .map((url) => normalizeUrl(url.trim())) .filter(Boolean) : [] }) }, [isMultipleChoice, options, endsAt, relayUrls]) const handleAddOption = () => { setOptions([...options, '']) } const handleRemoveOption = (index: number) => { if (options.length > 2) { setOptions(options.filter((_, i) => i !== index)) } } const handleOptionChange = (index: number, value: string) => { const newOptions = [...options] newOptions[index] = value setOptions(newOptions) } return (
{options.map((option, index) => (
handleOptionChange(index, e.target.value)} placeholder={t('Option {{number}}', { number: index + 1 })} />
))}
setEndsAt(e.target.value)} />
setRelayUrls(e.target.value)} placeholder="wss://relay1.com, wss://relay2.com" />
) }