Retry outbound read syncs for up to 24 hours
This commit is contained in:
parent
fc33e9be41
commit
18140c4a9d
9 changed files with 366 additions and 19 deletions
|
@ -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);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue