diff options
| author | MohamedBassem <me@mbassem.com> | 2024-03-02 11:00:21 +0000 |
|---|---|---|
| committer | MohamedBassem <me@mbassem.com> | 2024-03-02 11:00:21 +0000 |
| commit | e5bedae5eaad8ed377e7d9b689815dbd55fdb523 (patch) | |
| tree | 48469f5f921df0fe9776b573c955382866830986 /packages/web/app/dashboard/bookmarks/components/TextCard.tsx | |
| parent | 42306591168d047d099ac8592111ecb56772c00c (diff) | |
| download | karakeep-e5bedae5eaad8ed377e7d9b689815dbd55fdb523.tar.zst | |
feature: Show a loading indicator when tags are still being fetched
Diffstat (limited to 'packages/web/app/dashboard/bookmarks/components/TextCard.tsx')
| -rw-r--r-- | packages/web/app/dashboard/bookmarks/components/TextCard.tsx | 19 |
1 files changed, 18 insertions, 1 deletions
diff --git a/packages/web/app/dashboard/bookmarks/components/TextCard.tsx b/packages/web/app/dashboard/bookmarks/components/TextCard.tsx index 5d571356..8170a304 100644 --- a/packages/web/app/dashboard/bookmarks/components/TextCard.tsx +++ b/packages/web/app/dashboard/bookmarks/components/TextCard.tsx @@ -11,6 +11,13 @@ import { useState } from "react"; import { BookmarkedTextViewer } from "./BookmarkedTextViewer"; import { Button } from "@/components/ui/button"; +function isStillTagging(bookmark: ZBookmark) { + return ( + bookmark.taggingStatus == "pending" && + Date.now().valueOf() - bookmark.createdAt.valueOf() < 30 * 1000 + ); +} + export default function TextCard({ bookmark: initialData, className, @@ -24,6 +31,16 @@ export default function TextCard({ }, { initialData, + refetchInterval: (query) => { + const data = query.state.data; + if (!data) { + return false; + } + if (isStillTagging(data)) { + return 1000; + } + return false; + }, }, ); const [previewModalOpen, setPreviewModalOpen] = useState(false); @@ -51,7 +68,7 @@ export default function TextCard({ {bookmarkedText.text} </Markdown> <div className="mt-4 flex flex-none flex-wrap gap-1 overflow-hidden"> - <TagList bookmark={bookmark} /> + <TagList bookmark={bookmark} loading={isStillTagging(bookmark)} /> </div> <div className="flex w-full justify-between"> <div /> |
