import { Button, Form, FormButtons, FormField, FormSubmitButton, TextField, Label, Loading, } from '@umami/react-zen'; import { subMonths, endOfDay } from 'date-fns'; import { FieldFilters } from '@/components/input/FieldFilters'; import { useState } from 'react'; import { useApi, useMessages, useModified, useWebsiteSegmentQuery } from '@/components/hooks'; import { filtersArrayToObject } from '@/lib/params'; export function SegmentEditForm({ segmentId, websiteId, filters = [], showFilters = true, onSave, onClose, }: { segmentId?: string; websiteId: string; filters?: any[]; showFilters?: boolean; onSave?: () => void; onClose?: () => void; }) { const { data } = useWebsiteSegmentQuery(websiteId, segmentId); const { formatMessage, labels } = useMessages(); const [currentFilters, setCurrentFilters] = useState(filters); const { touch } = useModified(); const startDate = subMonths(endOfDay(new Date()), 6); const endDate = endOfDay(new Date()); const { post, useMutation } = useApi(); const { mutate, error, isPending } = useMutation({ mutationFn: (data: any) => post(`/websites/${websiteId}/segments${segmentId ? `/${segmentId}` : ''}`, { ...data, type: 'segment', }), }); const handleSubmit = async (data: any) => { mutate( { ...data, parameters: filtersArrayToObject(currentFilters) }, { onSuccess: async () => { touch('segments'); onSave?.(); onClose?.(); }, }, ); }; if (segmentId && !data) { return ; } return (
{showFilters && ( <> )} {formatMessage(labels.save)} ); }