#335 Use session storage for drafts if user hasn't chosen to 'Remember Me'
authorAdam Dullage <redacted>
Sat, 11 Oct 2025 09:43:34 +0000 (10:43 +0100)
committerAdam Dullage <redacted>
Sat, 11 Oct 2025 09:43:34 +0000 (10:43 +0100)
client/tokenStorage.js
client/views/Note.vue

index 12c4e38f0af9b6355ad83b19f6f9e132a4861c04..f6aa65ec69cf2b1b4f69e384aa609729012009dc 100644 (file)
@@ -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;
+}
index a95c675c76577c134e2eb4a271c11824e196c452..c05829ae88ee1e2159c3b4d9f2447cdb94a30bde 100644 (file)
@@ -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
git clone https://git.99rst.org/PROJECT