Spaces:
Runtime error
Runtime error
| "use client"; | |
| import * as React from "react"; | |
| import { | |
| Dialog, | |
| DialogClose, | |
| DialogContent, | |
| DialogDescription, | |
| DialogTrigger, | |
| } from "@radix-ui/react-dialog"; | |
| import { TrashIcon } from "@radix-ui/react-icons"; | |
| import { useRouter } from "next/navigation"; | |
| import { useHasMounted } from "@/lib/utils"; | |
| import { DialogHeader } from "./ui/dialog"; | |
| export default function ClearChatsButton() { | |
| const hasMounted = useHasMounted(); | |
| const router = useRouter(); | |
| if (!hasMounted) { | |
| return null; | |
| } | |
| const chats = Object.keys(localStorage).filter((key) => | |
| key.startsWith("chat_") | |
| ); | |
| const disabled = chats.length === 0; | |
| const clearChats = () => { | |
| chats.forEach((key) => { | |
| localStorage.removeItem(key); | |
| }); | |
| window.dispatchEvent(new Event("storage")); | |
| router.push("/"); | |
| }; | |
| return ( | |
| <Dialog> | |
| <DialogTrigger | |
| className="inline-flex items-center whitespace-nowrap font-medium transition-colors focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:pointer-events-none disabled:opacity-50 hover:bg-accent hover:text-accent-foreground h-8 rounded-sm px-3 text-xs justify-start gap-2 w-full" | |
| disabled={disabled} | |
| > | |
| <TrashIcon className="w-4 h-4" /> | |
| <span>Clear chats</span> | |
| </DialogTrigger> | |
| <DialogContent> | |
| <DialogHeader className="space-y-2"> | |
| <DialogDescription className="text-xs"> | |
| Are you sure you want to delete all chats? This action cannot be | |
| undone. | |
| </DialogDescription> | |
| <div className="flex justify-end gap-2"> | |
| <DialogClose className="border border-input bg-background hover:bg-accent hover:text-accent-foreground px-3 py-2 rounded-sm text-xs"> | |
| Cancel | |
| </DialogClose> | |
| <DialogClose | |
| className="bg-destructive text-destructive-foreground hover:bg-destructive/90 px-3 py-2 rounded-sm text-xs" | |
| onClick={() => clearChats()} | |
| > | |
| Delete | |
| </DialogClose> | |
| </div> | |
| </DialogHeader> | |
| </DialogContent> | |
| </Dialog> | |
| ); | |
| } | |