@wordpress/editor
Version:
Enhanced block editor for WordPress posts.
37 lines (36 loc) • 1.18 kB
JavaScript
// 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