aboutsummaryrefslogtreecommitdiffstats
path: root/packages/web/app/dashboard/bookmarks/components/BookmarksGrid.tsx
diff options
context:
space:
mode:
authorMohamedBassem <me@mbassem.com>2024-02-09 01:50:35 +0000
committerMohamedBassem <me@mbassem.com>2024-02-09 01:57:31 +0000
commit08a5694e451218f1bcb2ad9eb42fd93250afbb96 (patch)
tree2cc2351f26b0ab98268db4bc463c0c3aa3f78a3b /packages/web/app/dashboard/bookmarks/components/BookmarksGrid.tsx
parentc5bfa5000f178475d0b019b5a960916134b2ecfb (diff)
downloadkarakeep-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.tsx27
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>
+ );
+}