diff --git a/src/components/EditorHeader/ControlPanel.jsx b/src/components/EditorHeader/ControlPanel.jsx index 27f7d1e5..d1658e34 100644 --- a/src/components/EditorHeader/ControlPanel.jsx +++ b/src/components/EditorHeader/ControlPanel.jsx @@ -82,6 +82,7 @@ import { toDBML } from "../../utils/exportAs/dbml"; import { exportSavedData } from "../../utils/exportSavedData"; import { nanoid } from "nanoid"; import { getTableHeight } from "../../utils/utils"; +import { deleteFromCache, STORAGE_KEY } from "../../utils/cache"; export default function ControlPanel({ diagramId, @@ -126,7 +127,7 @@ export default function ControlPanel({ const { selectedElement, setSelectedElement } = useSelect(); const { transform, setTransform } = useTransform(); const { t, i18n } = useTranslation(); - const { version, setGistId } = useContext(IdContext); + const { version, gistId, setGistId } = useContext(IdContext); const navigate = useNavigate(); const invertLayout = (component) => @@ -1444,13 +1445,19 @@ export default function ControlPanel({ export_saved_data: { function: exportSavedData, }, + clear_cache: { + function: () => { + deleteFromCache(gistId); + Toast.success(t("cache_cleared")); + }, + }, flush_storage: { warning: { title: t("flush_storage"), message: t("are_you_sure_flush_storage"), }, function: async () => { - localStorage.removeItem("versions_cache"); + localStorage.removeItem(STORAGE_KEY); db.delete() .then(() => { Toast.success(t("storage_flushed")); diff --git a/src/components/EditorHeader/SideSheet/Versions.jsx b/src/components/EditorHeader/SideSheet/Versions.jsx index 6770c096..e286d550 100644 --- a/src/components/EditorHeader/SideSheet/Versions.jsx +++ b/src/components/EditorHeader/SideSheet/Versions.jsx @@ -23,22 +23,9 @@ import { useTypes, } from "../../../hooks"; import { databases } from "../../../data/databases"; +import { loadCache, saveCache } from "../../../utils/cache"; const LIMIT = 10; -const STORAGE_KEY = "versions_cache"; - -function loadCache() { - try { - const saved = localStorage.getItem(STORAGE_KEY); - return saved ? JSON.parse(saved) : {}; - } catch { - return {}; - } -} - -function saveCache(cache) { - localStorage.setItem(STORAGE_KEY, JSON.stringify(cache)); -} export default function Versions({ open, title, setTitle }) { const { gistId, setGistId, version, setVersion } = useContext(IdContext); @@ -236,12 +223,6 @@ export default function Versions({ open, title, setTitle }) { } }; - const onClearCache = () => { - delete cacheRef[gistId]; - saveCache(cacheRef); - Toast.success(t("cache_cleared")); - }; - useEffect(() => { if (gistId && open) { getRevisions(); @@ -250,9 +231,8 @@ export default function Versions({ open, title, setTitle }) { return (