diff --git a/surfsense_web/app/dashboard/[search_space_id]/user-settings/components/MemoryContent.tsx b/surfsense_web/app/dashboard/[search_space_id]/user-settings/components/MemoryContent.tsx index dae79afd1..1e777a88a 100644 --- a/surfsense_web/app/dashboard/[search_space_id]/user-settings/components/MemoryContent.tsx +++ b/surfsense_web/app/dashboard/[search_space_id]/user-settings/components/MemoryContent.tsx @@ -1,7 +1,7 @@ "use client"; import { useAtomValue } from "jotai"; -import { Info, Send } from "lucide-react"; +import { Download, Info, Send } from "lucide-react"; import { useCallback, useEffect, useRef, useState } from "react"; import { toast } from "sonner"; import { z } from "zod"; @@ -78,6 +78,23 @@ export function MemoryContent() { } }; + const handleExport = () => { + if (!memory) return; + try { + const blob = new Blob([memory], { type: "text/markdown;charset=utf-8" }); + const url = URL.createObjectURL(blob); + const a = document.createElement("a"); + a.href = url; + a.download = "personal-memory.md"; + document.body.appendChild(a); + a.click(); + document.body.removeChild(a); + URL.revokeObjectURL(url); + } catch { + toast.error("Failed to export memory"); + } + }; + const handleKeyDown = (e: React.KeyboardEvent) => { if (e.key === "Enter" && !e.shiftKey) { e.preventDefault(); @@ -168,7 +185,7 @@ export function MemoryContent() { -
+
+
); diff --git a/surfsense_web/components/settings/team-memory-manager.tsx b/surfsense_web/components/settings/team-memory-manager.tsx index 4c5d619e8..67aa420b8 100644 --- a/surfsense_web/components/settings/team-memory-manager.tsx +++ b/surfsense_web/components/settings/team-memory-manager.tsx @@ -2,7 +2,7 @@ import { useQuery, useQueryClient } from "@tanstack/react-query"; import { useAtomValue } from "jotai"; -import { Info, Send } from "lucide-react"; +import { Download, Info, Send } from "lucide-react"; import { useRef, useState } from "react"; import { toast } from "sonner"; import { z } from "zod"; @@ -83,6 +83,23 @@ export function TeamMemoryManager({ searchSpaceId }: TeamMemoryManagerProps) { } }; + const handleExport = () => { + if (!memory) return; + try { + const blob = new Blob([memory], { type: "text/markdown;charset=utf-8" }); + const url = URL.createObjectURL(blob); + const a = document.createElement("a"); + a.href = url; + a.download = "team-memory.md"; + document.body.appendChild(a); + a.click(); + document.body.removeChild(a); + URL.revokeObjectURL(url); + } catch { + toast.error("Failed to export team memory"); + } + }; + const handleKeyDown = (e: React.KeyboardEvent) => { if (e.key === "Enter" && !e.shiftKey) { e.preventDefault(); @@ -175,7 +192,7 @@ export function TeamMemoryManager({ searchSpaceId }: TeamMemoryManagerProps) { -
+
+
);