aboutsummaryrefslogtreecommitdiffstats
path: root/apps/browser-extension/src/components/BookmarkLists.tsx
blob: 1d70d257730a903724593c460773bbe7edb3d92a (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
import { X } from "lucide-react";

import {
  useBookmarkLists,
  useRemoveBookmarkFromList,
} from "@karakeep/shared-react/hooks/lists";

import { api } from "../utils/trpc";
import { Button } from "./ui/button";

export default function BookmarkLists({ bookmarkId }: { bookmarkId: string }) {
  const { data: allLists } = useBookmarkLists();

  const { mutate: deleteFromList } = useRemoveBookmarkFromList();

  const { data: lists } = api.lists.getListsOfBookmark.useQuery({ bookmarkId });
  if (!lists || !allLists) {
    return null;
  }

  return (
    <ul className="flex flex-col gap-1">
      {lists.lists.map((l) => (
        <li
          key={l.id}
          className="flex items-center justify-between rounded border border-border bg-background p-2 text-sm text-foreground"
        >
          <span>
            {allLists
              .getPathById(l.id)!
              .map((l) => `${l.icon} ${l.name}`)
              .join(" / ")}
          </span>
          <Button
            variant="ghost"
            size="sm"
            onClick={() => deleteFromList({ bookmarkId, listId: l.id })}
          >
            <X className="size-4" />
          </Button>
        </li>
      ))}
    </ul>
  );
}