diff options
| author | MohamedBassem <me@mbassem.com> | 2024-02-09 01:50:35 +0000 |
|---|---|---|
| committer | MohamedBassem <me@mbassem.com> | 2024-02-09 01:57:31 +0000 |
| commit | 08a5694e451218f1bcb2ad9eb42fd93250afbb96 (patch) | |
| tree | 2cc2351f26b0ab98268db4bc463c0c3aa3f78a3b /packages/web/app/dashboard/bookmarks/components/BookmarksGrid.tsx | |
| parent | c5bfa5000f178475d0b019b5a960916134b2ecfb (diff) | |
| download | karakeep-08a5694e451218f1bcb2ad9eb42fd93250afbb96.tar.zst | |
[refactor] Extract the bookmark model to be a high level model to support other type of bookmarks
Diffstat (limited to 'packages/web/app/dashboard/bookmarks/components/BookmarksGrid.tsx')
| -rw-r--r-- | packages/web/app/dashboard/bookmarks/components/BookmarksGrid.tsx | 27 |
1 files changed, 27 insertions, 0 deletions
diff --git a/packages/web/app/dashboard/bookmarks/components/BookmarksGrid.tsx b/packages/web/app/dashboard/bookmarks/components/BookmarksGrid.tsx new file mode 100644 index 00000000..2b6b19b6 --- /dev/null +++ b/packages/web/app/dashboard/bookmarks/components/BookmarksGrid.tsx @@ -0,0 +1,27 @@ +import { getServerSession } from "next-auth"; +import { redirect } from "next/navigation"; +import { authOptions } from "@/lib/auth"; +import { getBookmarks } from "@/lib/services/bookmarks"; +import LinkCard from "./LinkCard"; +import { ZBookmark } from "@/lib/types/api/bookmarks"; + +function renderBookmark(bookmark: ZBookmark) { + switch (bookmark.content.type) { + case "link": + return <LinkCard key={bookmark.id} bookmark={bookmark} />; + } +} + +export default async function BookmarksGrid() { + const session = await getServerSession(authOptions); + if (!session) { + redirect("/"); + } + const bookmarks = await getBookmarks(session.user.id); + + return ( + <div className="container grid gap-4 grid-cols-1 sm:grid-cols-2 md:grid-cols-3 lg:grid-cols-4"> + {bookmarks.map((b) => renderBookmark(b))} + </div> + ); +} |
