aboutsummaryrefslogtreecommitdiff
path: root/apps/web/src/app
diff options
context:
space:
mode:
authorDhravya <[email protected]>2024-04-05 18:02:00 -0700
committerDhravya <[email protected]>2024-04-05 18:02:00 -0700
commit739d7c380884ae47e4de082fbc4ef9c5d6ebe7e0 (patch)
treec557c993057ee6c51392781b68d78cbf25217782 /apps/web/src/app
parentmake ext work with dev mode (diff)
downloadsupermemory-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.tsx11
-rw-r--r--apps/web/src/app/api/store/route.ts34
-rw-r--r--apps/web/src/app/page.tsx22
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">