import { Suspense } from "react";
import { ErrorBoundary } from "react-error-boundary";
import { Helmet } from "react-helmet-async";
import { cache, useMutation } from "edge-city/data";
import { useForm } from "react-hook-form";
import { Button, TextField, Input } from "react-aria-components";
import Spinner from "@/components/Spinner/Spinner";
import TodoList from "./TodoList";
import { createTodo } from "@/services/todos.service";
export default function Page() {
const { mutate, isMutating, err } = useMutation(async ({ text }) => {
await cache.invalidate("todos");
<div className="todos-page">
<h1 className="title">Todo List</h1>
<div className="container">
<p className="subtitle">Share this page to collaborate with others.</p>
<form onSubmit={handleSubmit(mutate)}>
<TextField isRequired isReadOnly={isMutating} aria-label="add-todo">
<Input id="text" aria-labelledby="text" aria-describedby="text" {...register("text")} placeholder="Add a todo item" />
{err?.text && <p>{err.text._errors[0]}</p>}
<Button className="add-button" type="submit" isDisabled={isMutating}>
<ErrorBoundary onError={(err) => console.log("err", err)} fallback={<p>Oops something went wrong</p>}>
<Suspense fallback={<Spinner />}>
<TodoList isMutating={isMutating} />