diff --git a/src/oj/problem/components/Editor.vue b/src/oj/problem/components/Editor.vue index e78ddfc..bcee3e8 100644 --- a/src/oj/problem/components/Editor.vue +++ b/src/oj/problem/components/Editor.vue @@ -13,7 +13,8 @@ const route = useRoute() const contestID = !!route.params.contestID ? route.params.contestID : null const storageKey = computed( - () => `problem_${problem.value!._id}_contest_${contestID}` + () => + `problem_${problem.value!._id}_contest_${contestID}_lang_${code.language}` ) onMounted(() => { @@ -29,18 +30,26 @@ 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) } + +function changeLanguage(v: string) { + if ( + storage.get(storageKey.value) && + storageKey.value.split("_").pop() === v + ) { + code.value = storage.get(storageKey.value) + } else { + code.value = + problem.value!.template[code.language] || SOURCES[code.language] + } +}