import React, { useState, ForwardedRef, useEffect } from 'react';
import "../styles/variables.css"

interface InputProps {
  message: string;
  onSendClick: (message: string, override: boolean) => void;
  onMicClick: () => void;
  inputDisabled: boolean;
  isRecording: boolean
}

const InputFrontend = React.forwardRef<HTMLDivElement, InputProps>(
  ({ message, onSendClick, onMicClick, inputDisabled, isRecording }, ref: ForwardedRef<HTMLDivElement>) => {
    const [inputValue, setInputValue] = useState('');

    useEffect(() => {
      setInputValue(message);
    }, [message]);

    const handleInputChange = (e: React.ChangeEvent<HTMLInputElement>) => {
      setInputValue(e.target.value);
    };

    const handleKeyDown = (event: React.KeyboardEvent<HTMLInputElement>) => {
      if (!inputDisabled) {
        if (event.key === 'Enter') {
          onSendClick(inputValue, false); // Call the function passed via props
          setInputValue(''); // Optionally clear input after submission
          event.preventDefault(); // Prevent default action (e.g., form submission)
        }
      }
    };

    return (
      <div className="input" id="inputForm" ref={ref}>
        <input
          type="text"
          name="user_message"
          placeholder="Type your message here..."
          value={inputValue}
          onChange={handleInputChange}
          onKeyDown={handleKeyDown}
        />
        <button type="button" onClick={() => onSendClick(inputValue, false)} disabled={inputDisabled ? true : false}>
          <img src="/img/send.svg" alt="send" />
        </button>
        <button className={`microphone-button ${isRecording ? "red" : "var(--input-button-color)"}`} type="button" onClick={onMicClick}>
          <img src="/img/microphone.svg" alt="microphone" />
        </button>
      </div>
    );
  }
);

export default InputFrontend;