1
- import { GleapEventManager , GleapTranslationManager , GleapFrameManager , GleapNotificationManager , GleapStreamedEvent , GleapBannerManager } from "./Gleap" ;
2
- import { eraseGleapCookie , getGleapCookie , loadFromGleapCache , saveToGleapCache , setGleapCookie } from "./GleapHelper" ;
1
+ import {
2
+ GleapEventManager ,
3
+ GleapTranslationManager ,
4
+ GleapFrameManager ,
5
+ GleapNotificationManager ,
6
+ GleapStreamedEvent ,
7
+ GleapBannerManager ,
8
+ } from "./Gleap" ;
9
+ import {
10
+ eraseGleapCookie ,
11
+ getGleapCookie ,
12
+ loadFromGleapCache ,
13
+ saveToGleapCache ,
14
+ setGleapCookie ,
15
+ } from "./GleapHelper" ;
3
16
import GleapTooltipManager from "./GleapTooltipManager" ;
4
17
5
18
export default class GleapSession {
@@ -15,7 +28,7 @@ export default class GleapSession {
15
28
email : "" ,
16
29
userId : "" ,
17
30
phone : "" ,
18
- value : 0
31
+ value : 0 ,
19
32
} ;
20
33
ready = false ;
21
34
onSessionReadyListener = [ ] ;
@@ -37,23 +50,29 @@ export default class GleapSession {
37
50
*/
38
51
getName ( ) {
39
52
try {
40
- return this . session . name ? this . session . name . split ( ' ' ) [ 0 ] . split ( '@' ) [ 0 ] . split ( '.' ) [ 0 ] . split ( '+' ) [ 0 ] : "" ;
53
+ return this . session . name
54
+ ? this . session . name
55
+ . split ( " " ) [ 0 ]
56
+ . split ( "@" ) [ 0 ]
57
+ . split ( "." ) [ 0 ]
58
+ . split ( "+" ) [ 0 ]
59
+ : "" ;
41
60
} catch ( exp ) {
42
61
return this . session . name ;
43
62
}
44
63
}
45
64
46
65
/**
47
66
* Returns the Gleap session object.
48
- * @returns
67
+ * @returns
49
68
*/
50
69
getSession ( ) {
51
70
return this . session ;
52
71
}
53
72
54
73
/**
55
74
* Returns the Gleap session object.
56
- * @returns
75
+ * @returns
57
76
*/
58
77
getGleapId ( ) {
59
78
if ( this . session && this . session . gleapId ) {
@@ -74,7 +93,7 @@ export default class GleapSession {
74
93
return false ;
75
94
}
76
95
77
- constructor ( ) { }
96
+ constructor ( ) { }
78
97
79
98
setOnSessionReady = ( onSessionReady ) => {
80
99
if ( this . ready ) {
@@ -94,17 +113,20 @@ export default class GleapSession {
94
113
95
114
clearSession = ( attemp = 0 , retry = true ) => {
96
115
if ( this . session && this . session . gleapHash ) {
97
- GleapEventManager . notifyEvent ( "unregister-pushmessage-group" , `gleapuser-${ this . session . gleapHash } ` ) ;
116
+ GleapEventManager . notifyEvent (
117
+ "unregister-pushmessage-group" ,
118
+ `gleapuser-${ this . session . gleapHash } `
119
+ ) ;
98
120
}
99
121
100
122
try {
101
123
saveToGleapCache ( `session-${ this . sdkKey } ` , null ) ;
102
- } catch ( exp ) { }
124
+ } catch ( exp ) { }
103
125
104
126
if ( this . useCookies ) {
105
127
try {
106
128
eraseGleapCookie ( `session-${ this . sdkKey } ` ) ;
107
- } catch ( exp ) { }
129
+ } catch ( exp ) { }
108
130
}
109
131
110
132
this . ready = false ;
@@ -115,20 +137,23 @@ export default class GleapSession {
115
137
email : "" ,
116
138
userId : "" ,
117
139
phone : "" ,
118
- value : 0
140
+ value : 0 ,
119
141
} ;
120
142
121
- GleapFrameManager . getInstance ( ) . sendMessage ( {
122
- name : "session-cleared"
123
- } , true ) ;
143
+ GleapFrameManager . getInstance ( ) . sendMessage (
144
+ {
145
+ name : "session-cleared" ,
146
+ } ,
147
+ true
148
+ ) ;
124
149
GleapNotificationManager . getInstance ( ) . clearAllNotifications ( false ) ;
125
150
GleapNotificationManager . getInstance ( ) . setNotificationCount ( 0 ) ;
126
151
GleapBannerManager . getInstance ( ) . removeBannerUI ( ) ;
127
152
128
153
if ( retry ) {
129
154
if ( ! isNaN ( attemp ) ) {
130
155
// Exponentially retry to renew session.
131
- const newTimeout = ( Math . pow ( attemp , 2 ) * 10 ) ;
156
+ const newTimeout = Math . pow ( attemp , 2 ) * 10 ;
132
157
setTimeout ( ( ) => {
133
158
this . startSession ( attemp + 1 ) ;
134
159
} , newTimeout * 1000 ) ;
@@ -143,20 +168,30 @@ export default class GleapSession {
143
168
144
169
// Unregister previous group.
145
170
if ( this . session && this . session . gleapHash ) {
146
- GleapEventManager . notifyEvent ( "unregister-pushmessage-group" , `gleapuser-${ this . session . gleapHash } ` ) ;
171
+ GleapEventManager . notifyEvent (
172
+ "unregister-pushmessage-group" ,
173
+ `gleapuser-${ this . session . gleapHash } `
174
+ ) ;
147
175
}
148
176
149
177
saveToGleapCache ( `session-${ this . sdkKey } ` , session ) ;
150
178
if ( this . useCookies ) {
151
- setGleapCookie ( `session-${ this . sdkKey } ` , encodeURIComponent ( JSON . stringify ( session ) ) , 365 ) ;
179
+ setGleapCookie (
180
+ `session-${ this . sdkKey } ` ,
181
+ encodeURIComponent ( JSON . stringify ( session ) ) ,
182
+ 365
183
+ ) ;
152
184
}
153
185
154
186
this . session = session ;
155
187
this . ready = true ;
156
188
157
189
// Register new push group.
158
190
if ( this . session && this . session . gleapHash ) {
159
- GleapEventManager . notifyEvent ( "register-pushmessage-group" , `gleapuser-${ this . session . gleapHash } ` ) ;
191
+ GleapEventManager . notifyEvent (
192
+ "register-pushmessage-group" ,
193
+ `gleapuser-${ this . session . gleapHash } `
194
+ ) ;
160
195
}
161
196
162
197
this . notifySessionReady ( ) ;
@@ -172,10 +207,12 @@ export default class GleapSession {
172
207
this . validateSession ( sessionData ) ;
173
208
}
174
209
}
175
- } catch ( exp ) { }
210
+ } catch ( exp ) { }
176
211
177
212
// Try to load session from local storage, if not already loaded.
178
- if ( ! ( this . session && this . session . gleapId && this . session . gleapId . length > 0 ) ) {
213
+ if (
214
+ ! ( this . session && this . session . gleapId && this . session . gleapId . length > 0 )
215
+ ) {
179
216
const cachedSession = loadFromGleapCache ( `session-${ this . sdkKey } ` ) ;
180
217
if ( cachedSession ) {
181
218
this . validateSession ( cachedSession ) ;
@@ -192,7 +229,7 @@ export default class GleapSession {
192
229
http . setRequestHeader ( "Gleap-Id" , this . session . gleapId ) ;
193
230
http . setRequestHeader ( "Gleap-Hash" , this . session . gleapHash ) ;
194
231
}
195
- } catch ( exp ) { }
232
+ } catch ( exp ) { }
196
233
http . onreadystatechange = function ( e ) {
197
234
if ( http . readyState === 4 ) {
198
235
if ( http . status === 200 || http . status === 201 ) {
@@ -205,17 +242,19 @@ export default class GleapSession {
205
242
206
243
// Load tooltips.
207
244
GleapTooltipManager . getInstance ( ) . load ( ) ;
208
- } catch ( exp ) { }
245
+ } catch ( exp ) { }
209
246
} else {
210
247
if ( http . status !== 429 ) {
211
248
self . clearSession ( attemp , true ) ;
212
249
}
213
250
}
214
251
}
215
252
} ;
216
- http . send ( JSON . stringify ( {
217
- lang : GleapTranslationManager . getInstance ( ) . getActiveLanguage ( ) ,
218
- } ) ) ;
253
+ http . send (
254
+ JSON . stringify ( {
255
+ lang : GleapTranslationManager . getInstance ( ) . getActiveLanguage ( ) ,
256
+ } )
257
+ ) ;
219
258
} ;
220
259
221
260
notifySessionReady ( ) {
@@ -239,15 +278,28 @@ export default class GleapSession {
239
278
if ( this . session . userId . toString ( ) !== userId . toString ( ) ) {
240
279
return true ;
241
280
}
242
- } catch ( exp ) { }
281
+ } catch ( exp ) { }
243
282
283
+ return checkIfSessionDataNeedsUpdate ( userData ) ;
284
+ } ;
285
+
286
+ checkIfSessionDataNeedsUpdate = ( userData ) => {
244
287
if ( userData ) {
245
288
var userDataKeys = Object . keys ( userData ) ;
246
289
for ( var i = 0 ; i < userDataKeys . length ; i ++ ) {
247
290
var userDataKey = userDataKeys [ i ] ;
248
- if ( JSON . stringify ( this . session [ userDataKey ] ) !== JSON . stringify ( userData [ userDataKey ] ) ) {
291
+ if (
292
+ JSON . stringify ( this . session [ userDataKey ] ) !==
293
+ JSON . stringify ( userData [ userDataKey ] )
294
+ ) {
249
295
// Check custom data for a match.
250
- if ( ! ( this . session . customData && JSON . stringify ( this . session . customData [ userDataKey ] ) === JSON . stringify ( userData [ userDataKey ] ) ) ) {
296
+ if (
297
+ ! (
298
+ this . session . customData &&
299
+ JSON . stringify ( this . session . customData [ userDataKey ] ) ===
300
+ JSON . stringify ( userData [ userDataKey ] )
301
+ )
302
+ ) {
251
303
return true ;
252
304
}
253
305
}
@@ -258,6 +310,12 @@ export default class GleapSession {
258
310
} ;
259
311
260
312
updateSession = ( userData ) => {
313
+ // Check if session needs update.
314
+ const sessionNeedsUpdate = this . checkIfSessionDataNeedsUpdate ( userData ) ;
315
+ if ( ! sessionNeedsUpdate ) {
316
+ return ;
317
+ }
318
+
261
319
const self = this ;
262
320
return new Promise ( ( resolve , reject ) => {
263
321
// Wait for gleap session to be ready.
@@ -273,7 +331,7 @@ export default class GleapSession {
273
331
try {
274
332
http . setRequestHeader ( "Gleap-Id" , self . session . gleapId ) ;
275
333
http . setRequestHeader ( "Gleap-Hash" , self . session . gleapHash ) ;
276
- } catch ( exp ) { }
334
+ } catch ( exp ) { }
277
335
278
336
http . onerror = ( ) => {
279
337
reject ( ) ;
@@ -300,7 +358,7 @@ export default class GleapSession {
300
358
...userData ,
301
359
lang : GleapTranslationManager . getInstance ( ) . getActiveLanguage ( ) ,
302
360
} ,
303
- type : 'js' ,
361
+ type : "js" ,
304
362
sdkVersion : SDK_VERSION ,
305
363
ws : true ,
306
364
} )
@@ -330,7 +388,7 @@ export default class GleapSession {
330
388
try {
331
389
http . setRequestHeader ( "Gleap-Id" , self . session . gleapId ) ;
332
390
http . setRequestHeader ( "Gleap-Hash" , self . session . gleapHash ) ;
333
- } catch ( exp ) { }
391
+ } catch ( exp ) { }
334
392
335
393
http . onerror = ( ) => {
336
394
reject ( ) ;
@@ -358,15 +416,15 @@ export default class GleapSession {
358
416
} ;
359
417
360
418
var dataToSend = {
361
- ...userData
419
+ ...userData ,
362
420
} ;
363
421
364
422
if ( userData . customData ) {
365
- delete dataToSend [ ' customData' ] ;
423
+ delete dataToSend [ " customData" ] ;
366
424
dataToSend = {
367
425
...dataToSend ,
368
426
...userData . customData ,
369
- }
427
+ } ;
370
428
}
371
429
372
430
http . send (
@@ -396,7 +454,7 @@ export default class GleapSession {
396
454
try {
397
455
http . setRequestHeader ( "Gleap-Id" , self . session . gleapId ) ;
398
456
http . setRequestHeader ( "Gleap-Hash" , self . session . gleapHash ) ;
399
- } catch ( exp ) { }
457
+ } catch ( exp ) { }
400
458
401
459
http . onerror = ( ) => {
402
460
reject ( ) ;
@@ -417,9 +475,11 @@ export default class GleapSession {
417
475
}
418
476
}
419
477
} ;
420
- http . send ( JSON . stringify ( {
421
- outboundId : tourId
422
- } ) ) ;
478
+ http . send (
479
+ JSON . stringify ( {
480
+ outboundId : tourId ,
481
+ } )
482
+ ) ;
423
483
} ) ;
424
484
} ) ;
425
485
} ;
0 commit comments