From 9274326ac5dd7f77d676d96785f05bdc324a7ab0 Mon Sep 17 00:00:00 2001 From: yuetsh <517252939@qq.com> Date: Mon, 17 Apr 2023 13:50:11 +0800 Subject: [PATCH] add cache. --- src/oj/composables/code.ts | 4 +++- src/oj/problem/components/Editor.vue | 30 +++++++++++++++++++++++++--- src/oj/problem/components/Form.vue | 13 +++++++++++- src/oj/problem/detail.vue | 4 ++++ src/utils/constants.ts | 2 +- 5 files changed, 47 insertions(+), 6 deletions(-) diff --git a/src/oj/composables/code.ts b/src/oj/composables/code.ts index e1fd7f8..6448533 100644 --- a/src/oj/composables/code.ts +++ b/src/oj/composables/code.ts @@ -1,6 +1,8 @@ +import { STORAGE_KEY } from "~/utils/constants" +import storage from "~/utils/storage" import { Code } from "~/utils/types" export const code = reactive({ value: "", - language: "C", + language: storage.get(STORAGE_KEY.LANGUAGE) || "C", }) diff --git a/src/oj/problem/components/Editor.vue b/src/oj/problem/components/Editor.vue index 98eb43e..e78ddfc 100644 --- a/src/oj/problem/components/Editor.vue +++ b/src/oj/problem/components/Editor.vue @@ -3,23 +3,47 @@ import { SOURCES } from "utils/constants" import { code } from "oj/composables/code" import { isDesktop } from "~/shared/composables/breakpoints" import { problem } from "oj/composables/problem" +import storage from "~/utils/storage" +import { LANGUAGE } from "~/utils/types" const Form = defineAsyncComponent(() => import("./Form.vue")) const CodeEditor = defineAsyncComponent(() => import("~/shared/CodeEditor.vue")) -code.language = problem.value!.languages[0] || "C" -code.value = problem.value!.template[code.language] || SOURCES[code.language] +const route = useRoute() +const contestID = !!route.params.contestID ? route.params.contestID : null + +const storageKey = computed( + () => `problem_${problem.value!._id}_contest_${contestID}` +) + +onMounted(() => { + if (storage.get(storageKey.value)) { + code.value = storage.get(storageKey.value) + } else { + code.value = + problem.value!.template[code.language] || SOURCES[code.language] + } +}) const editorHeight = computed(() => isDesktop.value ? "calc(100vh - 133px)" : "calc(100vh - 172px)" ) + +function reset() { + storage.remove(storageKey.value) +} + +function changeCode(v: string) { + storage.set(storageKey.value, v) +}