From 9b745f52f493ddf9eb850b25a1b88cf29719c68d Mon Sep 17 00:00:00 2001 From: a2nr Date: Fri, 27 Mar 2026 20:38:20 +0700 Subject: [PATCH] feat: Add a visual auto-save indicator to the code editor, clear session storage on authentication changes, and integrate auto-save functionality with lesson progress and solution viewing. --- frontend/src/lib/components/CodeEditor.svelte | 51 ++++++++++++++++++- frontend/src/lib/stores/auth.ts | 4 ++ .../src/routes/lesson/[slug]/+page.svelte | 10 ++-- 3 files changed, 59 insertions(+), 6 deletions(-) diff --git a/frontend/src/lib/components/CodeEditor.svelte b/frontend/src/lib/components/CodeEditor.svelte index 23e925d..36a3bdf 100644 --- a/frontend/src/lib/components/CodeEditor.svelte +++ b/frontend/src/lib/components/CodeEditor.svelte @@ -16,8 +16,9 @@ let container: HTMLDivElement; let view: any; let ready = $state(false); + let saving = $state(false); let lastThemeDark: boolean | undefined; - let lastStorageKey = storageKey; + let lastStorageKey = $state(undefined); // Store module references after dynamic import let CM: any; @@ -26,9 +27,11 @@ function saveToStorage(value: string) { if (!storageKey) return; + saving = true; clearTimeout(saveTimeout); saveTimeout = setTimeout(() => { sessionStorage.setItem(storageKey, value); + saving = false; }, 1000); } @@ -286,22 +289,66 @@ return view?.state.doc.toString() ?? code; } -
{#if !ready}
Memuat editor...
{/if} + {#if storageKey} +
+ + {saving ? '●' : '☁'} + + Auto-save +
+ {/if}