export function useTodo()

in Output/GrokBeta/JS/contextual_experiment/translate_to_react/1731676402/src/hooks/useTodo.ts [7:34]


export function useTodo() {
    const dispatch = useDispatch<AppDispatch>();
    const todos = useSelector((state: RootState) => state.todos);

    const addNewTodo = (title: string) => dispatch(addTodo(title));
    const toggleTodoItem = (id: string) => dispatch(toggleTodo(id));
    const removeTodoItem = (id: string) => dispatch(removeTodo(id));
    const editTodoItem = (id: string, title: string) => dispatch(editTodo({ id, title }));
    const clearCompletedTodos = () => dispatch(clearCompleted());
    const toggleAllTodos = (completed: boolean) => dispatch(toggleAll(completed));

    const remainingCount = todos.filter(todo => !todo.completed).length;
    const doneCount = todos.length - remainingCount;
    const allChecked = remainingCount === 0;

    return {
        todos,
        addTodo: addNewTodo,
        toggleTodo: toggleTodoItem,
        removeTodo: removeTodoItem,
        editTodo: editTodoItem,
        clearCompleted: clearCompletedTodos,
        toggleAll: toggleAllTodos,
        remainingCount,
        doneCount,
        allChecked
    };
}