Skip to content

Commit c0fb3fa

Browse files
committed
feat: Flush offline queue on flush and browser online event
1 parent a921440 commit c0fb3fa

File tree

2 files changed

+19
-2
lines changed

2 files changed

+19
-2
lines changed

packages/browser/src/transports/offline.ts

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
import type { BaseTransportOptions, Envelope, OfflineStore, OfflineTransportOptions, Transport } from '@sentry/core';
22
import { makeOfflineTransport, parseEnvelope, serializeEnvelope } from '@sentry/core';
3+
import { WINDOW } from '../helpers';
34
import { makeFetchTransport } from './fetch';
45

56
// 'Store', 'promisifyRequest' and 'createStore' were originally copied from the 'idb-keyval' package before being
@@ -158,7 +159,15 @@ function createIndexedDbStore(options: BrowserOfflineTransportOptions): OfflineS
158159
function makeIndexedDbOfflineTransport<T>(
159160
createTransport: (options: T) => Transport,
160161
): (options: T & BrowserOfflineTransportOptions) => Transport {
161-
return options => createTransport({ ...options, createStore: createIndexedDbStore });
162+
return options => {
163+
const transport = createTransport({ ...options, createStore: createIndexedDbStore });
164+
165+
WINDOW.addEventListener('online', async _ => {
166+
await transport.flush();
167+
});
168+
169+
return transport;
170+
};
162171
}
163172

164173
/**

packages/core/src/transports/offline.ts

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -170,7 +170,15 @@ export function makeOfflineTransport<TO>(
170170

171171
return {
172172
send,
173-
flush: t => transport.flush(t),
173+
flush: timeout => {
174+
// If there's no timeout, we should attempt to flush the offline queue.
175+
if (timeout === undefined) {
176+
retryDelay = START_DELAY;
177+
flushIn(MIN_DELAY);
178+
}
179+
180+
return transport.flush(timeout);
181+
},
174182
};
175183
};
176184
}

0 commit comments

Comments
 (0)