diff --git a/src/app/(features)/translator/FolderSelector.tsx b/src/app/(features)/translator/FolderSelector.tsx index 6309a10..3d7f125 100644 --- a/src/app/(features)/translator/FolderSelector.tsx +++ b/src/app/(features)/translator/FolderSelector.tsx @@ -3,6 +3,7 @@ import { useEffect, useState } from "react"; import { folder } from "../../../../generated/prisma/browser"; import { getFoldersByOwner } from "@/lib/services/folderService"; import LightButton from "@/components/buttons/LightButton"; +import { Folder } from "lucide-react"; interface FolderSelectorProps { setSelectedFolderId: (id: number) => void; @@ -31,11 +32,21 @@ const FolderSelector: React.FC = ({ {(loading &&

Loading...

) || (folders.length > 0 && ( - + <> +

Select a Folder

+
+ {folders.map((folder) => ( + + ))} +
+ )) ||

No folders found

} Cancel
diff --git a/src/app/(features)/translator/page.tsx b/src/app/(features)/translator/page.tsx index bb2cb75..9d337ed 100644 --- a/src/app/(features)/translator/page.tsx +++ b/src/app/(features)/translator/page.tsx @@ -22,6 +22,7 @@ import { import { toast } from "sonner"; import FolderSelector from "./FolderSelector"; import { useSession } from "next-auth/react"; +import { createTextPair } from "@/lib/services/textPairService"; export default function TranslatorPage() { const t = useTranslations("translator"); @@ -106,6 +107,33 @@ export default function TranslatorPage() { locale2: llmres.locale2, }), ); + if (autoSave && autoSaveFolderId) { + createTextPair({ + text1: llmres.text1, + text2: llmres.text2, + locale1: llmres.locale1, + locale2: llmres.locale2, + folders: { + connect: { + id: autoSaveFolderId, + }, + }, + }) + .then(() => { + toast.success( + llmres.text1 + "保存到文件夹" + autoSaveFolderId + "成功", + ); + }) + .catch((error) => { + toast.error( + llmres.text1 + + "保存到文件夹" + + autoSaveFolderId + + "失败:" + + error.message, + ); + }); + } historyUpdated = true; } }; @@ -281,11 +309,13 @@ export default function TranslatorPage() { toast.warning("Please login to enable auto-save"); return; } + if (checked === false) setAutoSaveFolderId(null); setAutoSave(checked); }} className="mr-2" /> {t("autoSave")} + {autoSaveFolderId ? ` (${autoSaveFolderId})` : ""} diff --git a/src/lib/utils.ts b/src/lib/utils.ts index e378170..c93cbd1 100644 --- a/src/lib/utils.ts +++ b/src/lib/utils.ts @@ -67,8 +67,7 @@ export const getLocalStorageOperator = ( return { get: (): z.infer => { try { - if (!localStorage) return []; - const item = localStorage.getItem(key); + const item = globalThis.localStorage.getItem(key); if (!item) return []; @@ -90,8 +89,8 @@ export const getLocalStorageOperator = ( } }, set: (data: z.infer) => { - if (!localStorage) return; - localStorage.setItem(key, JSON.stringify(data)); + if (!globalThis.localStorage) return; + globalThis.localStorage.setItem(key, JSON.stringify(data)); return data; }, };