"use client" import { useState } from "react" import { EMPTY_SEARCH_PARAMS, type SearchParams, } from "@/lib/mail-search/search-params" export function useAdvancedSearchForm( initialQuery: string, currentParams: SearchParams | null ) { const [from, setFrom] = useState(currentParams?.from ?? "") const [to, setTo] = useState(currentParams?.to ?? "") const [subject, setSubject] = useState(currentParams?.subject ?? "") const [hasWords, setHasWords] = useState( currentParams?.hasWords || currentParams?.q || initialQuery ) const [doesNotHave, setDoesNotHave] = useState(currentParams?.doesNotHave ?? "") const [sizeVal, setSizeVal] = useState(currentParams?.size ?? "") const [sizeOp, setSizeOp] = useState<"gt" | "lt">(currentParams?.sizeOp ?? "gt") const [sizeUnit, setSizeUnit] = useState<"Mo" | "Ko">(currentParams?.sizeUnit ?? "Mo") const [within, setWithin] = useState(currentParams?.within ?? "") const [dateAfter, setDateAfter] = useState(currentParams?.after ?? "") const [searchIn, setSearchIn] = useState(currentParams?.in ?? "all") const [hasAttachment, setHasAttachment] = useState( currentParams?.has?.includes("attachment") ?? false ) const [excludeChats, setExcludeChats] = useState(currentParams?.excludeChats ?? false) const buildParams = (): Partial => ({ ...EMPTY_SEARCH_PARAMS, q: "", from, to, subject, hasWords, doesNotHave, size: sizeVal, sizeOp, sizeUnit, within, after: dateAfter, in: searchIn, has: hasAttachment ? ["attachment"] : [], excludeChats, }) return { from, setFrom, to, setTo, subject, setSubject, hasWords, setHasWords, doesNotHave, setDoesNotHave, sizeVal, setSizeVal, sizeOp, setSizeOp, sizeUnit, setSizeUnit, within, setWithin, dateAfter, setDateAfter, searchIn, setSearchIn, hasAttachment, setHasAttachment, excludeChats, setExcludeChats, buildParams, } }