@@ -304,6 +304,63 @@ usage.returnRequestMetrics = function(params) {
304304 return params . collectedMetrics ;
305305} ;
306306
307+ usage . updateEndSessionParams = function ( params , eventList , session_duration ) {
308+ var user = params . app_user ;
309+ if ( ! user || ! eventList || ! Array . isArray ( eventList ) ) {
310+ return ;
311+ }
312+ const up_extra = { av_prev : params . app_user . av , p_prev : params . app_user . p } ;
313+ if ( params . app_user . hadFatalCrash ) {
314+ up_extra . hadFatalCrash = params . app_user . hadFatalCrash ;
315+ }
316+ if ( params . app_user . hadAnyFatalCrash ) {
317+ up_extra . hadAnyFatalCrash = params . app_user . hadAnyFatalCrash ;
318+ }
319+ if ( params . app_user . hadNonfatalCrash ) {
320+ up_extra . hadNonfatalCrash = params . app_user . hadNonfatalCrash ;
321+ }
322+ if ( params . app_user . hadAnyNonfatalCrash ) {
323+ up_extra . hadAnyNonfatalCrash = params . app_user . hadAnyNonfatalCrash ;
324+ }
325+
326+ var drill_doc = {
327+ "key" : "[CLY]_session" ,
328+ "lsid" : user . lsid ,
329+ "segmentation" : user . lsparams ,
330+ "dur" : ( ( user . sd || 0 ) + ( session_duration || 0 ) ) ,
331+ "count" : 1 ,
332+ "up_extra" : up_extra
333+ } ;
334+ var lasts = ( user . ls * 1000 ) ;
335+ let idsplit = user . lsid . split ( "_" ) ;
336+ if ( idsplit [ 3 ] && idsplit [ 3 ] . length === 13 ) {
337+ lasts = parseInt ( idsplit [ 3 ] ) ;
338+ }
339+ drill_doc . _id = params . app_id + "_" + user . uid + "_" + user . lsid ;
340+ drill_doc . timestamp = lasts ;
341+ drill_doc . segmentation . ended = "true" ;
342+ eventList . push ( drill_doc ) ;
343+
344+ //Flush last view stored for user
345+ if ( user . last_view ) {
346+ user . last_view . segments = user . last_view . segments || { } ;
347+ user . last_view . segments . exit = 1 ;
348+ if ( user . vc < 2 ) {
349+ user . last_view . segments . bounce = 1 ;
350+ }
351+ var lastViewDoc = {
352+ "key" : "[CLY]_view" , //Will be renamed to [CLY]_view_update before inserting to drill
353+ "name" : user . last_view . name ,
354+ "segmentation" : user . last_view . segments ,
355+ "dur" : user . last_view . duration || 0 ,
356+ "_id" : ( user . last_view . _idv ? ( params . app_id + "_" + user . uid + '_' + user . last_view . _idv + '_up' ) : ( user . lvid + '_up' ) ) ,
357+ "timestamp" : user . last_view . ts ,
358+ "_system_auto_added" : true
359+ } ;
360+ eventList . push ( lastViewDoc ) ;
361+ }
362+ } ;
363+
307364usage . processSession = function ( ob ) {
308365 var params = ob . params ;
309366 var userProps = { } ;
@@ -333,43 +390,17 @@ usage.processSession = function(ob) {
333390 delete params . qstring . begin_session ; //do not start a new session.
334391 }
335392 else {
336-
337393 if ( params . app_user [ common . dbUserMap . has_ongoing_session ] ) {
338394 params . qstring . end_session = { "lsid" : ob . params . app_user . lsid , "ls" : ob . params . app_user . ls , "sd" : ob . params . app_user . sd } ;
339395 }
340396 userProps [ common . dbUserMap . last_begin_session_timestamp ] = params . time . timestamp ;
341397 userProps . lsid = params . request_id ;
342398
343399 if ( params . app_user [ common . dbUserMap . has_ongoing_session ] ) {
344- var drill_updates = { } ;
345400 if ( params . app_user . lsid ) {
346- if ( params . app_user . sd > 0 ) {
347- drill_updates . dur = params . app_user . sd ;
348- }
349- if ( params . app_user . custom && Object . keys ( params . app_user . custom ) . length > 0 ) {
350- drill_updates . custom = JSON . parse ( JSON . stringify ( params . app_user . custom ) ) ;
351- }
352401 try {
353- var lasts = ( params . app_user . ls * 1000 ) ;
354- let idsplit = params . app_user . lsid . split ( "_" ) ;
355- if ( idsplit [ 3 ] && idsplit [ 3 ] . length === 13 ) {
356- lasts = parseInt ( idsplit [ 3 ] ) ;
357- }
358402 params . qstring . events = params . qstring . events || [ ] ;
359- const up_extra = { av_prev : params . app_user . av } ;
360- if ( params . app_user . hadFatalCrash ) {
361- up_extra . hadFatalCrash = params . app_user . hadFatalCrash ;
362- }
363- if ( params . app_user . hadAnyFatalCrash ) {
364- up_extra . hadAnyFatalCrash = params . app_user . hadAnyFatalCrash ;
365- }
366- if ( params . app_user . hadNonfatalCrash ) {
367- up_extra . hadNonfatalCrash = params . app_user . hadNonfatalCrash ;
368- }
369- if ( params . app_user . hadAnyNonfatalCrash ) {
370- up_extra . hadAnyNonfatalCrash = params . app_user . hadAnyNonfatalCrash ;
371- }
372-
403+ usage . updateEndSessionParams ( params , params . qstring . events ) ;
373404 if ( ! params . app_user . hadFatalCrash ) {
374405 userProps . hadAnyFatalCrash = moment ( params . time . timestamp ) . unix ( ) ;
375406 }
@@ -384,15 +415,6 @@ usage.processSession = function(ob) {
384415 userProps . hadNonfatalCrash = false ;
385416 }
386417
387- params . qstring . events . unshift ( {
388- "_id" : params . app_user . lsid ,
389- "key" : "[CLY]_session" ,
390- "segmentation" : params . app_user . lsparams || { ended : "true" } ,
391- "dur" : ( drill_updates . dur || 0 ) ,
392- "count" : 1 ,
393- "timestamp" : lasts ,
394- up_extra,
395- } ) ;
396418 }
397419 catch ( ex ) {
398420 log . e ( "Error adding previous session end event: " + ex ) ;
@@ -417,7 +439,13 @@ usage.processSession = function(ob) {
417439 if ( ! update . $inc ) {
418440 update . $inc = { } ;
419441 }
442+ if ( ! update . $unset ) {
443+ update . $unset = { } ;
444+ }
445+ delete params . app_user . last_view ;
446+ update . $unset . last_view = "" ;
420447 update . $inc . sc = 1 ;
448+
421449 }
422450 }
423451 else if ( params . qstring . end_session && params . app_user && params . app_user [ common . dbUserMap . has_ongoing_session ] ) {
@@ -426,53 +454,11 @@ usage.processSession = function(ob) {
426454 userProps [ common . dbUserMap . last_end_session_timestamp ] = params . time . timestamp ;
427455 }
428456 else {
429- var drill_updates2 = { } ;
430457 if ( params . app_user . lsid ) {
431- drill_updates2 . dur = ( params . app_user . sd || 0 ) + ( session_duration || 0 ) ;
432- if ( drill_updates2 . dur === 0 ) {
433- delete drill_updates2 . dur ;
434- }
435- if ( params . app_user . custom && Object . keys ( params . app_user . custom ) . length > 0 ) {
436- drill_updates2 . custom = JSON . parse ( JSON . stringify ( params . app_user . custom ) ) ;
437- }
438- drill_updates2 [ "sg.ended" ] = "true" ;
439- drill_updates2 . lu = new Date ( ) ;
440- //if (drill_updates2.dur || drill_updates2.custom) {
441- //ob.drill_updates.push({"updateOne": {"filter": {"_id": params.app_user.lsid}, "update": {"$set": drill_updates2}}});
442- //}
443- var lasts2 = ( params ?. app_user ?. ls * 1000 ) ;
444- let idsplit = params . app_user . lsid . split ( "_" ) ;
445- if ( idsplit [ 3 ] && idsplit [ 3 ] . length === 13 ) {
446- lasts2 = parseInt ( idsplit [ 3 ] ) ;
447- }
448-
449458 params . qstring . events = params . qstring . events || [ ] ;
450- const up_extra = { av_prev : params . app_user . av } ;
451- if ( params . app_user . hadFatalCrash ) {
452- up_extra . hadFatalCrash = params . app_user . hadFatalCrash ;
453- }
454- if ( params . app_user . hadAnyFatalCrash ) {
455- up_extra . hadAnyFatalCrash = params . app_user . hadAnyFatalCrash ;
456- }
457- if ( params . app_user . hadNonfatalCrash ) {
458- up_extra . hadNonfatalCrash = params . app_user . hadNonfatalCrash ;
459- }
460- if ( params . app_user . hadAnyNonfatalCrash ) {
461- up_extra . hadAnyNonfatalCrash = params . app_user . hadAnyNonfatalCrash ;
462- }
463-
464- params . qstring . events . unshift ( {
465- "_id" : params . app_user . lsid ,
466- "key" : "[CLY]_session" ,
467- "segmentation" : params . app_user . lsparams || { ended : "true" } ,
468- "dur" : ( drill_updates2 . dur || 0 ) ,
469- "count" : 1 ,
470- "timestamp" : lasts2 ,
471- up_extra,
472- } ) ;
473-
459+ console . log ( "Ending previous session" + params . app_user . lsid ) ;
460+ usage . updateEndSessionParams ( params , params . qstring . events , session_duration ) ;
474461 }
475- userProps . data = { } ;
476462 }
477463 if ( params . app_user [ common . dbUserMap . has_ongoing_session ] ) {
478464 if ( ! update . $unset ) {
0 commit comments