import React, { useContext, useEffect } from "react";
import { Link } from "react-router-dom";
import { BiLogOutCircle, BiLogInCircle } from "react-icons/bi";

import "../styles/Header.css";
import { User } from "../index";
import axios from "axios";

export default function Header({ selection, setSelection }) {
  const [user, setUser] = useContext(User);
  const connected = new URLSearchParams(location.search).get("connected");

  let width = window.innerWidth > 0 ? window.innerWidth : screen.width;
  width = width > 600;

  useEffect(() => {
    if (connected) {
      axios
        .get(`${process.env.REACT_APP_BASE_URL_BACK}/auth`, { withCredentials: true })
        .then((res) => {
          setUser(res.data);
          localStorage.setItem("user", JSON.stringify(res.data));
        })
        .catch((e) => console.log(e));
    }
  }, [connected]);

  return (
    <div id="header-container" style={!selection ? { flexDirection: "row" } : {}}>
      <div id="header-restaurant-status">
        {width &&
          (!selection
            ? "Accueil"
            : `${selection.name} : actuellement ${selection.status ? "ouvert" : "fermé"}`)}
      </div>
      <Link id="header-home-link" to="/" onClick={() => setSelection(null)}>
        <h2>{width || !selection ? "ViaResto" : selection.name}</h2>
      </Link>
      <div id="header-timetable">
        {selection ? (
          width ? (
            selection.timetable && `Horaires : ${selection.timetable}`
          ) : (
            selection.timetable
          )
        ) : user ? (
          <BiLogOutCircle
            id="header-button"
            title="Déconnexion"
            onClick={() => {
              localStorage.removeItem("user");
              window.location.assign(`${process.env.REACT_APP_BASE_URL_BACK}/auth/logout`);
            }}
          />
        ) : (
          <BiLogInCircle
            id="header-button"
            title="Connexion"
            onClick={() => {
              window.location.assign(`${process.env.REACT_APP_BASE_URL_BACK}/auth/login`);
            }}
          />
        )}
      </div>
    </div>
  );
}