Skip to content

Commit a42fbf9

Browse files
committed
refactor initialize, hasSessionTimedOut, performSessionEnd function
1 parent 8dfeb98 commit a42fbf9

File tree

2 files changed

+15
-13
lines changed

2 files changed

+15
-13
lines changed

src/sessionManager.ts

Lines changed: 14 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -33,22 +33,24 @@ export default function SessionManager(
3333

3434
this.initialize = function (): void {
3535
if (mpInstance._Store.sessionId) {
36-
if (hasSessionTimedOut(mpInstance._Store.dateLastEventSent.getTime())) {
36+
const { dateLastEventSent, SDKConfig } = mpInstance._Store;
37+
const { sessionTimeout } = SDKConfig;
38+
39+
if (hasSessionTimedOut(dateLastEventSent.getTime(), sessionTimeout)) {
3740
self.endSession();
3841
self.startNewSession();
3942
} else {
4043
// https://go.mparticle.com/work/SQDSDKS-6045
4144
// https://go.mparticle.com/work/SQDSDKS-6323
4245
const currentUser = mpInstance.Identity.getCurrentUser();
43-
const sdkIdentityRequest =
44-
mpInstance._Store.SDKConfig.identifyRequest;
46+
const sdkIdentityRequest = SDKConfig.identifyRequest;
4547

4648
if (
4749
hasIdentityRequestChanged(currentUser, sdkIdentityRequest)
4850
) {
4951
mpInstance.Identity.identify(
50-
mpInstance._Store.SDKConfig.identifyRequest,
51-
mpInstance._Store.SDKConfig.identityCallback
52+
sdkIdentityRequest,
53+
SDKConfig.identityCallback
5254
);
5355
mpInstance._Store.identifyCalled = true;
5456
mpInstance._Store.SDKConfig.identityCallback = null;
@@ -160,7 +162,9 @@ export default function SessionManager(
160162
}
161163

162164
if (cookies?.gs?.les) {
163-
if (hasSessionTimedOut(cookies.gs.les)) {
165+
const sessionTimeout = mpInstance._Store.SDKConfig.sessionTimeout;
166+
167+
if (hasSessionTimedOut(cookies.gs.les, sessionTimeout)) {
164168
performSessionEnd();
165169
} else {
166170
self.setSessionTimer();
@@ -210,29 +214,26 @@ export default function SessionManager(
210214
/**
211215
* Checks if the session has expired based on the last event timestamp
212216
* @param lastEventTimestamp - Unix timestamp in milliseconds of the last event
217+
* @param sessionTimeout - Session timeout in minutes
213218
* @returns true if the session has expired, false otherwise
214219
*/
215-
function hasSessionTimedOut(lastEventTimestamp: number): boolean {
216-
const sessionTimeoutInMilliseconds: number =
217-
mpInstance._Store.SDKConfig.sessionTimeout * 60000;
218-
const timeSinceLastEvent: number =
219-
new Date().getTime() - lastEventTimestamp;
220+
function hasSessionTimedOut(lastEventTimestamp: number, sessionTimeout: number): boolean {
221+
const sessionTimeoutInMilliseconds: number = sessionTimeout * 60000;
222+
const timeSinceLastEvent: number = Date.now() - lastEventTimestamp;
220223

221224
return timeSinceLastEvent >= sessionTimeoutInMilliseconds;
222225
}
223226

224227
/**
225228
* Performs session end operations:
226229
* - Logs a SessionEnd event
227-
* - Clears session start date
228230
* - Nullifies the session ID and related data
229231
* - Resets the time-on-site timer
230232
*/
231233
function performSessionEnd(): void {
232234
mpInstance._Events.logEvent({
233235
messageType: Types.MessageType.SessionEnd,
234236
});
235-
mpInstance._Store.sessionStartDate = null;
236237
mpInstance._Store.nullifySession();
237238
mpInstance._timeOnSiteTimer?.resetTimer();
238239
}

src/store.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -683,6 +683,7 @@ export default function Store(
683683
this.nullifySession = (): void => {
684684
this.sessionId = null;
685685
this.dateLastEventSent = null;
686+
this.sessionStartDate = null;
686687
this.sessionAttributes = {};
687688
this.localSessionAttributes = {};
688689
mpInstance._Persistence.update();

0 commit comments

Comments
 (0)