From af74e248bd3d1637d0b07d58ef77ee9969314ba1 Mon Sep 17 00:00:00 2001 From: Juan Cruz Martinez Date: Thu, 10 Apr 2025 11:51:52 +0200 Subject: [PATCH 1/5] fix: fix error when visiting pages that do not exist --- app/(marketing)/[slug]/page.tsx | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) diff --git a/app/(marketing)/[slug]/page.tsx b/app/(marketing)/[slug]/page.tsx index 8dbb352..996c7fe 100644 --- a/app/(marketing)/[slug]/page.tsx +++ b/app/(marketing)/[slug]/page.tsx @@ -29,6 +29,7 @@ export async function generateMetadata({ params: Promise<{ slug: string }>; }) { const { slug } = await params; + console.log("Generating metadata for slug:", slug); const filePath = path.join( process.cwd(), "content/marketing/", @@ -57,6 +58,7 @@ export default async function MarketingPage({ params: Promise<{ slug: string }>; }) { const { slug } = await params; + console.log("Generating page for slug:", slug); const filePath = path.join( process.cwd(), "content/marketing/", @@ -94,11 +96,6 @@ export default async function MarketingPage({ ); } catch (error) { - Sentry.captureException(error); - console.error( - "Error reading file, this should have never happened:", - error, - ); notFound(); } } From bc1cb9c4b1daae66c115fdbbcc0dbb8257439fa9 Mon Sep 17 00:00:00 2001 From: Juan Cruz Martinez Date: Thu, 10 Apr 2025 11:54:48 +0200 Subject: [PATCH 2/5] fix build --- app/(marketing)/[slug]/page.tsx | 1 - 1 file changed, 1 deletion(-) diff --git a/app/(marketing)/[slug]/page.tsx b/app/(marketing)/[slug]/page.tsx index 996c7fe..00ec2a7 100644 --- a/app/(marketing)/[slug]/page.tsx +++ b/app/(marketing)/[slug]/page.tsx @@ -2,7 +2,6 @@ import fs from "fs"; import path from "path"; import matter from "gray-matter"; import { notFound } from "next/navigation"; -import * as Sentry from "@sentry/nextjs"; import MarkdownContent from "@/components/markdown-content"; export const dynamicParams = false; From 55587e2d2dacb4cafa36168d9dfa5bee6d6203e3 Mon Sep 17 00:00:00 2001 From: Juan Cruz Martinez Date: Thu, 10 Apr 2025 11:58:34 +0200 Subject: [PATCH 3/5] fix build --- app/(marketing)/[slug]/page.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/(marketing)/[slug]/page.tsx b/app/(marketing)/[slug]/page.tsx index 00ec2a7..40f0449 100644 --- a/app/(marketing)/[slug]/page.tsx +++ b/app/(marketing)/[slug]/page.tsx @@ -94,7 +94,7 @@ export default async function MarketingPage({ ); - } catch (error) { + } catch { notFound(); } } From 7d3ae5d4b9eff1bfe25dd210d6657a950632b373 Mon Sep 17 00:00:00 2001 From: Juan Cruz Martinez Date: Thu, 10 Apr 2025 12:19:24 +0200 Subject: [PATCH 4/5] feat: make pwa --- app/(marketing)/[slug]/page.tsx | 2 -- app/manifest.ts | 25 +++++++++++++++++++++++++ public/logo-192.png | Bin 0 -> 2607 bytes 3 files changed, 25 insertions(+), 2 deletions(-) create mode 100644 app/manifest.ts create mode 100644 public/logo-192.png diff --git a/app/(marketing)/[slug]/page.tsx b/app/(marketing)/[slug]/page.tsx index 40f0449..5a9478e 100644 --- a/app/(marketing)/[slug]/page.tsx +++ b/app/(marketing)/[slug]/page.tsx @@ -17,7 +17,6 @@ export async function generateStaticParams() { slug: file.replace(/\.mdx$/, ""), })); } catch (error) { - console.error("Error reading content directory:", error); return []; } } @@ -28,7 +27,6 @@ export async function generateMetadata({ params: Promise<{ slug: string }>; }) { const { slug } = await params; - console.log("Generating metadata for slug:", slug); const filePath = path.join( process.cwd(), "content/marketing/", diff --git a/app/manifest.ts b/app/manifest.ts new file mode 100644 index 0000000..8d21ad4 --- /dev/null +++ b/app/manifest.ts @@ -0,0 +1,25 @@ +import type { MetadataRoute } from "next"; + +export default function manifest(): MetadataRoute.Manifest { + return { + name: "Pegna AI", + short_name: "pegna ai", + description: "The best chatbot in the world.", + start_url: "/chat", + display: "standalone", + background_color: "#ffffff", + theme_color: "#000000", + icons: [ + { + src: "/logo-192.png", + sizes: "192x192", + type: "image/png", + }, + { + src: "/logo-512.png", + sizes: "512x512", + type: "image/png", + }, + ], + }; +} diff --git a/public/logo-192.png b/public/logo-192.png new file mode 100644 index 0000000000000000000000000000000000000000..2326bf6c9f23b0536f597c30c32e359968c3f37c GIT binary patch literal 2607 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 DiBa?x literal 0 HcmV?d00001 From c87e15c488b57c3c1dfd00c36f41d7adb5f955be Mon Sep 17 00:00:00 2001 From: Juan Cruz Martinez Date: Thu, 10 Apr 2025 12:29:18 +0200 Subject: [PATCH 5/5] feat: add confirmation dialog to deleting user data closes: ENGC-64 --- app/settings/sync/delete-all-data-button.tsx | 59 ++++++++++++++++---- 1 file changed, 49 insertions(+), 10 deletions(-) diff --git a/app/settings/sync/delete-all-data-button.tsx b/app/settings/sync/delete-all-data-button.tsx index a382fa1..7fa7d3a 100644 --- a/app/settings/sync/delete-all-data-button.tsx +++ b/app/settings/sync/delete-all-data-button.tsx @@ -6,10 +6,21 @@ import { Trash2 } from "lucide-react"; import { toast } from "sonner"; import { deleteAllServerData } from "./actions"; import { chatDB } from "@/lib/localDb"; -import { useContext } from "react"; +import { useContext, useState } from "react"; import { SyncDataContext } from "@/components/sync-data-provider"; +import { + AlertDialog, + AlertDialogAction, + AlertDialogCancel, + AlertDialogContent, + AlertDialogDescription, + AlertDialogFooter, + AlertDialogHeader, + AlertDialogTitle, +} from "@/components/ui/alert-dialog"; export default function DeleteAllDataButton() { + const [showDeleteAllDialog, setShowDeleteAllDialog] = useState(false); const syncEngine = useContext(SyncDataContext); const deleteDataMutation = useMutation({ @@ -30,15 +41,43 @@ export default function DeleteAllDataButton() { }, }); + function onConfirm() { + setShowDeleteAllDialog(false); + deleteDataMutation.mutate(); + } + return ( - + <> + + + + + + Do you really want to delete all your user data? + + + This will permanently delete all your user data from the server + and your browser, including all chats, images, and documents. It + won't delete your account or settings. This action cannot be + undone. + + + + setShowDeleteAllDialog(false)}> + Cancel + + Confirm + + + + ); }