import { Alert, Modal } from "react-daisyui"; import { useBucketContext } from "../context"; import { useConfig } from "@/hooks/useConfig"; import { useEffect, useMemo, useState } from "react"; import Input from "@/components/ui/input"; import Button from "@/components/ui/button"; import { Copy, FileWarningIcon } from "lucide-react"; import { copyToClipboard } from "@/lib/utils"; import Checkbox from "@/components/ui/checkbox"; import { shareDialog } from "./share-dialog-store"; const ShareDialog = () => { const { isOpen, data, dialogRef } = shareDialog.use(); const { bucket, bucketName } = useBucketContext(); const { data: config } = useConfig(); const [domain, setDomain] = useState(bucketName); const websitePort = config?.s3_web?.bind_addr?.split(":").pop() || "80"; const rootDomain = config?.s3_web?.root_domain; const domains = useMemo( () => [ bucketName, bucketName + rootDomain, bucketName + rootDomain + `:${websitePort}`, ], [bucketName, rootDomain, websitePort] ); useEffect(() => { setDomain(bucketName); }, [bucketName]); const url = "http://" + domain + "/" + data?.prefix + data?.key; return ( Share {data?.key || ""} {!bucket.websiteAccess && ( Sharing is only available for buckets with enabled website access. )}
{domains.map((item) => ( setDomain(item)} /> ))}
e.target.select()} readOnly />
); }; export default ShareDialog;