diff options
| author | Mohamed Bassem <me@mbassem.com> | 2025-09-07 16:00:03 +0000 |
|---|---|---|
| committer | Mohamed Bassem <me@mbassem.com> | 2025-09-07 16:00:03 +0000 |
| commit | d623abd20c070b7736f66793b8f921a0ad7cb27f (patch) | |
| tree | b8f2b3ea8b77f04ecae59a6aee40379003493bb1 /apps/web/components | |
| parent | 8e95dae31a2c88d931917129b690698e0490bb04 (diff) | |
| download | karakeep-d623abd20c070b7736f66793b8f921a0ad7cb27f.tar.zst | |
fix: fix tag flicker caused by tag sorting
Diffstat (limited to 'apps/web/components')
| -rw-r--r-- | apps/web/components/dashboard/bookmarks/TagList.tsx | 32 | ||||
| -rw-r--r-- | apps/web/components/dashboard/bookmarks/TagsEditor.tsx | 21 | ||||
| -rw-r--r-- | apps/web/components/dashboard/tags/TagSelector.tsx | 8 |
3 files changed, 29 insertions, 32 deletions
diff --git a/apps/web/components/dashboard/bookmarks/TagList.tsx b/apps/web/components/dashboard/bookmarks/TagList.tsx index e8bed9eb..593a269b 100644 --- a/apps/web/components/dashboard/bookmarks/TagList.tsx +++ b/apps/web/components/dashboard/bookmarks/TagList.tsx @@ -24,24 +24,20 @@ export default function TagList({ } return ( <> - {bookmark.tags - .sort((a, b) => - a.attachedBy === "ai" ? 1 : b.attachedBy === "ai" ? -1 : 0, - ) - .map((t) => ( - <div key={t.id} className={className}> - <Link - key={t.id} - className={cn( - badgeVariants({ variant: "secondary" }), - "text-nowrap font-light text-gray-700 hover:bg-foreground hover:text-secondary dark:text-gray-400", - )} - href={`/dashboard/tags/${t.id}`} - > - {t.name} - </Link> - </div> - ))} + {bookmark.tags.map((t) => ( + <div key={t.id} className={className}> + <Link + key={t.id} + className={cn( + badgeVariants({ variant: "secondary" }), + "text-nowrap font-light text-gray-700 hover:bg-foreground hover:text-secondary dark:text-gray-400", + )} + href={`/dashboard/tags/${t.id}`} + > + {t.name} + </Link> + </div> + ))} </> ); } diff --git a/apps/web/components/dashboard/bookmarks/TagsEditor.tsx b/apps/web/components/dashboard/bookmarks/TagsEditor.tsx index 1893c2a6..f80ba963 100644 --- a/apps/web/components/dashboard/bookmarks/TagsEditor.tsx +++ b/apps/web/components/dashboard/bookmarks/TagsEditor.tsx @@ -31,9 +31,11 @@ export function TagsEditor({ const [optimisticTags, setOptimisticTags] = useState<ZBookmarkTags[]>(_tags); const { data: existingTags, isLoading: isExistingTagsLoading } = - api.tags.list.useQuery(); - - existingTags?.tags.sort((a, b) => a.name.localeCompare(b.name)); + api.tags.list.useQuery(undefined, { + select: (data) => ({ + tags: data.tags.sort((a, b) => a.name.localeCompare(b.name)), + }), + }); const onChange = ( _option: readonly EditableTag[], @@ -96,14 +98,11 @@ export function TagsEditor({ attachedBy: "human" as const, })) ?? [] } - value={optimisticTags - .slice() - .sort((a) => (a.attachedBy === "human" ? -1 : 1)) - .map((t) => ({ - label: t.name, - value: t.id, - attachedBy: t.attachedBy, - }))} + value={optimisticTags.slice().map((t) => ({ + label: t.name, + value: t.id, + attachedBy: t.attachedBy, + }))} isMulti closeMenuOnSelect={false} isClearable={false} diff --git a/apps/web/components/dashboard/tags/TagSelector.tsx b/apps/web/components/dashboard/tags/TagSelector.tsx index 01690da1..27213b8a 100644 --- a/apps/web/components/dashboard/tags/TagSelector.tsx +++ b/apps/web/components/dashboard/tags/TagSelector.tsx @@ -21,14 +21,16 @@ export function TagSelector({ placeholder?: string; className?: string; }) { - const { data: allTags, isPending } = api.tags.list.useQuery(); + const { data: allTags, isPending } = api.tags.list.useQuery(undefined, { + select: (data) => ({ + tags: data.tags.sort((a, b) => a.name.localeCompare(b.name)), + }), + }); if (isPending || !allTags) { return <LoadingSpinner />; } - allTags.tags = allTags.tags.sort((a, b) => a.name.localeCompare(b.name)); - return ( <Select onValueChange={onChange} value={value ?? ""}> <SelectTrigger className={cn("w-full", className)}> |
