import React, {useState} from 'react';
import InputField from "../components/reg/InputField.jsx";
import LoginButtons from "../components/reg/LoginButtons.jsx";
import LoginTitle from "../components/reg/loginTitle.jsx";

import {MessageType} from "../backend/notifications/message.tsx";
import {displayMessage} from "../backend/notifications/notifications.js";
import {post} from "../backend/api.js";
import {URLs} from "../__data__/urls";

const SignIn = () => {
    const [name, setName] = useState("");
    const [password, setPassword] = useState("");

    const [nameErrorsCounter, setNameErrorsCounter] = useState(0);

    async function submit() {
        console.log('Sign In!')

        const {ok, data} = await post('/auth/login', {name: name, password: password});

        if (!ok) {
            displayMessage(data.message, MessageType.ERROR);

            if (nameErrorsCounter >= 1) {
                displayMessage("Note that you need to enter your ID name", MessageType.INFO);
                setNameErrorsCounter(0);
            } else {
                setNameErrorsCounter(nameErrorsCounter + 1);
            }

            return;
        }

        localStorage.setItem('token', data.token);
        localStorage.setItem('username', name);

        setNameErrorsCounter(0);

        localStorage.setItem('message', 'Successfully logged in!');
        window.location.href = URLs.baseUrl;
    }

  return (
      <div className="LoginList">
          <LoginTitle/>
          <InputField title="Name" setValue={setName} value={name}/>
          <InputField title="Password" setValue={setPassword} value={password}/>

          <LoginButtons
              submitHandler={submit}
              isAuth={true}
          />
      </div>
  );
};

export default SignIn;