From: Adam Dullage Date: Sat, 11 Oct 2025 09:43:34 +0000 (+0100) Subject: #335 Use session storage for drafts if user hasn't chosen to 'Remember Me' X-Git-Url: http://git.99rst.org/?a=commitdiff_plain;h=b8f728c6d8b27c23b96970b1d50cf8e108ea4a34;p=flatnotes.git #335 Use session storage for drafts if user hasn't chosen to 'Remember Me' --- diff --git a/client/tokenStorage.js b/client/tokenStorage.js index 12c4e38..f6aa65e 100644 --- a/client/tokenStorage.js +++ b/client/tokenStorage.js @@ -35,3 +35,12 @@ export function clearStoredToken() { document.cookie = getCookieString() + "; expires=Thu, 01 Jan 1970 00:00:00 GMT"; } + +export function isCurrentTokenStored() { + const localToken = localStorage.getItem(tokenStorageKey); + if (localToken == null) { + return false; + } + const sessionToken = sessionStorage.getItem(tokenStorageKey); + return localToken === sessionToken; +} diff --git a/client/views/Note.vue b/client/views/Note.vue index a95c675..c05829a 100644 --- a/client/views/Note.vue +++ b/client/views/Note.vue @@ -144,6 +144,7 @@ import ToastViewer from "../components/toastui/ToastViewer.vue"; import { authTypes } from "../constants.js"; import { useGlobalStore } from "../globalStore.js"; import { getToastOptions } from "../helpers.js"; +import { isCurrentTokenStored } from "../tokenStorage.js"; const props = defineProps({ title: String, @@ -441,17 +442,25 @@ function contentChangedHandler() { // Drafts function saveDraft() { const content = toastEditor.value.getMarkdown(); + const userHasPersistedToken = isCurrentTokenStored(); if (content) { - localStorage.setItem(note.value.title, content); + if (userHasPersistedToken) { + localStorage.setItem(note.value.title, content); + } else { + sessionStorage.setItem(note.value.title, content); + } } } function clearDraft() { localStorage.removeItem(note.value.title); + sessionStorage.removeItem(note.value.title); } function loadDraft() { - return localStorage.getItem(note.value.title); + const localDraft = localStorage.getItem(note.value.title); + const sessionDraft = sessionStorage.getItem(note.value.title); + return localDraft || sessionDraft; } // Keyboard Shortcuts