Retry outbound read syncs for up to 24 hours

This commit is contained in:
Evan Hahn 2021-07-23 17:02:36 -05:00 committed by GitHub
parent fc33e9be41
commit 18140c4a9d
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
9 changed files with 366 additions and 19 deletions

View file

@ -3,19 +3,33 @@
export function waitForOnline(
navigator: Readonly<{ onLine: boolean }>,
onlineEventTarget: EventTarget
onlineEventTarget: EventTarget,
options: Readonly<{ timeout?: number }> = {}
): Promise<void> {
return new Promise(resolve => {
const { timeout } = options;
return new Promise((resolve, reject) => {
if (navigator.onLine) {
resolve();
return;
}
const listener = () => {
onlineEventTarget.removeEventListener('online', listener);
cleanup();
resolve();
};
const cleanup = () => {
onlineEventTarget.removeEventListener('online', listener);
};
onlineEventTarget.addEventListener('online', listener);
if (timeout !== undefined) {
setTimeout(() => {
cleanup();
reject(new Error('waitForOnline: did not come online in time'));
}, timeout);
}
});
}