diff options
| author | Dhravya <[email protected]> | 2024-04-05 18:02:00 -0700 |
|---|---|---|
| committer | Dhravya <[email protected]> | 2024-04-05 18:02:00 -0700 |
| commit | 739d7c380884ae47e4de082fbc4ef9c5d6ebe7e0 (patch) | |
| tree | c557c993057ee6c51392781b68d78cbf25217782 /apps/web/src/app | |
| parent | make ext work with dev mode (diff) | |
| download | supermemory-739d7c380884ae47e4de082fbc4ef9c5d6ebe7e0.tar.xz supermemory-739d7c380884ae47e4de082fbc4ef9c5d6ebe7e0.zip | |
(NEEDS MIGRATION)made sidebar functional
Diffstat (limited to 'apps/web/src/app')
| -rw-r--r-- | apps/web/src/app/MessagePoster.tsx | 11 | ||||
| -rw-r--r-- | apps/web/src/app/api/store/route.ts | 34 | ||||
| -rw-r--r-- | apps/web/src/app/page.tsx | 22 |
3 files changed, 59 insertions, 8 deletions
diff --git a/apps/web/src/app/MessagePoster.tsx b/apps/web/src/app/MessagePoster.tsx index 3d0bbe7e..64dc89fd 100644 --- a/apps/web/src/app/MessagePoster.tsx +++ b/apps/web/src/app/MessagePoster.tsx @@ -8,7 +8,16 @@ function MessagePoster({ jwt }: { jwt: string }) { window.postMessage({ jwt }, '*'); }, [jwt]); - return null; + return ( + <button + onClick={() => { + if (typeof window === 'undefined') return; + window.postMessage({ jwt }, '*'); + }} + > + Send message + </button> + ); } export default MessagePoster; diff --git a/apps/web/src/app/api/store/route.ts b/apps/web/src/app/api/store/route.ts index 3a4f7e27..06db08b9 100644 --- a/apps/web/src/app/api/store/route.ts +++ b/apps/web/src/app/api/store/route.ts @@ -1,6 +1,6 @@ import { db } from "@/server/db"; -import { eq } from "drizzle-orm"; -import { sessions, storedContent, users } from "@/server/db/schema"; +import { and, eq } from "drizzle-orm"; +import { contentToSpace, sessions, storedContent, users, space } from "@/server/db/schema"; import { type NextRequest, NextResponse } from "next/server"; import { env } from "@/env"; import { getMetaData } from "@/server/helpers"; @@ -31,6 +31,7 @@ export async function POST(req: NextRequest) { const data = await req.json() as { pageContent: string, url: string, + space?: string }; const metadata = await getMetaData(data.url); @@ -38,6 +39,12 @@ export async function POST(req: NextRequest) { let id: number | undefined = undefined; + let storeToSpace = data.space + + if (!storeToSpace) { + storeToSpace = 'all' + } + const storedContentId = await db.insert(storedContent).values({ content: data.pageContent, title: metadata.title, @@ -46,12 +53,33 @@ export async function POST(req: NextRequest) { baseUrl: metadata.baseUrl, image: metadata.image, savedAt: new Date(), - space: "all", user: session.user.id }) id = storedContentId.meta.last_row_id; + if (!id) { + return NextResponse.json({ message: "Error", error: "Error in CF function" }, { status: 500 }); + } + + let spaceID = 0; + + const spaceData = await db.select().from(space).where(and(eq(space.name, storeToSpace), eq(space.user, session.user.id))).limit(1) + spaceID = spaceData[0]?.id + + if (!spaceData || spaceData.length === 0) { + const spaceId = await db.insert(space).values({ + name: storeToSpace, + user: session.user.id + }) + spaceID = spaceId.meta.last_row_id; + } + + await db.insert(contentToSpace).values({ + contentId: id as number, + spaceId: spaceID + }) + const res = await Promise.race([ fetch("https://cf-ai-backend.dhravya.workers.dev/add", { method: "POST", diff --git a/apps/web/src/app/page.tsx b/apps/web/src/app/page.tsx index d1d47ae5..c25de8c7 100644 --- a/apps/web/src/app/page.tsx +++ b/apps/web/src/app/page.tsx @@ -1,5 +1,12 @@ import { db } from '@/server/db'; -import { sessions, storedContent, users } from '@/server/db/schema'; +import { + contentToSpace, + sessions, + space, + StoredContent, + storedContent, + users, +} from '@/server/db/schema'; import { eq, inArray } from 'drizzle-orm'; import { cookies, headers } from 'next/headers'; import { redirect } from 'next/navigation'; @@ -47,12 +54,19 @@ export default async function Home() { return redirect('/api/auth/signin'); } - const posts = await db + // Fetch all content for the user + const contents = await db .select() .from(storedContent) - .where(eq(storedContent.user, userData.id)); + .where(eq(storedContent.user, userData.id)) + .all(); - const collectedSpaces = transformContent(posts); + console.log(contents); + + const collectedSpaces = + contents.length > 0 ? await transformContent(contents) : []; + + console.log('collected', collectedSpaces); return ( <div className="flex w-screen"> |