feat: Absturzschutz fuer die laufende Sitzung
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -0,0 +1,36 @@
|
||||
// Reines Modul: kein window, kein document, kein localStorage.
|
||||
|
||||
const KEY = 'ram-sortierhilfe:session';
|
||||
|
||||
/**
|
||||
* Absturzschutz, keine Bestandsfuehrung: die laufende Sitzung wird
|
||||
* gesichert, damit ein versehentliches Neuladen sie nicht vernichtet.
|
||||
*/
|
||||
export function saveSession(session, store) {
|
||||
try {
|
||||
store.setItem(KEY, JSON.stringify(session));
|
||||
} catch {
|
||||
// Voller oder gesperrter Speicher darf das Sortieren nicht unterbrechen.
|
||||
}
|
||||
}
|
||||
|
||||
/** @returns {object|null} */
|
||||
export function loadSession(store) {
|
||||
try {
|
||||
const raw = store.getItem(KEY);
|
||||
if (!raw) return null;
|
||||
const parsed = JSON.parse(raw);
|
||||
if (!Array.isArray(parsed.stacks) || !Array.isArray(parsed.entries)) return null;
|
||||
return parsed;
|
||||
} catch {
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
export function clearSession(store) {
|
||||
try {
|
||||
store.removeItem(KEY);
|
||||
} catch {
|
||||
// siehe oben
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user