From 3c3f9e9d3592ffffe89756267272686fc83118e0 Mon Sep 17 00:00:00 2001 From: nyne Date: Sun, 8 Jun 2025 14:02:40 +0800 Subject: [PATCH] Implement caching for tags list in TagsPage component --- frontend/src/pages/tags_page.tsx | 30 +++++++++++++++++++----------- 1 file changed, 19 insertions(+), 11 deletions(-) diff --git a/frontend/src/pages/tags_page.tsx b/frontend/src/pages/tags_page.tsx index 8865df7..724ec25 100644 --- a/frontend/src/pages/tags_page.tsx +++ b/frontend/src/pages/tags_page.tsx @@ -5,22 +5,30 @@ import showToast from "../components/toast.ts"; import Loading from "../components/loading.tsx"; import Badge from "../components/badge.tsx"; import { useNavigate } from "react-router"; +import { useAppContext } from "../components/AppContext.tsx"; export default function TagsPage() { const [tags, setTags] = useState(null); + const context = useAppContext(); useEffect(() => { - network.getAllTags().then((res) => { - if (res.success) { - setTags(res.data!); - } else { - showToast({ - type: "error", - message: res.message || "Failed to load tags", - }); - } - }); - }, []); + const storageKey = "tags_list"; + if (context.get(storageKey)) { + setTags(context.get(storageKey)); + } else { + network.getAllTags().then((res) => { + if (res.success) { + setTags(res.data!); + context.set(storageKey, res.data!); + } else { + showToast({ + type: "error", + message: res.message || "Failed to load tags", + }); + } + }); + } + }, [context]); const navigate = useNavigate();