diff options
| author | MohamedBassem <me@mbassem.com> | 2024-04-24 14:52:57 +0100 |
|---|---|---|
| committer | MohamedBassem <me@mbassem.com> | 2024-04-24 15:07:18 +0100 |
| commit | ec15d20abac65bfda6c8e6396ce9fc2061f5067a (patch) | |
| tree | 5c7763cef1bf9e65667cde12ffc7a62299898542 /apps/web/app/dashboard | |
| parent | 4804f98e46fe10744b1632841e60302926a0a24a (diff) | |
| download | karakeep-ec15d20abac65bfda6c8e6396ce9fc2061f5067a.tar.zst | |
ui(web): Show bookmark URL when maximizing a bookmark
Diffstat (limited to 'apps/web/app/dashboard')
| -rw-r--r-- | apps/web/app/dashboard/@modal/(.)preview/[bookmarkId]/page.tsx | 35 | ||||
| -rw-r--r-- | apps/web/app/dashboard/@modal/[...catchAll]/page.tsx | 3 | ||||
| -rw-r--r-- | apps/web/app/dashboard/@modal/default.tsx | 3 | ||||
| -rw-r--r-- | apps/web/app/dashboard/layout.tsx | 3 | ||||
| -rw-r--r-- | apps/web/app/dashboard/preview/[bookmarkId]/page.tsx | 20 |
5 files changed, 60 insertions, 4 deletions
diff --git a/apps/web/app/dashboard/@modal/(.)preview/[bookmarkId]/page.tsx b/apps/web/app/dashboard/@modal/(.)preview/[bookmarkId]/page.tsx new file mode 100644 index 00000000..432e7a6c --- /dev/null +++ b/apps/web/app/dashboard/@modal/(.)preview/[bookmarkId]/page.tsx @@ -0,0 +1,35 @@ +"use client"; + +import { useState } from "react"; +import { useRouter } from "next/navigation"; +import BookmarkPreview from "@/components/dashboard/preview/BookmarkPreview"; +import { Dialog, DialogContent } from "@/components/ui/dialog"; + +export default function BookmarkPreviewPage({ + params, +}: { + params: { bookmarkId: string }; +}) { + const router = useRouter(); + + const [open, setOpen] = useState(true); + + const setOpenWithRouter = (value: boolean) => { + setOpen(value); + if (!value) { + router.back(); + } + }; + + return ( + <Dialog open={open} onOpenChange={setOpenWithRouter}> + <DialogContent + className="h-[90%] max-w-[90%] overflow-hidden p-0" + hideCloseBtn={true} + onOpenAutoFocus={(e) => e.preventDefault()} + > + <BookmarkPreview bookmarkId={params.bookmarkId} /> + </DialogContent> + </Dialog> + ); +} diff --git a/apps/web/app/dashboard/@modal/[...catchAll]/page.tsx b/apps/web/app/dashboard/@modal/[...catchAll]/page.tsx new file mode 100644 index 00000000..1fd97c20 --- /dev/null +++ b/apps/web/app/dashboard/@modal/[...catchAll]/page.tsx @@ -0,0 +1,3 @@ +export default function CatchAll() { + return null; +} diff --git a/apps/web/app/dashboard/@modal/default.tsx b/apps/web/app/dashboard/@modal/default.tsx new file mode 100644 index 00000000..6ddf1b76 --- /dev/null +++ b/apps/web/app/dashboard/@modal/default.tsx @@ -0,0 +1,3 @@ +export default function Default() { + return null; +} diff --git a/apps/web/app/dashboard/layout.tsx b/apps/web/app/dashboard/layout.tsx index 3b6908f8..23c379cb 100644 --- a/apps/web/app/dashboard/layout.tsx +++ b/apps/web/app/dashboard/layout.tsx @@ -7,8 +7,10 @@ import serverConfig from "@hoarder/shared/config"; export default async function Dashboard({ children, + modal, }: Readonly<{ children: React.ReactNode; + modal: React.ReactNode; }>) { return ( <div className="flex min-h-screen w-screen flex-col sm:h-screen sm:flex-row"> @@ -21,6 +23,7 @@ export default async function Dashboard({ <MobileSidebar /> <Separator /> </div> + {modal} <div className="container min-h-screen p-4">{children}</div> </main> </div> diff --git a/apps/web/app/dashboard/preview/[bookmarkId]/page.tsx b/apps/web/app/dashboard/preview/[bookmarkId]/page.tsx index 6cac7377..236f5447 100644 --- a/apps/web/app/dashboard/preview/[bookmarkId]/page.tsx +++ b/apps/web/app/dashboard/preview/[bookmarkId]/page.tsx @@ -1,18 +1,30 @@ +import { notFound } from "next/navigation"; import BookmarkPreview from "@/components/dashboard/preview/BookmarkPreview"; import { api } from "@/server/api/client"; +import { TRPCError } from "@trpc/server"; export default async function BookmarkPreviewPage({ params, }: { params: { bookmarkId: string }; }) { - const bookmark = await api.bookmarks.getBookmark({ - bookmarkId: params.bookmarkId, - }); + let bookmark; + try { + bookmark = await api.bookmarks.getBookmark({ + bookmarkId: params.bookmarkId, + }); + } catch (e) { + if (e instanceof TRPCError) { + if (e.code === "NOT_FOUND") { + notFound(); + } + } + throw e; + } return ( <div className="max-h-screen"> - <BookmarkPreview initialData={bookmark} /> + <BookmarkPreview bookmarkId={bookmark.id} initialData={bookmark} /> </div> ); } |
