@@ -48,16 +48,16 @@ class OSInAppMessageController implements OSDynamicTriggerControllerObserver, OS
48
48
// IAM clicks that have been successfully posted to our backend and should not be counted again
49
49
@ NonNull final private Set <String > clickedClickIds ;
50
50
// Ordered IAMs queued to display, includes the message currently displaying, if any.
51
- @ NonNull final ArrayList <OSInAppMessage > messageDisplayQueue ;
51
+ @ NonNull final private ArrayList <OSInAppMessage > messageDisplayQueue ;
52
52
// IAMs displayed with last displayed time and quantity of displays data
53
53
// This is retrieved from a DB Table that take care of each object to be unique
54
54
@ NonNull private List <OSInAppMessage > redisplayedInAppMessages ;
55
55
56
- boolean inAppMessagingEnabled = true ;
57
- boolean inAppMessageShowing = false ;
56
+ private boolean inAppMessagingEnabled = true ;
57
+ private boolean inAppMessageShowing = false ;
58
58
59
59
@ Nullable Date lastTimeInAppDismissed ;
60
- int htmlNetworkRequestAttemptCount = 0 ;
60
+ private int htmlNetworkRequestAttemptCount = 0 ;
61
61
62
62
@ Nullable private static OSInAppMessageController sharedInstance ;
63
63
public static OSInAppMessageController getController () {
@@ -74,7 +74,7 @@ public static OSInAppMessageController getController() {
74
74
return sharedInstance ;
75
75
}
76
76
77
- protected OSInAppMessageController (OneSignalDbHelper dbInstance ) {
77
+ protected OSInAppMessageController (OneSignalDbHelper dbHelper ) {
78
78
messages = new ArrayList <>();
79
79
dismissedMessages = OSUtils .newConcurrentSet ();
80
80
messageDisplayQueue = new ArrayList <>();
@@ -107,11 +107,11 @@ protected OSInAppMessageController(OneSignalDbHelper dbInstance) {
107
107
if (tempClickedMessageIdsSet != null )
108
108
clickedClickIds .addAll (tempClickedMessageIdsSet );
109
109
110
- initRedisplayData (dbInstance );
110
+ initRedisplayData (dbHelper );
111
111
}
112
112
113
- void initRedisplayData (OneSignalDbHelper dbInstance ) {
114
- inAppMessageRepository = new OSInAppMessageRepository (dbInstance );
113
+ protected void initRedisplayData (OneSignalDbHelper dbHelper ) {
114
+ inAppMessageRepository = new OSInAppMessageRepository (dbHelper );
115
115
redisplayedInAppMessages = inAppMessageRepository .getRedisplayedInAppMessages ();
116
116
117
117
OneSignal .Log (OneSignal .LOG_LEVEL .DEBUG , "redisplayedInAppMessages: " + redisplayedInAppMessages .toString ());
@@ -143,7 +143,7 @@ void initWithCachedInAppMessages() {
143
143
144
144
/**
145
145
* Called after the device is registered from UserStateSynchronizer
146
- * which is the REST call to create the player record on_session
146
+ * which is the REST call to create the player record on_session
147
147
*/
148
148
void receivedInAppMessageJson (@ NonNull JSONArray json ) throws JSONException {
149
149
// Cache copy for quick cold starts
@@ -402,7 +402,7 @@ private void setDataForRedisplay(OSInAppMessage message) {
402
402
private void queueMessageForDisplay (@ NonNull OSInAppMessage message ) {
403
403
synchronized (messageDisplayQueue ) {
404
404
// Make sure no message is ever added to the queue more than once
405
- if (!isInAppMessageQueued (message )) {
405
+ if (!messageDisplayQueue . contains (message )) {
406
406
messageDisplayQueue .add (message );
407
407
OneSignal .onesignalLog (OneSignal .LOG_LEVEL .DEBUG , "In app message with id, " + message .messageId + ", added to the queue" );
408
408
}
@@ -420,17 +420,6 @@ private void queueMessageForDisplay(@NonNull OSInAppMessage message) {
420
420
}
421
421
}
422
422
423
- /**
424
- * Check the messageDisplayQueue for the message by messageId
425
- */
426
- private boolean isInAppMessageQueued (OSInAppMessage message ) {
427
- for (OSInAppMessage inAppMessage : messageDisplayQueue ) {
428
- if (message .messageId .equals (inAppMessage .messageId ))
429
- return true ;
430
- }
431
- return false ;
432
- }
433
-
434
423
boolean isInAppMessageShowing () {
435
424
return inAppMessageShowing ;
436
425
}
@@ -467,8 +456,7 @@ void messageWasDismissed(@NonNull OSInAppMessage message) {
467
456
private void dismissCurrentMessage () {
468
457
synchronized (messageDisplayQueue ) {
469
458
if (messageDisplayQueue .size () > 0 ) {
470
- String removedMessageId = messageDisplayQueue .get (0 ).messageId ;
471
- messageDisplayQueue .remove (0 );
459
+ String removedMessageId = messageDisplayQueue .remove (0 ).messageId ;
472
460
OneSignal .onesignalLog (OneSignal .LOG_LEVEL .DEBUG , "In app message with id, " + removedMessageId + ", dismissed (removed) from the queue!" );
473
461
}
474
462
@@ -522,7 +510,7 @@ public void run() {
522
510
return "in_app_messages/" + message .messageId + "/variants/" + variantId + "/html?app_id=" + OneSignal .appId ;
523
511
}
524
512
525
- public void displayMessage (@ NonNull final OSInAppMessage message ) {
513
+ private void displayMessage (@ NonNull final OSInAppMessage message ) {
526
514
if (!inAppMessagingEnabled ) {
527
515
OneSignal .onesignalLog (OneSignal .LOG_LEVEL .VERBOSE , "In app messaging is currently paused, iam will not be shown!" );
528
516
return ;
@@ -614,9 +602,9 @@ public void messageTriggerConditionChanged() {
614
602
}
615
603
616
604
/**
617
- * Part of redisplay logic
605
+ * Part of redisplay logic
618
606
*
619
- * Make all messages with redisplay available if:
607
+ * Make all messages with redisplay available if:
620
608
* - Already displayed
621
609
* - At least one Trigger has changed
622
610
*/
@@ -630,10 +618,11 @@ private void makeRedisplayMessagesAvailableWithTriggers(Collection<String> newTr
630
618
}
631
619
632
620
/**
633
- * Trigger logic
634
- * These methods mostly pass data to the Trigger Controller, but also cause the SDK to
635
- * re-evaluate messages to see if we should display a message now that the trigger
636
- * conditions have changed.
621
+ * Trigger logic
622
+ *
623
+ * These methods mostly pass data to the Trigger Controller, but also cause the SDK to
624
+ * re-evaluate messages to see if we should display/redisplay a message now that the trigger
625
+ * conditions have changed.
637
626
*/
638
627
void addTriggers (Map <String , Object > newTriggers ) {
639
628
triggerController .addTriggers (newTriggers );
@@ -657,4 +646,14 @@ void setInAppMessagingEnabled(boolean enabled) {
657
646
Object getTriggerValue (String key ) {
658
647
return triggerController .getTriggerValue (key );
659
648
}
649
+
650
+ @ NonNull
651
+ public ArrayList <OSInAppMessage > getInAppMessageDisplayQueue () {
652
+ return messageDisplayQueue ;
653
+ }
654
+
655
+ @ NonNull
656
+ public List <OSInAppMessage > getRedisplayedInAppMessages () {
657
+ return redisplayedInAppMessages ;
658
+ }
660
659
}
0 commit comments