"use client"; import { ZBookmark } from "@/lib/types/api/bookmarks"; import BookmarkOptions from "./BookmarkOptions"; import { api } from "@/lib/trpc"; import { Maximize2, Star } from "lucide-react"; import { cn } from "@/lib/utils"; import TagList from "./TagList"; import Markdown from "react-markdown"; import { useState } from "react"; import { BookmarkedTextViewer } from "./BookmarkedTextViewer"; import { Button } from "@/components/ui/button"; import Link from "next/link"; function isStillTagging(bookmark: ZBookmark) { return ( bookmark.taggingStatus == "pending" && Date.now().valueOf() - bookmark.createdAt.valueOf() < 30 * 1000 ); } export default function TextCard({ bookmark: initialData, className, }: { bookmark: ZBookmark; className?: string; }) { const { data: bookmark } = api.bookmarks.getBookmark.useQuery( { bookmarkId: initialData.id, }, { initialData, refetchInterval: (query) => { const data = query.state.data; if (!data) { return false; } if (isStillTagging(data)) { return 1000; } return false; }, }, ); const [previewModalOpen, setPreviewModalOpen] = useState(false); const bookmarkedText = bookmark.content; if (bookmarkedText.type != "text") { throw new Error("Unexpected bookmark type"); } return ( <>
{bookmarkedText.text}
{bookmark.favourited && ( )}
); }