import React, { useState } from 'react';
import { useDispatch, useSelector } from 'react-redux';
import { RootState, AppDispatch } from './store';
import { addItem, deleteItemById } from './todoSlice';

export const TodoList: React.FC = () => {
  const [inputText, setInputText] = useState('');
  
  // Strongly type dispatch and select the state
  const dispatch = useDispatch<AppDispatch>();
  const items = useSelector((state: RootState) => state.todos.items);

  const handleAdd = () => {
    if (!inputText.trim()) return;

    dispatch(
      addItem({
        id: crypto.randomUUID(), // Generates a unique string ID
        text: inputText,
      })
    );
    setInputText('');
  };

  return (
    <div>
      <input 
        value={inputText} 
        onChange={(e) => setInputText(e.target.value)} 
        placeholder="Enter item..." 
      />
      <button onClick={handleAdd}>Add Item</button>

      <ul>
        {items.map((item) => (
          <li key={item.id}>
            {item.text}
            <button onClick={() => dispatch(deleteItemById(item.id))}>
              Delete
            </button>
          </li>
        ))}
      </ul>
    </div>
  );
};
