import type { PaginationItem } from '../hooks/usePagination' export const GUILDS_CACHE_KEY = 'guilds' as const export const CHANNELS_CACHE_KEY = 'channels' as const export const MEMBERS_CACHE_KEY = 'members' as const export const MESSAGES_CACHE_KEY = 'messages' as const export type CacheKey = | typeof GUILDS_CACHE_KEY | `${number}-${typeof CHANNELS_CACHE_KEY}` | `${number}-${typeof MEMBERS_CACHE_KEY}` | `${number}-${typeof MESSAGES_CACHE_KEY}` export const getPaginationCache = ( key: CacheKey ): T[] => { const cache = sessionStorage.getItem(key) if (cache != null) { try { const data = JSON.parse(cache) if (Array.isArray(data)) { return data } } catch {} } return [] } export const savePaginationCache = ( key: CacheKey, data: T[] ): void => { sessionStorage.setItem(key, JSON.stringify(data)) } export const clearCache = (): void => { sessionStorage.clear() }