diff --git a/messages/en-US/memorize/main.json b/messages/en-US/memorize/main.json index 46b9b49..eefedbe 100644 --- a/messages/en-US/memorize/main.json +++ b/messages/en-US/memorize/main.json @@ -5,6 +5,6 @@ "total": "There are {total} word pairs in total", "start": "Start", "import": "Import", - "save": "Save", + "export": "Export", "edit": "Edit" } diff --git a/messages/zh-CN/memorize/main.json b/messages/zh-CN/memorize/main.json index 32d8c37..a568ce9 100644 --- a/messages/zh-CN/memorize/main.json +++ b/messages/zh-CN/memorize/main.json @@ -5,6 +5,6 @@ "total": "总计有{total}个单词对", "start": "开始", "import": "导入", - "save": "保存", + "export": "导出", "edit": "编辑" } \ No newline at end of file diff --git a/src/app/memorize/Edit.tsx b/src/app/memorize/Edit.tsx index e9d6fc1..3785932 100644 --- a/src/app/memorize/Edit.tsx +++ b/src/app/memorize/Edit.tsx @@ -51,6 +51,9 @@ export default function Edit({ setPage, wordData, setWordData }: Props) { setWordData(newWordData); if (textareaRef.current) textareaRef.current.value = convertFromWordData(newWordData); + if(localStorage) { + localStorage.setItem("wordData", JSON.stringify(newWordData)); + } }; const handleChange = (e: ChangeEvent) => { input = e.target.value; diff --git a/src/app/memorize/Main.tsx b/src/app/memorize/Main.tsx index 64c0c11..c5d6406 100644 --- a/src/app/memorize/Main.tsx +++ b/src/app/memorize/Main.tsx @@ -61,7 +61,7 @@ export default function Main({ {t("start")} {t("import")} - {t("save")} + {t("export")} setPage("edit")}> {t("edit")} diff --git a/src/app/memorize/page.tsx b/src/app/memorize/page.tsx index 26720a1..5d0cc3a 100644 --- a/src/app/memorize/page.tsx +++ b/src/app/memorize/page.tsx @@ -4,29 +4,30 @@ import { useState } from "react"; import Main from "./Main"; import Edit from "./Edit"; import Start from "./Start"; -import { WordData } from "@/interfaces"; +import { WordData, WordDataSchema } from "@/interfaces"; + +const getLocalWordData = (): WordData => { + const data = localStorage.getItem("wordData"); + if (!data) return { + locales: ['en-US', 'zh-CN'], + wordPairs: [] + }; + try { + const parsedData = JSON.parse(data); + const parsedData2 = WordDataSchema.parse(parsedData); + return parsedData2; + } catch (error) { + console.error(error); + return { + locales: ['en-US', 'zh-CN'], + wordPairs: [] + }; + } +} export default function Memorize() { const [page, setPage] = useState<"start" | "main" | "edit">("main"); - const [wordData, setWordData] = useState({ - locales: ["en-US", "zh-CN"], - wordPairs: [ - ["hello", "你好"], - ["world", "世界"], - ["brutal", "残酷的"], - ["apple", "苹果"], - ["banana", "香蕉"], - ["orange", "橙子"], - ["grape", "葡萄"], - ["San Francisco", "旧金山"], - ["New York", "纽约"], - ["Los Angeles", "洛杉矶"], - // ['A Very Very Very Very Very Very Very Long Word', '一个很长很长很长很长很长很长很长很长很长很长的单词'] - ["Chicago", "芝加哥"], - ["Tokyo", "东京"], - ["Paris", "巴黎"] - ], - }); + const [wordData, setWordData] = useState(getLocalWordData()); if (page === "main") return (