mirror of
https://github.com/lukevella/rallly.git
synced 2025-06-17 10:01:48 +02:00
♻️ Refactor poll view tracking (#1644)
This commit is contained in:
parent
6b914610d9
commit
f05f437b56
13 changed files with 288 additions and 41 deletions
43
packages/utils/src/safe-session-storage.ts
Normal file
43
packages/utils/src/safe-session-storage.ts
Normal 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);
|
||||
},
|
||||
};
|
Loading…
Add table
Add a link
Reference in a new issue