'use client'; import { useState, useEffect } from "react"; import { Tabs, TabsContent, TabsList, TabsTrigger } from "@/components/ui/tabs"; import { FormValues, createForm } from "./schema"; import { FormUpdateNewLivingSpace } from "./form"; import { useUpdateLivingSpaceMutation } from "./queries"; import { Button } from "@/components/ui/button"; import { IconArrowLeftToArc } from "@tabler/icons-react"; import { useRouter } from "next/navigation"; import { useGraphQlLivingSpaceList } from "../list/queries"; import { useSearchParams } from "next/navigation"; import PageLivingSpaceBuildsTableSection from "../tables/builds/page"; import PageLivingSpaceUserTypesTableSection from "../tables/userType/page"; import PageLivingSpacePartsTableSection from "../tables/part/page"; import PageLivingSpacePersonTableSection from "../tables/person/page"; import PageLivingSpaceCompanyTableSection from "../tables/company/page"; const PageLivingSpaceUpdate = () => { const router = useRouter(); const searchParams = useSearchParams() const uuid = searchParams?.get('uuid') || null const buildIDFromUrl = searchParams?.get('buildID') || null const [page, setPage] = useState(1); const [limit, setLimit] = useState(10); const [sort, setSort] = useState({ createdAt: 'desc' }); const [filters, setFilters] = useState({}); const backToBuildAddress = <>
UUID not found in search params
const { data, isLoading, refetch } = useGraphQlLivingSpaceList(buildIDFromUrl || '', { limit, skip: (page - 1) * limit, sort, filters: { ...filters, uuid } }); const initData = data?.data?.[0] || null; const [userTypeID, setUserTypeID] = useState(null); const isPartInit = initData?.part !== null ? true : false; const [isProperty, setIsProperty] = useState(isPartInit); const [partID, setPartID] = useState(null); const [companyID, setCompanyID] = useState(null); const [personID, setPersonID] = useState(null); const form = createForm({ userTypeID: initData?.userType || "", partID: initData?.part || "", companyID: initData?.company || "", personID: initData?.person || "" }); useEffect(() => { if (initData) { form.setValue("userTypeID", initData?.userType || ""); form.setValue("partID", initData?.part || ""); form.setValue("companyID", initData?.company || ""); form.setValue("personID", initData?.person || ""); form.setValue("expiryStarts", initData?.expiryStarts || ""); form.setValue("expiryEnds", initData?.expiryEnds || ""); setUserTypeID(initData?.userType || ""); setPartID(initData?.part || ""); setCompanyID(initData?.company || ""); setPersonID(initData?.person || ""); } }, [initData]) useEffect(() => { form.setValue("userTypeID", userTypeID || ""); form.setValue("partID", partID || ""); form.setValue("companyID", companyID || ""); form.setValue("personID", personID || ""); }, [userTypeID, partID, companyID, personID, form]); const mutation = useUpdateLivingSpaceMutation(); function onSubmit(values: FormValues) { mutation.mutate({ data: values, uuid: uuid || "", buildID: buildIDFromUrl || "" }) } const [isUserTypeEnabled, setIsUserTypeEnabled] = useState(true); const [isPartsEnabled, setIsPartsEnabled] = useState(false); const [isHandleCompanyAndPersonEnable, setIsHandleCompanyAndPersonEnable] = useState(true); useEffect(() => { if (!!isProperty) { setIsPartsEnabled(true) } else { setPartID(null); setIsPartsEnabled(false) } }, [isProperty]) useEffect(() => { if (isPartInit) { setIsPartsEnabled(true) } else { setIsPartsEnabled(false) } }, [isPartInit]) if (!uuid) { return backToBuildAddress }; if (!initData) { return backToBuildAddress } const tabsClassName = "border border-gray-300 rounded-sm h-10" return <>
{isUserTypeEnabled && User Type} {isPartsEnabled && Parts} {isHandleCompanyAndPersonEnable && Company} {isHandleCompanyAndPersonEnable && Person}
{isUserTypeEnabled && } {isPartsEnabled && buildIDFromUrl && } {isHandleCompanyAndPersonEnable && } {isHandleCompanyAndPersonEnable && }
} export { PageLivingSpaceUpdate };