@@ -22,9 +22,7 @@ import com.google.firebase.messaging.FirebaseMessaging
22
22
import com.google.gson.GsonBuilder
23
23
import com.google.gson.JsonSyntaxException
24
24
import com.google.gson.annotations.SerializedName
25
- import kotlinx.coroutines.CoroutineScope
26
- import kotlinx.coroutines.Dispatchers
27
- import kotlinx.coroutines.launch
25
+ import kotlinx.coroutines.*
28
26
import java.util.*
29
27
30
28
data class PamResponse (
@@ -274,8 +272,8 @@ class Pam {
274
272
private var sharedPreferences: SharedPreferences ? = null
275
273
276
274
init {
277
- queueTrackerManager.onNext = { eventName, payload, trackerCallback ->
278
- postTracker(eventName, payload, trackerCallback)
275
+ queueTrackerManager.onNext = { eventName, delayAfterPost, payload, trackerCallback ->
276
+ postTracker(eventName, delayAfterPost, payload, trackerCallback)
279
277
}
280
278
}
281
279
@@ -478,28 +476,56 @@ class Pam {
478
476
}
479
477
480
478
fun userLogin (customerID : String , callBack : (() -> Unit )? = null) {
479
+ val delay = 3000L
480
+
481
+ val deleteMedia = mapOf (
482
+ " _delete_media" to mapOf (
483
+ " android_notification" to " "
484
+ )
485
+ )
486
+ track(" delete_media" ,deleteMedia, delay, null )
487
+
481
488
custID = customerID
482
489
saveValue(SaveKey .CustomerID , customerID)
483
- track(" login" ) {
490
+ track(" login" , null , delayAfterPost = 2000L ) {
484
491
callBack?.invoke()
485
492
}
493
+
494
+ readValue(SaveKey .PushKey )?.let { deviceToken->
495
+ track(
496
+ " save_push" , mapOf (
497
+ " android_notification" to deviceToken
498
+ )
499
+ )
500
+ }
486
501
}
487
502
488
503
fun userLogout (callBack : (() -> Unit )? = null) {
489
- val payload = mapOf (
504
+
505
+ val deleteMediaPayload = mapOf (
490
506
" _delete_media" to mapOf (
491
507
" android_notification" to " "
492
508
)
493
509
)
494
510
495
- track(" logout" , payload) {
511
+ val delay = 3000L
512
+
513
+ track(" logout" , deleteMediaPayload,delay) {
496
514
this .custID = null
497
515
this .loginContactID = null
498
516
this .removeValue(SaveKey .CustomerID )
499
517
this .removeValue(SaveKey .LoginContactID )
500
518
callBack?.invoke()
501
519
}
502
520
521
+ readValue(SaveKey .PushKey )?.let { deviceToken->
522
+ track(
523
+ " save_push" , mapOf (
524
+ " android_notification" to deviceToken
525
+ )
526
+ )
527
+ }
528
+
503
529
}
504
530
505
531
private fun setDeviceToken (deviceToken : String ) {
@@ -514,15 +540,15 @@ class Pam {
514
540
fun track (
515
541
eventName : String ,
516
542
payload : Map <String , Any >? = null,
543
+ delayAfterPost : Long ,
517
544
trackerCallback : TrackerCallback ?
518
545
) {
519
-
520
546
val contactID = Pam .getContactID() ? : " "
521
547
if (eventName == " allow_consent" || eventName == " save_push" ){
522
- this .queueTrackerManager.enqueue(eventName, payload, trackerCallback)
548
+ this .queueTrackerManager.enqueue(eventName, payload, delayAfterPost, trackerCallback)
523
549
return
524
550
}else if (contactID != " " && allowTracking){
525
- this .queueTrackerManager.enqueue(eventName, payload, trackerCallback)
551
+ this .queueTrackerManager.enqueue(eventName, payload, delayAfterPost, trackerCallback)
526
552
return
527
553
}
528
554
@@ -536,6 +562,14 @@ class Pam {
536
562
}
537
563
}
538
564
565
+ fun track (
566
+ eventName : String ,
567
+ payload : Map <String , Any >? = null,
568
+ trackerCallback : TrackerCallback ?
569
+ ) {
570
+ track(eventName, payload, 0L ,trackerCallback)
571
+ }
572
+
539
573
fun isUserLoggedin (): Boolean {
540
574
if (custID == null ) {
541
575
custID = readValue(SaveKey .CustomerID )
@@ -617,6 +651,7 @@ class Pam {
617
651
618
652
private fun postTracker (
619
653
eventName : String ,
654
+ delayAfterPost : Long ,
620
655
payload : Map <String , Any >? ,
621
656
trackerCallBack : TrackerCallback ? = null
622
657
) {
@@ -653,13 +688,24 @@ class Pam {
653
688
}
654
689
}
655
690
656
- val task = CoroutineScope (Dispatchers .Main )
657
- task.launch {
691
+ CoroutineScope (Dispatchers .Default ).launch {
692
+
658
693
response?.let {
659
- trackerCallBack?.invoke(it)
694
+ withContext(Dispatchers .Main ){
695
+ trackerCallBack?.invoke(it)
696
+ }
697
+ }
698
+
699
+ if (delayAfterPost > 0L ) {
700
+ delay(delayAfterPost)
660
701
}
661
- queueTrackerManager.next()
702
+
703
+ withContext(Dispatchers .Main ){
704
+ queueTrackerManager.next()
705
+ }
706
+
662
707
}
708
+
663
709
} catch (e: JsonSyntaxException ) {
664
710
665
711
}
0 commit comments