aboutsummaryrefslogtreecommitdiffstats
path: root/packages/web/app/dashboard/bookmarks/components/BookmarkOptions.tsx
diff options
context:
space:
mode:
authorMohamedBassem <me@mbassem.com>2024-03-10 17:59:58 +0000
committerMohamedBassem <me@mbassem.com>2024-03-10 17:59:58 +0000
commitd6dd76021226802adf5295b3243d6f2ae4fa5cc2 (patch)
tree7a25423d46db9e0e224b5f58b73cec5768953b44 /packages/web/app/dashboard/bookmarks/components/BookmarkOptions.tsx
parent8ab868d3f94cc6609d278dc952432f1a244c3f84 (diff)
downloadkarakeep-d6dd76021226802adf5295b3243d6f2ae4fa5cc2.tar.zst
refactor: Move all components to the top level directory
Diffstat (limited to 'packages/web/app/dashboard/bookmarks/components/BookmarkOptions.tsx')
-rw-r--r--packages/web/app/dashboard/bookmarks/components/BookmarkOptions.tsx185
1 files changed, 0 insertions, 185 deletions
diff --git a/packages/web/app/dashboard/bookmarks/components/BookmarkOptions.tsx b/packages/web/app/dashboard/bookmarks/components/BookmarkOptions.tsx
deleted file mode 100644
index 4f08ebee..00000000
--- a/packages/web/app/dashboard/bookmarks/components/BookmarkOptions.tsx
+++ /dev/null
@@ -1,185 +0,0 @@
-"use client";
-
-import { useToast } from "@/components/ui/use-toast";
-import { api } from "@/lib/trpc";
-import { ZBookmark, ZBookmarkedLink } from "@hoarder/trpc/types/bookmarks";
-import { Button } from "@/components/ui/button";
-import {
- DropdownMenu,
- DropdownMenuContent,
- DropdownMenuItem,
- DropdownMenuTrigger,
-} from "@/components/ui/dropdown-menu";
-import {
- Archive,
- Link,
- List,
- MoreHorizontal,
- Pencil,
- RotateCw,
- Star,
- Tags,
- Trash2,
-} from "lucide-react";
-import { useTagModel } from "./TagModal";
-import { useState } from "react";
-import { BookmarkedTextEditor } from "./BookmarkedTextEditor";
-import { useAddToListModal } from "./AddToListModal";
-
-export default function BookmarkOptions({ bookmark }: { bookmark: ZBookmark }) {
- const { toast } = useToast();
- const linkId = bookmark.id;
-
- const { setOpen: setTagModalIsOpen, content: tagModal } =
- useTagModel(bookmark);
- const { setOpen: setAddToListModalOpen, content: addToListModal } =
- useAddToListModal(bookmark.id);
-
- const [isTextEditorOpen, setTextEditorOpen] = useState(false);
-
- const invalidateAllBookmarksCache =
- api.useUtils().bookmarks.getBookmarks.invalidate;
-
- const invalidateBookmarkCache =
- api.useUtils().bookmarks.getBookmark.invalidate;
-
- const onError = () => {
- toast({
- variant: "destructive",
- title: "Something went wrong",
- description: "There was a problem with your request.",
- });
- };
- const deleteBookmarkMutator = api.bookmarks.deleteBookmark.useMutation({
- onSuccess: () => {
- toast({
- description: "The bookmark has been deleted!",
- });
- },
- onError,
- onSettled: () => {
- invalidateAllBookmarksCache();
- },
- });
-
- const updateBookmarkMutator = api.bookmarks.updateBookmark.useMutation({
- onSuccess: () => {
- toast({
- description: "The bookmark has been updated!",
- });
- },
- onError,
- onSettled: () => {
- invalidateBookmarkCache({ bookmarkId: bookmark.id });
- invalidateAllBookmarksCache();
- },
- });
-
- const crawlBookmarkMutator = api.bookmarks.recrawlBookmark.useMutation({
- onSuccess: () => {
- toast({
- description: "Re-fetch has been enqueued!",
- });
- },
- onError,
- onSettled: () => {
- invalidateBookmarkCache({ bookmarkId: bookmark.id });
- },
- });
-
- return (
- <>
- {tagModal}
- {addToListModal}
- <BookmarkedTextEditor
- bookmark={bookmark}
- open={isTextEditorOpen}
- setOpen={setTextEditorOpen}
- />
- <DropdownMenu>
- <DropdownMenuTrigger asChild>
- <Button
- variant="ghost"
- className="px-1 focus-visible:ring-0 focus-visible:ring-offset-0"
- >
- <MoreHorizontal />
- </Button>
- </DropdownMenuTrigger>
- <DropdownMenuContent className="w-fit">
- {bookmark.content.type === "text" && (
- <DropdownMenuItem onClick={() => setTextEditorOpen(true)}>
- <Pencil className="mr-2 size-4" />
- <span>Edit</span>
- </DropdownMenuItem>
- )}
- <DropdownMenuItem
- onClick={() =>
- updateBookmarkMutator.mutate({
- bookmarkId: linkId,
- favourited: !bookmark.favourited,
- })
- }
- >
- <Star className="mr-2 size-4" />
- <span>{bookmark.favourited ? "Un-favourite" : "Favourite"}</span>
- </DropdownMenuItem>
- <DropdownMenuItem
- onClick={() =>
- updateBookmarkMutator.mutate({
- bookmarkId: linkId,
- archived: !bookmark.archived,
- })
- }
- >
- <Archive className="mr-2 size-4" />
- <span>{bookmark.archived ? "Un-archive" : "Archive"}</span>
- </DropdownMenuItem>
- {bookmark.content.type === "link" && (
- <DropdownMenuItem
- onClick={() => {
- navigator.clipboard.writeText(
- (bookmark.content as ZBookmarkedLink).url,
- );
- toast({
- description: "Link was added to your clipboard!",
- });
- }}
- >
- <Link className="mr-2 size-4" />
- <span>Copy Link</span>
- </DropdownMenuItem>
- )}
- <DropdownMenuItem onClick={() => setTagModalIsOpen(true)}>
- <Tags className="mr-2 size-4" />
- <span>Edit Tags</span>
- </DropdownMenuItem>
-
- <DropdownMenuItem onClick={() => setAddToListModalOpen(true)}>
- <List className="mr-2 size-4" />
- <span>Add to List</span>
- </DropdownMenuItem>
-
- {bookmark.content.type === "link" && (
- <DropdownMenuItem
- onClick={() =>
- crawlBookmarkMutator.mutate({ bookmarkId: bookmark.id })
- }
- >
- <RotateCw className="mr-2 size-4" />
- <span>Refresh</span>
- </DropdownMenuItem>
- )}
- <DropdownMenuItem
- className="text-destructive"
- onClick={() =>
- deleteBookmarkMutator.mutate({ bookmarkId: bookmark.id })
- }
- >
- <Trash2 className="mr-2 size-4" />
- <span>Delete</span>
- </DropdownMenuItem>
- </DropdownMenuContent>
- </DropdownMenu>
- </>
- );
-}