UNPKG

@wordpress/editor

Version:
37 lines (36 loc) 1.18 kB
// packages/editor/src/components/sync-connection-error-modal/use-retry-countdown.ts import { useState, useEffect } from "@wordpress/element"; function useRetryCountdown(connectionStatus) { const [secondsRemaining, setSecondsRemaining] = useState(); useEffect(() => { if (!connectionStatus) { return; } if ("connected" === connectionStatus.status) { setSecondsRemaining(void 0); return; } if ("disconnected" !== connectionStatus.status || !connectionStatus.willAutoRetryInMs) { return; } const { willAutoRetryInMs: retryInMs } = connectionStatus; const retryAt = Date.now() + retryInMs; setSecondsRemaining(Math.ceil(retryInMs / 1e3)); const intervalId = setInterval(() => { const remaining = Math.ceil((retryAt - Date.now()) / 1e3); setSecondsRemaining(Math.max(0, remaining)); if (remaining <= 0) { clearInterval(intervalId); } }, 1e3); return () => clearInterval(intervalId); }, [connectionStatus]); return { onManualRetry: () => setSecondsRemaining(0), secondsRemaining }; } export { useRetryCountdown }; //# sourceMappingURL=use-retry-countdown.mjs.map