import { useState } from 'react' import { useRouter } from 'next/router' import { nostrAuthService } from '@/lib/nostrAuth' import { objectCache } from '@/lib/objectCache' import { Button, ErrorState } from './ui' async function updateCache(): Promise { const state = nostrAuthService.getState() if (!state.connected || !state.pubkey) { throw new Error('Vous devez être connecté pour mettre à jour le cache') } await Promise.all([ objectCache.clear('author'), objectCache.clear('series'), objectCache.clear('publication'), objectCache.clear('review'), objectCache.clear('purchase'), objectCache.clear('sponsoring'), objectCache.clear('review_tip'), ]) const { swClient } = await import('@/lib/swClient') const isReady = await swClient.isReady() if (isReady) { await swClient.startUserSync(state.pubkey) } else { throw new Error('Service Worker is not ready') } } function SuccessMessage(): React.ReactElement { return (

Cache mis à jour avec succès

) } function NotConnectedMessage(): React.ReactElement { return (

Vous devez être connecté pour mettre à jour le cache

) } function createUpdateHandler( setUpdating: (value: boolean) => void, setError: (value: string | null) => void, setSuccess: (value: boolean) => void, router: ReturnType ): () => Promise { return async (): Promise => { try { setUpdating(true) setError(null) setSuccess(false) await updateCache() setSuccess(true) // Wait a bit to show success message, then reload page setTimeout(() => { router.reload() }, 1000) } catch (e) { const errorMessage = e instanceof Error ? e.message : 'Erreur lors de la mise à jour du cache' setError(errorMessage) console.error('Error updating cache:', e) setUpdating(false) } } } export function CacheUpdateManager(): React.ReactElement { const router = useRouter() const [updating, setUpdating] = useState(false) const [success, setSuccess] = useState(false) const [error, setError] = useState(null) const handleUpdateCache = createUpdateHandler(setUpdating, setError, setSuccess, router) const state = nostrAuthService.getState() const isConnected = state.connected && state.pubkey return (

Mise à jour du cache

Videz et re-synchronisez le cache IndexedDB avec les données depuis les relais Nostr. Cela permet de récupérer les dernières versions de vos publications, séries et profil.

{error && } {success && } {!isConnected && }
) }