Skip to content

Commit

Permalink
fix(web): Stop pre-loading all the bookmark lists in the bookmark grid
Browse files Browse the repository at this point in the history
  • Loading branch information
MohamedBassem committed May 19, 2024
1 parent f99f4c0 commit 8274d07
Showing 1 changed file with 44 additions and 33 deletions.
77 changes: 44 additions & 33 deletions apps/web/components/dashboard/bookmarks/ManageListsModal.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,7 @@ import {
FormItem,
FormMessage,
} from "@/components/ui/form";
import LoadingSpinner from "@/components/ui/spinner";
import { toast } from "@/components/ui/use-toast";
import { api } from "@/lib/trpc";
import { zodResolver } from "@hookform/resolvers/zod";
Expand Down Expand Up @@ -53,15 +54,21 @@ export default function ManageListsModal({
},
});

const { data: allLists } = useBookmarkLists(undefined, { enabled: open });

const { data: alreadyInList } = api.lists.getListsOfBookmark.useQuery(
{
bookmarkId,
},
const { data: allLists, isPending: isAllListsPending } = useBookmarkLists(
undefined,
{ enabled: open },
);

const { data: alreadyInList, isPending: isAlreadyInListPending } =
api.lists.getListsOfBookmark.useQuery(
{
bookmarkId,
},
{ enabled: open },
);

const isLoading = isAllListsPending || isAlreadyInListPending;

const { mutate: addToList, isPending: isAddingToListPending } =
useAddBookmarkToList({
onSuccess: () => {
Expand Down Expand Up @@ -123,33 +130,37 @@ export default function ManageListsModal({
<DialogHeader>
<DialogTitle>Manage Lists</DialogTitle>
</DialogHeader>
{allLists && (
<ul className="flex flex-col gap-2 pb-2 pt-4">
{alreadyInList?.lists.map((list) => (
<li
key={list.id}
className="flex items-center justify-between rounded-lg border border-border bg-background px-2 py-1 text-foreground"
>
<p>
{allLists
.getPathById(list.id)!
.map((l) => `${l.icon} ${l.name}`)
.join(" / ")}
</p>
<ActionButton
type="button"
variant="ghost"
size="sm"
loading={isDeleteFromListPending}
onClick={() =>
deleteFromList({ bookmarkId, listId: list.id })
}
{isLoading ? (
<LoadingSpinner className="my-4" />
) : (
allLists && (
<ul className="flex flex-col gap-2 pb-2 pt-4">
{alreadyInList?.lists.map((list) => (
<li
key={list.id}
className="flex items-center justify-between rounded-lg border border-border bg-background px-2 py-1 text-foreground"
>
<X className="size-4" />
</ActionButton>
</li>
))}
</ul>
<p>
{allLists
.getPathById(list.id)!
.map((l) => `${l.icon} ${l.name}`)
.join(" / ")}
</p>
<ActionButton
type="button"
variant="ghost"
size="sm"
loading={isDeleteFromListPending}
onClick={() =>
deleteFromList({ bookmarkId, listId: list.id })
}
>
<X className="size-4" />
</ActionButton>
</li>
))}
</ul>
)
)}

<div className="pb-4">
Expand Down Expand Up @@ -208,7 +219,7 @@ export function useManageListsModal(bookmarkId: string) {
return {
open,
setOpen,
content: (
content: open && (
<ManageListsModal bookmarkId={bookmarkId} open={open} setOpen={setOpen} />
),
};
Expand Down

0 comments on commit 8274d07

Please sign in to comment.