import { useState, } from 'react';
import UserService from "../services/UserService";
import BasketService from "../services/BasketService";

export function useUser() {
  const [user, setUser] = useState(null);

  async function authorization(data) {
    try {
      const response = await UserService.login(data);
      setUser(response);
      localStorage.setItem("user", JSON.stringify(response));
    } catch (error) {
      throw new Error(error);
    }
  }

  async function reg(data) {
    try {
      const response = await UserService.registration({...data, "role": "user"});
      await BasketService.createBasket(response.id);
      setUser(response);
      localStorage.setItem("user", JSON.stringify(response));
    } catch (error) {
      throw new Error(error);
    }
  }

  function logout() {
    setUser(null);
    localStorage.removeItem("user");
  }

  function checkIsAuth() {
    if (user) {
      return;
    }

    const uuser = localStorage.getItem('user');
    if (uuser) {
      const t = JSON.parse(uuser);
      setUser(t);
    }
  }

  return {
    id: user ? user.id : null,
    isAdmin: Boolean(user && user.role == "admin"),
    isAuth: user && user.id,
    authorization,
    reg,
    logout,
    checkIsAuth
  };
}