♻️ Refactor poll view tracking (#1644)

This commit is contained in:
Luke Vella 2025-03-28 10:10:46 +00:00 committed by GitHub
parent 6b914610d9
commit f05f437b56
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
13 changed files with 288 additions and 41 deletions

View file

@ -0,0 +1,43 @@
// Memory fallback when sessionStorage isn't available
const memoryStorage = new Map<string, string>();
/**
* Safe wrapper for sessionStorage with memory fallback
* Handles browser environments, private browsing modes, and SSR
*/
export const safeSessionStorage = {
get(key: string): string | null {
try {
return typeof window !== "undefined"
? window.sessionStorage.getItem(key)
: memoryStorage.get(key) || null;
} catch (error) {
console.warn("Error accessing sessionStorage:", error);
return memoryStorage.get(key) || null;
}
},
set(key: string, value: string): void {
try {
if (typeof window !== "undefined") {
window.sessionStorage.setItem(key, value);
return;
}
} catch (error) {
console.warn("Error setting sessionStorage:", error);
}
memoryStorage.set(key, value);
},
remove(key: string): void {
try {
if (typeof window !== "undefined") {
window.sessionStorage.removeItem(key);
return;
}
} catch (error) {
console.warn("Error deleting sessionStorage:", error);
}
memoryStorage.delete(key);
},
};