Coves frontend - a photon fork
at main 47 lines 1.1 kB view raw
1import { browser } from '$app/environment' 2import type { 3 CommunityView as CovesCommunityView, 4 CommunityViewDetailed, 5} from '$lib/api/coves/types' 6 7interface SessionStorage { 8 lastSeenCommunity?: CovesCommunityView | CommunityViewDetailed 9 postDraft?: { 10 community: CovesCommunityView | CommunityViewDetailed | null 11 title: string 12 body?: string 13 image: FileList | null 14 url?: string 15 nsfw: boolean 16 loading: boolean 17 } 18} 19 20export const setSessionStorage = ( 21 key: keyof SessionStorage, 22 value: SessionStorage[typeof key], 23) => { 24 if (!browser) return 25 if (value == undefined) { 26 sessionStorage.removeItem(key) 27 } else { 28 sessionStorage.setItem(key, JSON.stringify(value)) 29 } 30} 31 32export const getSessionStorage = ( 33 key: keyof SessionStorage, 34): SessionStorage[typeof key] => { 35 if (!browser) return 36 const raw = sessionStorage.getItem(key) 37 if (raw == null) return undefined 38 try { 39 return JSON.parse(raw) 40 } catch { 41 console.warn( 42 `[session] Failed to parse sessionStorage key "${key}", removing corrupted data`, 43 ) 44 sessionStorage.removeItem(key) 45 return undefined 46 } 47}