import { useState } from "react";
import { useForm } from "react-hook-form";
import { TextField, Input } from "react-aria-components";
import { cache, useMutation } from "edge-city/data";
import { updateTodo, deleteTodo } from "@/services/todos.service";
const Todo = ({ item }) => {
const [editing, setEditing] = useState(false);
const updateMutation = useMutation(async ({ text }) => {
await updateTodo({ id: item.id, text, completed: item.completed });
await cache.invalidate("todos", false);
const deleteMutation = useMutation(async (id) => {
await cache.invalidate("todos", false);
<li className="todo" style={{ opacity: deleteMutation.isMutating || updateMutation.isMutating ? 0.5 : 1 }}>
<input type="checkbox" />
<p className="timestamp">{item.createdAt}</p>
<button className="edit-button" title="Edit" onClick={() => setEditing(true)}>
<button className="delete-button" title="Delete" onClick={() => deleteMutation.mutate(item.id)}>
<form onSubmit={handleSubmit(updateMutation.mutate)}>
<TextField isRequired isReadOnly={updateMutation.isMutating} isDisabled={updateMutation.isMutating}>
<Input {...register("text")} defaultValue={item.text} />
{/* {err?.text && <p>{err.text._errors[0]}</p>} */}
disabled={updateMutation.isMutating}
className="delete-button"
reset({ text: item.text });
disabled={updateMutation.isMutating}