fix session end bug

This commit is contained in:
Carl-Gerhard Lindesvärd
2024-02-19 11:58:58 +01:00
parent 95bc55b493
commit 6eae474eb2

View File

@@ -1,6 +1,6 @@
import type { Job } from 'bullmq';
import { getTime, toISOString } from '@mixan/common';
import { getTime } from '@mixan/common';
import { createEvent, getEvents } from '@mixan/db';
import type { EventsQueuePayloadCreateSessionEnd } from '@mixan/queue/src/queues';
@@ -43,7 +43,6 @@ export async function createSessionEnd(
return acc + event.duration;
}, 0);
let lastScreenView = events.find((event) => event.name === 'screen_view');
const sessionStart = events.find((event) => event.name === 'session_start');
const lastEvent = events[0];
const screenViews = events.filter((event) => event.name === 'screen_view');
@@ -52,31 +51,19 @@ export async function createSessionEnd(
throw new Error('Failed to find a session_start');
}
if (!lastScreenView && lastEvent) {
lastScreenView = lastEvent;
job.log(
`No screen_view found, using last event ${
lastEvent.name
} (${lastEvent.createdAt.toISOString()})`
);
}
if (!lastScreenView) {
job.log(
'No screen_view found, creating session_end event with session_start path'
);
throw new Error('No screen_view found');
if (!lastEvent) {
throw new Error('No last event found');
}
return createEvent({
...sessionStart,
properties: {
...sessionStart.properties,
_bounce: screenViews.length === 1,
_bounce: screenViews.length <= 1,
},
name: 'session_end',
duration: sessionDuration,
path: lastScreenView?.path ?? sessionStart.path,
createdAt: new Date(getTime(lastScreenView.createdAt) + 100),
path: lastEvent.path,
createdAt: new Date(getTime(lastEvent?.createdAt) + 100),
});
}