import React, { useEffect, useRef, useState } from "react";
import "../../App.css";
import Footer from "../../Footer";
import InputField from "../InputField";
import SubmitField from "../SubmitField";
import { Logger } from "@behametrics/logger-web";
import BehaviorStudyInfo from "../BehaviorStudyInfo";
import BehaviorNormal from "../BehaviorNormal";
import { Button } from "../Button";
import BehaviorPhone from "../BehaviorPhone";
import BehaviorStanding from "../BehaviorStanding";

export default function Study() {
  const _logger = useRef(0);

  useEffect(() => {
    _logger.current = new Logger({
      //inputs: ["cursor", "wheel", "keyboard", "touch"],
      inputs: ["keyboard"],
      // apiUrl: "https://behavior.marcocamenzind.ch",
      apiUrl: "http://localhost:5000",
      logToConsole: true,
    });
    _logger.current.init();
  }, []);

  let username = "";
  const setUsername = (tmp_username) => {
    username = tmp_username;
  };

  let password = "";
  const setPassword = (tmp_password) => {
    password = tmp_password;
  };

  const [isStepStart, setIsStepStart] = useState(true);
  const [isStepNormal, setIsStepNormal] = useState(false);
  const [isStepPhone, setIsStepPhone] = useState(false);
  const [isStepStanding, setIsStepStanding] = useState(false);
  const [isStepEnd, setIsStepEnd] = useState(false);

  const handleLoggerOff = () => {
    _logger.current.stop();
    console.log("Logger ausgeschaltet");
  };

  const handleLoggerOn = () => {
    _logger.current.start();
    console.log("start logging ");
  };

  const handlePasswordChange = (e) => {
    setPassword(e.target.value);
  };

  const handleUsernameChange = (e) => {
    setUsername(e.target.value);
  };

  const handleOnPasteEvent = (e) => {
    e.preventDefault();
    return false;
  };

  const handleClickAtStepStart = () => {
    setIsStepStart(false);
    setIsStepNormal(true);
    handleLoggerOn();
    // forceUpdate();
  };

  const handleClickAtStepNormal = () => {
    setIsStepNormal(false);
    setIsStepPhone(true);
  };

  const handleClickAtStepPhone = () => {
    setIsStepPhone(false);
    setIsStepStanding(true);
  };

  const handleClickAtStepStanding = () => {
    setIsStepStanding(false);
    setIsStepEnd(true);
    handleLoggerOff();
  };

  const onSubmitClick = (e) => {
    e.preventDefault();
    let opts = {
      username: username,
      password: password,
    };
    fetch("/api/protected/behavior", {
      method: "post",
      body: JSON.stringify(opts),
    }).then((response) => {
      console.log(response.status);
      if (response.status === 401) {
        response.json().then((resp) => {
          console.log("nicht so wirklich gut");
          // setErrorMessage(resp.message);
        });
      } else {
        response.json().then((token) => {
          console.log("Alles gut :-)");
        });
      }
    });
  };

  const study_start = (
    <>
      <BehaviorStudyInfo />
      <Button
        className="btns"
        buttonStyle="btn--primary"
        buttonSize="btn--full"
        onClick={handleClickAtStepStart}
        newTo="study"
      >
        Starten mit der Studie
      </Button>
    </>
  );

  const study_normal = (
    <>
      <BehaviorNormal />
      <form id="behaviorNormal">
        <InputField
          LabelName="Benutzername"
          onChange={handleUsernameChange}
          InputType="text"
          InputName="Benutzername"
          InputPlaceHolder="Benutzername"
          onPaste={handleOnPasteEvent}
        />
        <InputField
          LabelName="Passwort"
          onChange={handlePasswordChange}
          InputType="password"
          InputName="Passwort"
          InputPlaceHolder="Benutzername"
          onPaste={handleOnPasteEvent}
        />
        <SubmitField
          LabelName="Weiter zur nächsten Situation"
          InputValue="next-situation"
          InputName="Weiter"
          onClick={handleClickAtStepNormal}
        />
      </form>
    </>
  );

  const study_phone = (
    <>
      <BehaviorPhone />
      <form id="behaviorPhone">
        <InputField
          LabelName="Benutzername"
          onChange={handleUsernameChange}
          InputType="text"
          InputName="Benutzername"
          InputPlaceHolder="Benutzername"
          onPaste={handleOnPasteEvent}
        />
        <InputField
          LabelName="Passwort"
          onChange={handlePasswordChange}
          InputType="password"
          InputName="Passwort"
          InputPlaceHolder="Benutzername"
          onPaste={handleOnPasteEvent}
        />
        <SubmitField
          LabelName="Weiter zur nächsten Situation"
          InputValue="next-situation"
          InputName="Weiter"
          onClick={handleClickAtStepPhone}
        />
      </form>
    </>
  );

  const study_standing = (
    <>
      <BehaviorStanding />
      <form id="behaviorPhone">
        <InputField
          LabelName="Benutzername"
          onChange={handleUsernameChange}
          InputType="text"
          InputName="Benutzername"
          InputPlaceHolder="Benutzername"
          onPaste={handleOnPasteEvent}
        />
        <InputField
          LabelName="Passwort"
          onChange={handlePasswordChange}
          InputType="password"
          InputName="Passwort"
          InputPlaceHolder="Benutzername"
          onPaste={handleOnPasteEvent}
        />
        <SubmitField
          LabelName="Studie beenden"
          InputValue="stopStudy"
          InputName="quit"
          onClick={handleClickAtStepStanding}
        />
      </form>
    </>
  );

  const study_end = <p>Merci :-)</p>;

  return (
    <>
      <div className="sitePage">
        <h1>Studie</h1>
        {isStepStart ? study_start : null}
        {isStepNormal ? study_normal : null}
        {isStepPhone ? study_phone : null}
        {isStepStanding ? study_standing : null}
        {isStepEnd ? study_end : null}
      </div>
      <Footer />
    </>
  );
}