All files / src/hooks/merchant-api/customers CustomerFormProvider.tsx

0% Statements 0/8
0% Branches 0/20
0% Functions 0/4
0% Lines 0/7

Press n or j to go to the next uncovered block, b, p or k for the previous block.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71                                                                                                                                             
import * as React from "react";
import { Customer } from "@customTypes/customer.types";
import { fromUnixTime } from "date-fns";
import { getServicePhoneNumber } from "@utils/helpers";
import { isoStringToLocalDate } from "@utils/date.helpers";
 
type FormInput = {
  [key: string]: any;
};
 
export const FormContext = React.createContext<FormContextType | null>(null);
 
export type FormContextType = {
  formData: FormInput;
  setFormValues: (values: FormInput) => void;
};
 
export default function CustomerFormProvider({
  children,
  data,
}: {
  data?: Customer;
  children: React.ReactNode;
}) {
  const [formData, setFormData] = React.useState({
    firstName: data?.firstName || "",
    lastName: data?.lastName || "",
    email: data?.email ? data.email : "",
    phone: getServicePhoneNumber(data?.phoneNumber) ?? "",
    dateOfBirth: data?.dateOfBirth
      ? typeof data?.dateOfBirth === "number"
        ? fromUnixTime(data?.dateOfBirth)
        : isoStringToLocalDate(data?.dateOfBirth as string)
      : null,
    employer: data?.employer || "",
    occupation: data?.occupation || "",
    avatarURL: data?.avatarURL,
    address: data?.address
      ? {
          country: data?.address?.country,
          city: data?.address?.city,
          state: data?.address?.state,
          zip: data?.address?.zip,
          line1: data?.address?.line1,
        }
      : null,
    notes: data?.notes || "",
  });
 
  const setFormValues = (values: FormInput) => {
    setFormData((prevValues) => ({
      ...prevValues,
      ...values,
    }));
  };
 
  return (
    <FormContext.Provider
      value={{
        formData,
        setFormValues,
      }}
    >
      {children}
    </FormContext.Provider>
  );
}
 
export const useFormData = () =>
  React.useContext(FormContext) as FormContextType;