/** * Image Cache Service * * Utility functions for managing the Service Worker's image cache * Service Worker automatically caches images on fetch */ const CACHE_NAME = 'boris-image-cache-v1' /** * Clear all cached images */ export async function clearImageCache(): Promise { try { await caches.delete(CACHE_NAME) console.log('🗑️ Cleared all cached images') } catch (err) { console.error('Failed to clear image cache:', err) } } /** * Get cache statistics by inspecting Cache API directly */ export async function getImageCacheStatsAsync(): Promise<{ totalSizeMB: number itemCount: number items: Array<{ url: string, sizeMB: number }> }> { try { const cache = await caches.open(CACHE_NAME) const requests = await cache.keys() let totalSize = 0 const items: Array<{ url: string, sizeMB: number }> = [] for (const request of requests) { const response = await cache.match(request) if (response) { const blob = await response.blob() const sizeMB = blob.size / (1024 * 1024) totalSize += blob.size items.push({ url: request.url, sizeMB }) } } return { totalSizeMB: totalSize / (1024 * 1024), itemCount: requests.length, items } } catch (err) { console.error('Failed to get cache stats:', err) return { totalSizeMB: 0, itemCount: 0, items: [] } } } /** * Synchronous wrapper for cache stats (returns approximate values) * For real-time stats, use getImageCacheStatsAsync */ export function getImageCacheStats(): { totalSizeMB: number itemCount: number items: Array<{ url: string, sizeMB: number, lastAccessed: Date }> } { // Return placeholder - actual stats require async Cache API access // Component should use getImageCacheStatsAsync for real values return { totalSizeMB: 0, itemCount: 0, items: [] } }