Skip to content

Commit ce7de0a

Browse files
author
Kelly Wallach
committed
fix(session replay): provide default for db
1 parent 9426ee0 commit ce7de0a

File tree

3 files changed

+2
-71
lines changed

3 files changed

+2
-71
lines changed

packages/session-replay-browser/src/targeting/targeting-idb-store.ts

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ export interface SessionReplayTargetingDB extends DBSchema {
1313
}
1414

1515
export class TargetingIDBStore {
16-
dbs: { [apiKey: string]: IDBPDatabase<SessionReplayTargetingDB> } | undefined;
16+
dbs: { [apiKey: string]: IDBPDatabase<SessionReplayTargetingDB> } = {};
1717

1818
createStore = async (dbName: string) => {
1919
return await openDB<SessionReplayTargetingDB>(dbName, 1, {
@@ -33,10 +33,7 @@ export class TargetingIDBStore {
3333
}
3434
const dbName = `${apiKey.substring(0, 10)}_amp_session_replay_targeting`;
3535
const db = await this.createStore(dbName);
36-
this.dbs = {
37-
...this.dbs,
38-
[apiKey]: db,
39-
};
36+
this.dbs[apiKey] = db;
4037
return db;
4138
};
4239

packages/targeting/src/targeting.ts

Lines changed: 0 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,4 @@
11
import { EvaluationEngine } from '@amplitude/experiment-core';
2-
<<<<<<< HEAD
3-
=======
4-
import { targetingIDBStore } from './targeting-idb-store';
5-
>>>>>>> 7ea29d5c (fix(targeting): keep track of open db instances and ensure deduplication of events)
62
import { Targeting as AmplitudeTargeting, TargetingParameters } from './typings/targeting';
73

84
export class Targeting implements AmplitudeTargeting {
@@ -12,32 +8,7 @@ export class Targeting implements AmplitudeTargeting {
128
this.evaluationEngine = new EvaluationEngine();
139
}
1410

15-
<<<<<<< HEAD
1611
evaluateTargeting({ event, sessionId, userProperties, deviceId, flag }: TargetingParameters) {
17-
=======
18-
evaluateTargeting = async ({
19-
apiKey,
20-
loggerProvider,
21-
event,
22-
sessionId,
23-
userProperties,
24-
deviceId,
25-
flag,
26-
}: TargetingParameters) => {
27-
const eventTypes =
28-
event && event.time
29-
? await targetingIDBStore.storeEventTypeForSession({
30-
loggerProvider: loggerProvider,
31-
apiKey: apiKey,
32-
sessionId,
33-
eventType: event.event_type,
34-
eventTime: event.time,
35-
})
36-
: undefined;
37-
38-
const eventStrings = eventTypes && new Set(Object.keys(eventTypes));
39-
40-
>>>>>>> 7ea29d5c (fix(targeting): keep track of open db instances and ensure deduplication of events)
4112
const context = {
4213
session_id: sessionId,
4314
event,

packages/targeting/test/targeting.test.ts

Lines changed: 0 additions & 37 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,8 @@
11
import { Targeting } from '../src/targeting';
2-
<<<<<<< HEAD
3-
=======
4-
import { targetingIDBStore } from '../src/targeting-idb-store';
5-
>>>>>>> 7ea29d5c (fix(targeting): keep track of open db instances and ensure deduplication of events)
62
import { flagConfig } from './flag-config-data';
73

84
const mockEvent = {
95
event_type: 'sign_in',
10-
time: 123,
116
};
127
const mockUserProperties = {};
138

@@ -17,39 +12,7 @@ describe('targeting', () => {
1712
const targeting = new Targeting();
1813
const mockEngineEvaluate = jest.fn();
1914
targeting.evaluationEngine.evaluate = mockEngineEvaluate;
20-
<<<<<<< HEAD
2115
targeting.evaluateTargeting({
22-
=======
23-
await targeting.evaluateTargeting({
24-
deviceId: '1a2b3c',
25-
userProperties: mockUserProperties,
26-
flag: flagConfig,
27-
sessionId: 123,
28-
apiKey: 'static_key',
29-
loggerProvider: mockLoggerProvider,
30-
});
31-
expect(mockEngineEvaluate).toHaveBeenCalledWith(
32-
{
33-
user: {
34-
device_id: '1a2b3c',
35-
user_properties: mockUserProperties,
36-
},
37-
session_id: 123,
38-
event_types: undefined,
39-
},
40-
[flagConfig],
41-
);
42-
});
43-
test('should pass a list of event types to the evaluation engine evaluate', async () => {
44-
jest.spyOn(targetingIDBStore, 'storeEventTypeForSession').mockResolvedValueOnce({
45-
'Add to Cart': { 123: { event_type: 'Add to Cart' } },
46-
Purchase: { 123: { event_type: 'Purchase' } },
47-
});
48-
const targeting = new Targeting();
49-
const mockEngineEvaluate = jest.fn();
50-
targeting.evaluationEngine.evaluate = mockEngineEvaluate;
51-
await targeting.evaluateTargeting({
52-
>>>>>>> 7ea29d5c (fix(targeting): keep track of open db instances and ensure deduplication of events)
5316
deviceId: '1a2b3c',
5417
event: mockEvent,
5518
userProperties: mockUserProperties,

0 commit comments

Comments
 (0)