"use client"; import { useState } from "react"; import { toast } from "sonner"; import { Copy, Check, RefreshCw } from "lucide-react"; import { Button } from "@/components/ui/button"; import { Card, CardContent, CardDescription, CardHeader, CardTitle } from "@/components/ui/card"; import { useShareCode, useGenerateShareCode } from "@/lib/hooks/use-sharing"; interface ShareCodeDisplayProps { residenceId: number; } export function ShareCodeDisplay({ residenceId }: ShareCodeDisplayProps) { const { data, isLoading } = useShareCode(residenceId); const generateCode = useGenerateShareCode(residenceId); const [copied, setCopied] = useState(false); const shareCode = data?.share_code; async function handleCopy() { if (!shareCode) return; await navigator.clipboard.writeText(shareCode.code); setCopied(true); toast.success("Code copied to clipboard"); setTimeout(() => setCopied(false), 2000); } function handleGenerate() { generateCode.mutate(undefined, { onSuccess: () => { toast.success("Share code generated"); }, onError: () => { toast.error("Failed to generate share code"); }, }); } if (isLoading) { return ( Share Code Loading... ); } return ( Share Code Share this code with others to invite them to your residence. {shareCode ? (
{shareCode.code}

Expires{" "} {new Date(shareCode.expires_at).toLocaleDateString(undefined, { year: "numeric", month: "long", day: "numeric", hour: "numeric", minute: "2-digit", })}

) : (

No active share code. Generate one to invite others.

)}
); }