diff options
| author | Yash <[email protected]> | 2024-04-05 08:27:54 +0000 |
|---|---|---|
| committer | Yash <[email protected]> | 2024-04-05 08:27:54 +0000 |
| commit | 97988798bdc8b225ec6dbe7b0a725bfde6059157 (patch) | |
| tree | 3b673f17600332f36747f381b1ad83acb7baff9a /apps/web/src/app | |
| parent | context added (diff) | |
| parent | make ext work with dev mode (diff) | |
| download | supermemory-97988798bdc8b225ec6dbe7b0a725bfde6059157.tar.xz supermemory-97988798bdc8b225ec6dbe7b0a725bfde6059157.zip | |
Merge branch 'new-ui' of https://github.com/Dhravya/supermemory into new-ui
Diffstat (limited to 'apps/web/src/app')
| -rw-r--r-- | apps/web/src/app/MessagePoster.tsx | 6 | ||||
| -rw-r--r-- | apps/web/src/app/api/store/route.ts | 43 | ||||
| -rw-r--r-- | apps/web/src/app/page.tsx | 109 | ||||
| -rw-r--r-- | apps/web/src/app/ui/content.tsx | 2 | ||||
| -rw-r--r-- | apps/web/src/app/ui/page.tsx | 18 |
5 files changed, 47 insertions, 131 deletions
diff --git a/apps/web/src/app/MessagePoster.tsx b/apps/web/src/app/MessagePoster.tsx index 76bbc4dd..3d0bbe7e 100644 --- a/apps/web/src/app/MessagePoster.tsx +++ b/apps/web/src/app/MessagePoster.tsx @@ -8,11 +8,7 @@ function MessagePoster({ jwt }: { jwt: string }) { window.postMessage({ jwt }, '*'); }, [jwt]); - return ( - <button onClick={() => window.postMessage({ jwt }, '*')}> - Send auth token to extension - </button> - ); + return null; } export default MessagePoster; diff --git a/apps/web/src/app/api/store/route.ts b/apps/web/src/app/api/store/route.ts index 46e4cdfb..3a4f7e27 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, userStoredContent, users } from "@/server/db/schema"; +import { sessions, storedContent, users } from "@/server/db/schema"; import { type NextRequest, NextResponse } from "next/server"; import { env } from "@/env"; import { getMetaData } from "@/server/helpers"; @@ -38,32 +38,19 @@ export async function POST(req: NextRequest) { let id: number | undefined = undefined; - const storedCont = await db.select().from(storedContent).where(eq(storedContent.url, data.url)).limit(1) - - if (storedCont.length > 0) { - id = storedCont[0].id; - } else { - const storedContentId = await db.insert(storedContent).values({ - content: data.pageContent, - title: metadata.title, - description: metadata.description, - url: data.url, - baseUrl: metadata.baseUrl, - image: metadata.image, - savedAt: new Date() - }) - - id = storedContentId.meta.last_row_id; - } + const storedContentId = await db.insert(storedContent).values({ + content: data.pageContent, + title: metadata.title, + description: metadata.description, + url: data.url, + baseUrl: metadata.baseUrl, + image: metadata.image, + savedAt: new Date(), + space: "all", + user: session.user.id + }) - try { - await db.insert(userStoredContent).values({ - userId: session.user.id, - contentId: id - }); - } catch (e) { - console.log(e); - } + id = storedContentId.meta.last_row_id; const res = await Promise.race([ fetch("https://cf-ai-backend.dhravya.workers.dev/add", { @@ -78,10 +65,6 @@ export async function POST(req: NextRequest) { ) ]) as Response - const _ = await res.text(); - - console.log(_) - if (res.status !== 200) { return NextResponse.json({ message: "Error", error: "Error in CF function" }, { status: 500 }); } diff --git a/apps/web/src/app/page.tsx b/apps/web/src/app/page.tsx index 2522a25f..d1d47ae5 100644 --- a/apps/web/src/app/page.tsx +++ b/apps/web/src/app/page.tsx @@ -1,17 +1,12 @@ -import { CardContent, Card } from '@/components/ui/card'; import { db } from '@/server/db'; -import { - sessions, - storedContent, - userStoredContent, - users, -} from '@/server/db/schema'; +import { sessions, storedContent, users } from '@/server/db/schema'; import { eq, inArray } from 'drizzle-orm'; import { cookies, headers } from 'next/headers'; import { redirect } from 'next/navigation'; -import Image from 'next/image'; -import QueryAI from '@/components/QueryAI'; +import Sidebar from '@/components/Sidebar/index'; +import Main from '@/components/Main'; import MessagePoster from './MessagePoster'; +import { transformContent } from '../../types/memory'; export const runtime = 'edge'; @@ -26,6 +21,13 @@ export default async function Home() { return redirect('/api/auth/signin'); } + const selectedItem = cookies().get('selectedItem')?.value; + + const setSelectedItem = async (selectedItem: string | null) => { + 'use server'; + cookies().set('selectedItem', selectedItem!); + }; + const session = await db .select() .from(sessions) @@ -35,101 +37,28 @@ export default async function Home() { return redirect('/api/auth/signin'); } - const userContent = await db - .select() - .from(userStoredContent) - .where(eq(userStoredContent.userId, session[0].userId)); - - const userData = await db + const [userData] = await db .select() .from(users) .where(eq(users.id, session[0].userId)) .limit(1); - if (!userData || userData.length === 0) { + if (!userData) { return redirect('/api/auth/signin'); } - const listOfContent = - userContent.map((content) => content.contentId).length > 0 - ? userContent.map((content) => content.contentId) - : [1]; - const posts = await db .select() .from(storedContent) - .where(inArray(storedContent.id, listOfContent)); + .where(eq(storedContent.user, userData.id)); - return ( - <div className="max-w-7xl mx-auto px-4 sm:px-6 lg:px-8 flex flex-col items-center"> - <div className="flex flex-col mt-16"> - <div className="flex flex-col md:flex-row gap-4"> - <Image - className="rounded-2xl" - src="/logo.png" - width={120} - height={120} - alt="logo" - /> - <div className="mt-4 text-gray-400 max-w-md"> - <h1 className="text-xl font-bold text-white">SuperMemory</h1> - Remember that one thing you read a while ago? We got you covered. - Add the extension, click a button and I'll remember it for you.{' '} - <a - href="https://github.com/dhravyashah/anycontext" - target="_blank" - rel="noreferrer" - className="text-sky-500" - > - Get the Extension - </a> - </div> - </div> - </div> - - <QueryAI /> + const collectedSpaces = transformContent(posts); + return ( + <div className="flex w-screen"> + <Sidebar selectChange={setSelectedItem} spaces={collectedSpaces} /> + <Main sidebarOpen={selectedItem !== null} /> <MessagePoster jwt={token} /> - - {/* TODO: LABEL THE WEBSITES USING A CLASSIFICATION MODEL */} - {/* <nav className="flex space-x-2 my-4"> - <Badge variant="secondary">Technology (2)</Badge> - <Badge variant="secondary">Business & Finance (1)</Badge> - <Badge variant="secondary">Education & Career (1)</Badge> - </nav> */} - <main className="grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-6 mt-16"> - {posts.reverse().map((post) => ( - <a - href={post.url} - target="_blank" - rel="noreferrer" - className="hover:scale-105 ease-in-out transition-transform duration-300" - > - <Card className="w-full"> - <img - alt="Not found" - className="w-full h-48 object-cover rounded-md" - height="200" - src={ - post.image && post.image !== 'Image not found' - ? post.image - : '/placeholder.svg' - } - style={{ - aspectRatio: '300/200', - objectFit: 'cover', - }} - width="300" - /> - <CardContent> - <h3 className="text-lg font-semibold mt-4">{post.title}</h3> - <p className="text-sm text-gray-600">{post.baseUrl}</p> - <p className="text-sm">{post.description}</p> - </CardContent> - </Card> - </a> - ))} - </main> </div> ); } diff --git a/apps/web/src/app/ui/content.tsx b/apps/web/src/app/ui/content.tsx index 6e28eaf8..16f66394 100644 --- a/apps/web/src/app/ui/content.tsx +++ b/apps/web/src/app/ui/content.tsx @@ -8,7 +8,7 @@ export default function Content() { return ( <div className="flex w-screen"> - <Sidebar onSelectChange={setSelectedItem} /> + {/* <Sidebar selectChange={setSelectedItem} /> */} <Main sidebarOpen={selectedItem !== null} /> </div> ); diff --git a/apps/web/src/app/ui/page.tsx b/apps/web/src/app/ui/page.tsx index 35175334..ec1998b6 100644 --- a/apps/web/src/app/ui/page.tsx +++ b/apps/web/src/app/ui/page.tsx @@ -1,10 +1,18 @@ -import { MemoryProvider } from "@/contexts/MemoryContext"; -import Content from "./content"; +import Main from "@/components/Main"; +import Sidebar from "@/components/Sidebar/index"; +import { cookies } from "next/headers"; export default function Home() { + const selectedItem = cookies().get("selectedItem")?.value; + const setSelectedItem = async (selectedItem: string | null) => { + "use server"; + cookies().set("selectedItem", selectedItem!); + }; + return ( - <MemoryProvider spaces={[]}> - <Content /> - </MemoryProvider> + <div className="flex w-screen"> + {/* <Sidebar selectChange={setSelectedItem} spaces={spaces} /> */} + <Main sidebarOpen={selectedItem !== null} /> + </div> ); } |