diff options
| author | Dhravya <[email protected]> | 2024-06-29 12:57:40 -0500 |
|---|---|---|
| committer | Dhravya <[email protected]> | 2024-06-29 12:57:40 -0500 |
| commit | 3dfdb83f922acf24a724217777611deafc3b4e56 (patch) | |
| tree | 6bd4dbba650bce295bdf4af9e49bb141922c1ebf /apps/web | |
| parent | schema (diff) | |
| download | supermemory-3dfdb83f922acf24a724217777611deafc3b4e56.tar.xz supermemory-3dfdb83f922acf24a724217777611deafc3b4e56.zip | |
memories page
Diffstat (limited to 'apps/web')
| -rw-r--r-- | apps/web/app/(dash)/memories/page.tsx | 45 | ||||
| -rw-r--r-- | apps/web/app/(dash)/menu.tsx | 3 | ||||
| -rw-r--r-- | apps/web/migrations/0000_classy_speed_demon.sql | 9 | ||||
| -rw-r--r-- | apps/web/migrations/0001_index_telegram_id.sql | 9 | ||||
| -rw-r--r-- | apps/web/migrations/0001_remarkable_avengers.sql | 4 | ||||
| -rw-r--r-- | apps/web/migrations/000_setup.sql | 108 | ||||
| -rw-r--r-- | apps/web/server/db/schema.ts | 1 |
7 files changed, 49 insertions, 130 deletions
diff --git a/apps/web/app/(dash)/memories/page.tsx b/apps/web/app/(dash)/memories/page.tsx index ca0417b6..74dd6d34 100644 --- a/apps/web/app/(dash)/memories/page.tsx +++ b/apps/web/app/(dash)/memories/page.tsx @@ -6,7 +6,7 @@ import { Content, StoredSpace } from "@/server/db/schema"; import { NextIcon, SearchIcon, UrlIcon } from "@repo/ui/icons"; import Image from "next/image"; import React, { useEffect, useMemo, useState } from "react"; -import Masonry, { ResponsiveMasonry } from "react-responsive-masonry"; +import Masonry from "react-layout-masonry"; function Page() { const [filter, setFilter] = useState("All"); @@ -53,19 +53,44 @@ function Page() { }, []); return ( - <div className="max-w-3xl min-w-3xl py-36 h-full flex mx-auto w-full flex-col gap-12"> + <div className="max-w-3xl min-w-3xl py-36 h-full flex mx-auto w-full flex-col gap-6"> <h2 className="text-white w-full font-medium text-2xl text-left"> My Memories </h2> - <div className="flex flex-col gap-4"> - <ResponsiveMasonry columnsCountBreakPoints={{ 350: 1, 750: 2, 900: 3 }}> - <Masonry> - <div>Item 1</div> - <div>Item 2</div> - </Masonry> - </ResponsiveMasonry> - </div> + <Filters setFilter={setFilter} filter={filter} /> + + <Masonry + className="mt-6" + columns={{ 640: 1, 768: 2, 1024: 3, 1280: 4 }} + gap={4} + > + {sortedItems.map((item) => { + if (filter !== "All" && item.item !== filter) return null; + + if (item.item === "memory") { + return ( + <LinkComponent + type={(item.data as Content).type ?? "note"} + content={(item.data as Content).content} + title={(item.data as Content).title ?? "Untitled"} + url={(item.data as Content).url} + /> + ); + } + + if (item.item === "space") { + return ( + <TabComponent + title={(item.data as StoredSpace).name} + description={`${(item.data as StoredSpace).numItems} memories`} + /> + ); + } + + return null; + })} + </Masonry> </div> ); } diff --git a/apps/web/app/(dash)/menu.tsx b/apps/web/app/(dash)/menu.tsx index d636c8e1..340c7e16 100644 --- a/apps/web/app/(dash)/menu.tsx +++ b/apps/web/app/(dash)/menu.tsx @@ -270,8 +270,9 @@ function Menu() { { name: spaceName, id: creationTask.data!, - createdAt: new Date().toISOString(), + createdAt: new Date(), user: null, + numItems: 0, }, ]); setSelectedSpaces((prev) => [ diff --git a/apps/web/migrations/0000_classy_speed_demon.sql b/apps/web/migrations/0000_classy_speed_demon.sql index a1885925..a4855ec9 100644 --- a/apps/web/migrations/0000_classy_speed_demon.sql +++ b/apps/web/migrations/0000_classy_speed_demon.sql @@ -63,7 +63,6 @@ CREATE TABLE `space` ( `id` integer PRIMARY KEY AUTOINCREMENT NOT NULL, `name` text DEFAULT 'none' NOT NULL, `user` text(255), - `createdAt` integer NOT NULL, FOREIGN KEY (`user`) REFERENCES `user`(`id`) ON UPDATE no action ON DELETE cascade ); --> statement-breakpoint @@ -87,8 +86,7 @@ CREATE TABLE `user` ( `name` text, `email` text NOT NULL, `emailVerified` integer, - `image` text, - `telegramId` text + `image` text ); --> statement-breakpoint CREATE TABLE `verificationToken` ( @@ -107,7 +105,4 @@ CREATE INDEX `spaces_user_idx` ON `space` (`user`);--> statement-breakpoint CREATE INDEX `storedContent_url_idx` ON `storedContent` (`url`);--> statement-breakpoint CREATE INDEX `storedContent_savedAt_idx` ON `storedContent` (`savedAt`);--> statement-breakpoint CREATE INDEX `storedContent_title_idx` ON `storedContent` (`title`);--> statement-breakpoint -CREATE INDEX `storedContent_user_idx` ON `storedContent` (`user`);--> statement-breakpoint -CREATE INDEX `users_email_idx` ON `user` (`email`);--> statement-breakpoint -CREATE INDEX `users_telegram_idx` ON `user` (`telegramId`);--> statement-breakpoint -CREATE INDEX `users_id_idx` ON `user` (`id`);
\ No newline at end of file +CREATE INDEX `storedContent_user_idx` ON `storedContent` (`user`); diff --git a/apps/web/migrations/0001_index_telegram_id.sql b/apps/web/migrations/0001_index_telegram_id.sql new file mode 100644 index 00000000..4b3aa44a --- /dev/null +++ b/apps/web/migrations/0001_index_telegram_id.sql @@ -0,0 +1,9 @@ +ALTER TABLE `space` ADD COLUMN `createdAt` integer; +ALTER TABLE `space` ADD COLUMN `numItems` integer NOT NULL DEFAULT 0; +--> statement-breakpoint +ALTER TABLE `user` ADD COLUMN `telegramId` text; + +CREATE INDEX `storedContent_user_idx` ON `storedContent` (`user`);--> statement-breakpoint +CREATE INDEX `users_email_idx` ON `user` (`email`);--> statement-breakpoint +CREATE INDEX `users_telegram_idx` ON `user` (`telegramId`);--> statement-breakpoint +CREATE INDEX `users_id_idx` ON `user` (`id`);
\ No newline at end of file diff --git a/apps/web/migrations/0001_remarkable_avengers.sql b/apps/web/migrations/0001_remarkable_avengers.sql deleted file mode 100644 index cb2fa422..00000000 --- a/apps/web/migrations/0001_remarkable_avengers.sql +++ /dev/null @@ -1,4 +0,0 @@ -ALTER TABLE `user` ADD `telegramId` text;--> statement-breakpoint -CREATE INDEX `users_email_idx` ON `user` (`email`);--> statement-breakpoint -CREATE INDEX `users_telegram_idx` ON `user` (`telegramId`);--> statement-breakpoint -CREATE INDEX `users_id_idx` ON `user` (`id`);
\ No newline at end of file diff --git a/apps/web/migrations/000_setup.sql b/apps/web/migrations/000_setup.sql deleted file mode 100644 index a4855ec9..00000000 --- a/apps/web/migrations/000_setup.sql +++ /dev/null @@ -1,108 +0,0 @@ -CREATE TABLE `account` ( - `userId` text NOT NULL, - `type` text NOT NULL, - `provider` text NOT NULL, - `providerAccountId` text NOT NULL, - `refresh_token` text, - `access_token` text, - `expires_at` integer, - `token_type` text, - `scope` text, - `id_token` text, - `session_state` text, - PRIMARY KEY(`provider`, `providerAccountId`), - FOREIGN KEY (`userId`) REFERENCES `user`(`id`) ON UPDATE no action ON DELETE cascade -); ---> statement-breakpoint -CREATE TABLE `authenticator` ( - `credentialID` text NOT NULL, - `userId` text NOT NULL, - `providerAccountId` text NOT NULL, - `credentialPublicKey` text NOT NULL, - `counter` integer NOT NULL, - `credentialDeviceType` text NOT NULL, - `credentialBackedUp` integer NOT NULL, - `transports` text, - PRIMARY KEY(`credentialID`, `userId`), - FOREIGN KEY (`userId`) REFERENCES `user`(`id`) ON UPDATE no action ON DELETE cascade -); ---> statement-breakpoint -CREATE TABLE `chatHistory` ( - `id` integer PRIMARY KEY AUTOINCREMENT NOT NULL, - `threadId` text NOT NULL, - `question` text NOT NULL, - `answerParts` text, - `answerSources` text, - `answerJustification` text, - FOREIGN KEY (`threadId`) REFERENCES `chatThread`(`id`) ON UPDATE no action ON DELETE cascade -); ---> statement-breakpoint -CREATE TABLE `chatThread` ( - `id` text PRIMARY KEY NOT NULL, - `firstMessage` text NOT NULL, - `userId` text NOT NULL, - FOREIGN KEY (`userId`) REFERENCES `user`(`id`) ON UPDATE no action ON DELETE cascade -); ---> statement-breakpoint -CREATE TABLE `contentToSpace` ( - `contentId` integer NOT NULL, - `spaceId` integer NOT NULL, - PRIMARY KEY(`contentId`, `spaceId`), - FOREIGN KEY (`contentId`) REFERENCES `storedContent`(`id`) ON UPDATE no action ON DELETE cascade, - FOREIGN KEY (`spaceId`) REFERENCES `space`(`id`) ON UPDATE no action ON DELETE cascade -); ---> statement-breakpoint -CREATE TABLE `session` ( - `sessionToken` text PRIMARY KEY NOT NULL, - `userId` text NOT NULL, - `expires` integer NOT NULL, - FOREIGN KEY (`userId`) REFERENCES `user`(`id`) ON UPDATE no action ON DELETE cascade -); ---> statement-breakpoint -CREATE TABLE `space` ( - `id` integer PRIMARY KEY AUTOINCREMENT NOT NULL, - `name` text DEFAULT 'none' NOT NULL, - `user` text(255), - FOREIGN KEY (`user`) REFERENCES `user`(`id`) ON UPDATE no action ON DELETE cascade -); ---> statement-breakpoint -CREATE TABLE `storedContent` ( - `id` integer PRIMARY KEY AUTOINCREMENT NOT NULL, - `content` text NOT NULL, - `title` text(255), - `description` text(255), - `url` text NOT NULL, - `savedAt` integer NOT NULL, - `baseUrl` text(255), - `ogImage` text(255), - `type` text DEFAULT 'page', - `image` text(255), - `user` text, - FOREIGN KEY (`user`) REFERENCES `user`(`id`) ON UPDATE no action ON DELETE cascade -); ---> statement-breakpoint -CREATE TABLE `user` ( - `id` text PRIMARY KEY NOT NULL, - `name` text, - `email` text NOT NULL, - `emailVerified` integer, - `image` text -); ---> statement-breakpoint -CREATE TABLE `verificationToken` ( - `identifier` text NOT NULL, - `token` text NOT NULL, - `expires` integer NOT NULL, - PRIMARY KEY(`identifier`, `token`) -); ---> statement-breakpoint -CREATE UNIQUE INDEX `authenticator_credentialID_unique` ON `authenticator` (`credentialID`);--> statement-breakpoint -CREATE INDEX `chatHistory_thread_idx` ON `chatHistory` (`threadId`);--> statement-breakpoint -CREATE INDEX `chatThread_user_idx` ON `chatThread` (`userId`);--> statement-breakpoint -CREATE UNIQUE INDEX `space_name_unique` ON `space` (`name`);--> statement-breakpoint -CREATE INDEX `spaces_name_idx` ON `space` (`name`);--> statement-breakpoint -CREATE INDEX `spaces_user_idx` ON `space` (`user`);--> statement-breakpoint -CREATE INDEX `storedContent_url_idx` ON `storedContent` (`url`);--> statement-breakpoint -CREATE INDEX `storedContent_savedAt_idx` ON `storedContent` (`savedAt`);--> statement-breakpoint -CREATE INDEX `storedContent_title_idx` ON `storedContent` (`title`);--> statement-breakpoint -CREATE INDEX `storedContent_user_idx` ON `storedContent` (`user`); diff --git a/apps/web/server/db/schema.ts b/apps/web/server/db/schema.ts index b5d9bbdb..e1b94cf3 100644 --- a/apps/web/server/db/schema.ts +++ b/apps/web/server/db/schema.ts @@ -152,6 +152,7 @@ export const space = createTable( onDelete: "cascade", }), createdAt: int("createdAt", { mode: "timestamp" }).notNull(), + numItems: integer("numItems").notNull().default(0), }, (space) => ({ nameIdx: index("spaces_name_idx").on(space.name), |