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
};
}