"use client"; import { useMemo } from "react"; import { Badge } from "@/components/ui/badge"; import { Button, buttonVariants } from "@/components/ui/button"; import CopyBtn from "@/components/ui/copy-button"; import { Input } from "@/components/ui/input"; import { useClientConfig } from "@/lib/clientConfig"; import { api } from "@/lib/trpc"; import { cn } from "@/lib/utils"; import { Loader2, RotateCcw, Rss, Trash2 } from "lucide-react"; import { useTranslation } from "react-i18next"; export default function RssLink({ listId }: { listId: string }) { const { t } = useTranslation(); const clientConfig = useClientConfig(); const apiUtils = api.useUtils(); const { mutate: regenRssToken, isPending: isRegenPending } = api.lists.regenRssToken.useMutation({ onSuccess: () => { apiUtils.lists.getRssToken.invalidate({ listId }); }, }); const { mutate: clearRssToken, isPending: isClearPending } = api.lists.clearRssToken.useMutation({ onSuccess: () => { apiUtils.lists.getRssToken.invalidate({ listId }); }, }); const { data: rssToken, isLoading: isTokenLoading } = api.lists.getRssToken.useQuery({ listId }); const rssUrl = useMemo(() => { if (!rssToken || !rssToken.token) { return null; } return `${clientConfig.publicApiUrl}/v1/rss/lists/${listId}?token=${rssToken.token}`; }, [rssToken]); const isLoading = isRegenPending || isClearPending || isTokenLoading; return (