ultisuite-client/hooks/use-persist-hydrated.ts
2026-05-16 20:30:50 +02:00

24 lines
612 B
TypeScript

"use client"
import { useEffect, useState } from "react"
type PersistApi = {
hasHydrated: () => boolean
onFinishHydration: (fn: () => void) => () => void
}
/** True after a zustand `persist` store has rehydrated from storage (client-only). */
export function usePersistHydrated(store: { persist: PersistApi }): boolean {
const [hydrated, setHydrated] = useState(() => store.persist.hasHydrated())
useEffect(() => {
if (store.persist.hasHydrated()) {
setHydrated(true)
return
}
return store.persist.onFinishHydration(() => setHydrated(true))
}, [store])
return hydrated
}