import { Modal } from "react-daisyui"; import { Plus } from "lucide-react"; import Chips from "@/components/ui/chips"; import { useDisclosure } from "@/hooks/useDisclosure"; import { useForm } from "react-hook-form"; import { zodResolver } from "@hookform/resolvers/zod"; import { AddAliasSchema, addAliasSchema } from "../schema"; import Button from "@/components/ui/button"; import { useAddAlias, useRemoveAlias } from "../hooks"; import { toast } from "sonner"; import { handleError } from "@/lib/utils"; import { InputField } from "@/components/ui/input"; import { useEffect } from "react"; import { useQueryClient } from "@tanstack/react-query"; import { useBucketContext } from "../context"; const AliasesSection = () => { const { bucket: data } = useBucketContext(); const queryClient = useQueryClient(); const removeAlias = useRemoveAlias(data?.id, { onSuccess: () => { toast.success("Alias removed!"); queryClient.invalidateQueries({ queryKey: ["bucket", data?.id] }); }, onError: handleError, }); const onRemoveAlias = (alias: string) => { if (window.confirm("Are you sure you want to remove this alias?")) { removeAlias.mutate(alias); } }; const aliases = data?.globalAliases || []; return (

Aliases

{aliases.map((alias: string) => ( onRemoveAlias(alias)}> {alias} ))}
); }; const AddAliasDialog = ({ id }: { id?: string }) => { const { dialogRef, isOpen, onOpen, onClose } = useDisclosure(); const form = useForm({ resolver: zodResolver(addAliasSchema), defaultValues: { alias: "" }, }); const queryClient = useQueryClient(); useEffect(() => { if (isOpen) form.setFocus("alias"); }, [isOpen]); const addAlias = useAddAlias(id, { onSuccess: () => { form.reset(); onClose(); toast.success("Alias added!"); queryClient.invalidateQueries({ queryKey: ["bucket", id] }); }, onError: handleError, }); const onSubmit = form.handleSubmit((values) => { addAlias.mutate(values.alias); }); return ( <> Add Alias
); }; export default AliasesSection;