import { useState } from 'react' import { nostrAuthService } from '@/lib/nostrAuth' import { objectCache } from '@/lib/objectCache' import { syncUserContentToCache } from '@/lib/userContentSync' 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'), ]) await syncUserContentToCache(state.pubkey) } function ErrorMessage({ error }: { error: string }): React.ReactElement { return (

{error}

) } 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 ): () => Promise { return async (): Promise => { try { setUpdating(true) setError(null) setSuccess(false) await updateCache() setSuccess(true) setTimeout(() => { setSuccess(false) }, 3000) } 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) } finally { setUpdating(false) } } } export function CacheUpdateManager(): React.ReactElement { const [updating, setUpdating] = useState(false) const [success, setSuccess] = useState(false) const [error, setError] = useState(null) const handleUpdateCache = createUpdateHandler(setUpdating, setError, setSuccess) 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 && }
) }