Skip to content

Commit 607e9ec

Browse files
committed
Minor cleanup across outcomes before release
* Removed some unnecessary null checks * New init for unattributedUniqueOutcomeEventsSentSet so we don't clear unique outcomes on UNATTRIBUTED sessions
1 parent c637e67 commit 607e9ec

File tree

3 files changed

+12
-16
lines changed

3 files changed

+12
-16
lines changed

OneSignalSDK/onesignal/src/main/java/com/onesignal/OSSessionManager.java

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -118,7 +118,6 @@ private void initSessionFromCache() {
118118
indirectNotificationIds = getLastNotificationsReceivedIds();
119119
else if (session.isDirect())
120120
directNotificationId = OutcomesUtils.getCachedNotificationOpenId();
121-
122121
}
123122

124123
void addSessionNotificationsIds(@NonNull JSONObject jsonObject) {

OneSignalSDK/onesignal/src/main/java/com/onesignal/OneSignal.java

Lines changed: 7 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -422,9 +422,7 @@ private static OSSessionManager.SessionListener getNewSessionListener() {
422422
return new OSSessionManager.SessionListener() {
423423
@Override
424424
public void onSessionEnding(@NonNull OSSessionManager.SessionResult lastSessionResult) {
425-
if (outcomeEventsController != null)
426-
outcomeEventsController.cleanOutcomes();
427-
425+
outcomeEventsController.cleanOutcomes();
428426
FocusTimeController.getInstance().onSessionEnded(lastSessionResult);
429427
}
430428
};
@@ -597,6 +595,7 @@ public static void setAppContext(@NonNull Context context) {
597595

598596
if (wasAppContextNull) {
599597
sessionManager = new OSSessionManager(getNewSessionListener());
598+
outcomeEventsController = new OutcomeEventsController(sessionManager, OneSignalDbHelper.getInstance(appContext), outcomeSettings);
600599
// Prefs require a context to save
601600
// If the previous state of appContext was null, kick off write in-case it was waiting
602601
OneSignalPrefs.startDelayedWrite();
@@ -667,7 +666,6 @@ public static void init(Context context, String googleProjectNumber, String oneS
667666
}
668667

669668
mInitBuilder = createInitBuilder(notificationOpenedHandler, notificationReceivedHandler);
670-
outcomeEventsController = new OutcomeEventsController(sessionManager, OneSignalDbHelper.getInstance(appContext), outcomeSettings);
671669

672670
if (!isGoogleProjectNumberRemote())
673671
mGoogleProjectNumber = googleProjectNumber;
@@ -2076,7 +2074,7 @@ public static void handleNotificationOpen(Context inContext, JSONArray data, boo
20762074
runNotificationOpenedCallback(data, true, fromAlert);
20772075

20782076
// Check if the notification click should lead to a DIRECT session
2079-
if (sessionManager != null && shouldInitDirectSessionFromNotificationOpen(inContext, fromAlert, urlOpened, defaultOpenActionDisabled)) {
2077+
if (shouldInitDirectSessionFromNotificationOpen(inContext, fromAlert, urlOpened, defaultOpenActionDisabled)) {
20802078
// We want to set the app entry state to NOTIFICATION_CLICK when coming from background
20812079
appEntryState = AppEntryAction.NOTIFICATION_CLICK;
20822080
sessionManager.onDirectSessionFromNotificationOpen(notificationId);
@@ -3089,7 +3087,7 @@ public static void sendOutcome(@NonNull String name) {
30893087
}
30903088

30913089
public static void sendOutcome(@NonNull String name, OutcomeCallback callback) {
3092-
if (!validateOutcomeEntry(name))
3090+
if (!isValidOutcomeEntry(name))
30933091
return;
30943092

30953093
outcomeEventsController.sendOutcomeEvent(name, callback);
@@ -3100,7 +3098,7 @@ public static void sendUniqueOutcome(@NonNull String name) {
31003098
}
31013099

31023100
public static void sendUniqueOutcome(@NonNull String name, OutcomeCallback callback) {
3103-
if (!validateOutcomeEntry(name))
3101+
if (!isValidOutcomeEntry(name))
31043102
return;
31053103

31063104
outcomeEventsController.sendUniqueOutcomeEvent(name, callback);
@@ -3111,17 +3109,13 @@ public static void sendOutcomeWithValue(@NonNull String name, float value) {
31113109
}
31123110

31133111
public static void sendOutcomeWithValue(@NonNull String name, float value, OutcomeCallback callback) {
3114-
if (!validateOutcomeEntry(name))
3112+
if (!isValidOutcomeEntry(name))
31153113
return;
31163114

31173115
outcomeEventsController.sendOutcomeEventWithValue(name, value, callback);
31183116
}
31193117

3120-
private static boolean validateOutcomeEntry(String name) {
3121-
if (outcomeEventsController == null) {
3122-
OneSignal.Log(LOG_LEVEL.ERROR, "Must call OneSignal.init first");
3123-
return false;
3124-
}
3118+
private static boolean isValidOutcomeEntry(String name) {
31253119
if (name == null || name.isEmpty()) {
31263120
OneSignal.Log(LOG_LEVEL.ERROR, "Outcome name must not be empty");
31273121
return false;

OneSignalSDK/onesignal/src/main/java/com/onesignal/OutcomeEventsController.java

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -56,9 +56,12 @@ public OutcomeEventsController(@NonNull OSSessionManager osSessionManager, @NonN
5656
* Init the sets used for tracking attributed and unattributed unique outcome events
5757
*/
5858
private void initUniqueOutcomeEventsSentSets() {
59-
attributedUniqueOutcomeEventsSentSet = OSUtils.newConcurrentSet();
60-
unattributedUniqueOutcomeEventsSentSet = OSUtils.newConcurrentSet();
59+
// If UNATTRIBUTED unique outcomes is already set in current session we don't want to clear it
60+
if (unattributedUniqueOutcomeEventsSentSet == null)
61+
unattributedUniqueOutcomeEventsSentSet = OSUtils.newConcurrentSet();
6162

63+
// Get all cached ATTRIBUTED unique outcomes
64+
attributedUniqueOutcomeEventsSentSet = OSUtils.newConcurrentSet();
6265
Set<String> tempAttributedUniqueOutcomeEventsSentSet = OneSignalPrefs.getStringSet(
6366
OneSignalPrefs.PREFS_ONESIGNAL,
6467
OneSignalPrefs.PREFS_OS_UNIQUE_OUTCOME_EVENTS_SENT,

0 commit comments

Comments
 (0)