diff --git a/tracker/tracker/src/common/interaction.ts b/tracker/tracker/src/common/interaction.ts index bdd1c0408..22d70bca3 100644 --- a/tracker/tracker/src/common/interaction.ts +++ b/tracker/tracker/src/common/interaction.ts @@ -28,6 +28,7 @@ export type ToWorkerData = | Array | { type: 'compressed'; batch: Uint8Array } | { type: 'uncompressed'; batch: Uint8Array } + | 'forceFlushBatch' type Failure = { type: 'failure' diff --git a/tracker/tracker/src/main/app/index.ts b/tracker/tracker/src/main/app/index.ts index b4be6b283..b4c22fc27 100644 --- a/tracker/tracker/src/main/app/index.ts +++ b/tracker/tracker/src/main/app/index.ts @@ -662,6 +662,10 @@ export default class App { } } + forceFlushBatch() { + this.worker?.postMessage('forceFlushBatch') + } + getTabId() { return this.session.getTabId() } diff --git a/tracker/tracker/src/main/index.ts b/tracker/tracker/src/main/index.ts index 5f713e907..ebc15bc04 100644 --- a/tracker/tracker/src/main/index.ts +++ b/tracker/tracker/src/main/index.ts @@ -242,6 +242,13 @@ export default class API { return this.app.session.getSessionHash() } + forceFlushBatch() { + if (this.app === null) { + return + } + this.app.forceFlushBatch() + } + getSessionToken(): string | null | undefined { if (this.app === null) { return null diff --git a/tracker/tracker/src/webworker/index.ts b/tracker/tracker/src/webworker/index.ts index c7f781669..7e4d09352 100644 --- a/tracker/tracker/src/webworker/index.ts +++ b/tracker/tracker/src/webworker/index.ts @@ -86,6 +86,10 @@ self.onmessage = ({ data }: { data: ToWorkerData }): any => { reset() return (workerStatus = WorkerStatus.Stopped) } + if (data === 'forceFlushBatch') { + finalize() + return + } if (Array.isArray(data)) { if (writer !== null) {