Skip to content

Commit f2e7e9e

Browse files
committed
wip
1 parent 07c6be7 commit f2e7e9e

File tree

1 file changed

+10
-0
lines changed
  • packages/signals/signals/src/core/buffer

1 file changed

+10
-0
lines changed

packages/signals/signals/src/core/buffer/index.ts

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
import { Signal } from '@segment/analytics-signals-runtime'
22
import { openDB, DBSchema, IDBPDatabase } from 'idb'
33
import { logger } from '../../lib/logger'
4+
import { WebStorage } from '../../lib/storage/web-storage'
45

56
interface SignalDatabase extends DBSchema {
67
signals: {
@@ -20,6 +21,7 @@ export class SignalStore implements SignalPersistentStorage {
2021
static readonly STORE_NAME = 'signals'
2122
private db: Promise<IDBPDatabase<SignalDatabase>>
2223
private maxBufferSize: number
24+
private sessionKeyStorage = new WebStorage(window.sessionStorage)
2325
static deleteDatabase() {
2426
return indexedDB.deleteDatabase(SignalStore.DB_NAME)
2527
}
@@ -34,6 +36,14 @@ export class SignalStore implements SignalPersistentStorage {
3436
}
3537

3638
private async initSignalDB() {
39+
// prevent the signals buffer from persisting across sessions (e.g, user closes tab and reopens)
40+
const sessionKey = 'segment_signals_db_session_key'
41+
if (!sessionStorage.getItem(sessionKey)) {
42+
this.sessionKeyStorage.setItem(sessionKey, true)
43+
await SignalStore.deleteDatabase()
44+
logger.debug('New Session, so signals buffer cleared')
45+
}
46+
3747
const db = await openDB<SignalDatabase>(SignalStore.DB_NAME, 1, {
3848
upgrade(db) {
3949
db.createObjectStore(SignalStore.STORE_NAME, { autoIncrement: true })

0 commit comments

Comments
 (0)