IB-AR-Neural-Style-Transfers / artficial.webapp / src / hooks / useSignup.js
useSignup.js
Raw
import { useState } from "react";
import { useAuthContext } from "./useAuthContext";

export const useSignup = () => {
  const [error, setError] = useState(null);
  const [isLoading, setIsLoading] = useState(null);
  const { dispatch } = useAuthContext();

  const signup = async (
    email,
    password,
    userName,
    phoneNumber,
    gender,
    avatarImgURL
  ) => {
    setIsLoading(true);
    setError(null);
    console.log("useSignup : ", email);
    const response = await fetch(
      "https://ib-arneuralstyletransfers-production.up.railway.app/api/v1/users/signup",
      {
        method: "POST",
        headers: { "Content-Type": "application/json" },
        body: JSON.stringify({
          email,
          password,
          userName,
          phoneNumber,
          gender,
          avatarImgURL,
        }),
      }
    );
    const json = await response.json();

    if (!response.ok) {
      setIsLoading(false);
      setError(json.error);
      console.log("!response.ok");
    }
    if (response.ok) {
      console.log("response.ok");
      // save the user to local storage
      localStorage.setItem("user", JSON.stringify(json));

      // update the auth context
      dispatch({ type: "LOGIN", payload: json });

      // update loading state
      setIsLoading(false);
    }
  };

  return { signup, isLoading, error };
};