Skip to content

Commit e9a1dc7

Browse files
committed
Create OSTaskRemoteController subclass of OSTaskController
* Separate remote param peding task controller from a general pending task controller
1 parent a50d2db commit e9a1dc7

File tree

3 files changed

+180
-167
lines changed

3 files changed

+180
-167
lines changed

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

Lines changed: 2 additions & 64 deletions
Original file line numberDiff line numberDiff line change
@@ -15,79 +15,17 @@ class OSTaskController {
1515

1616
static final String OS_PENDING_EXECUTOR = "OS_PENDING_EXECUTOR_";
1717

18-
// Available task for delay
19-
static final String GET_TAGS = "getTags()";
20-
static final String SET_SMS_NUMBER = "setSMSNumber()";
21-
static final String SET_EMAIL = "setEmail()";
22-
static final String LOGOUT_SMS_NUMBER = "logoutSMSNumber()";
23-
static final String LOGOUT_EMAIL = "logoutEmail()";
24-
static final String SYNC_HASHED_EMAIL = "syncHashedEmail()";
25-
static final String SET_EXTERNAL_USER_ID = "setExternalUserId()";
26-
static final String SET_SUBSCRIPTION = "setSubscription()";
27-
static final String PROMPT_LOCATION = "promptLocation()";
28-
static final String IDS_AVAILABLE = "idsAvailable()";
29-
static final String SEND_TAG = "sendTag()";
30-
static final String SEND_TAGS = "sendTags()";
31-
static final String SET_LOCATION_SHARED = "setLocationShared()";
32-
static final String SET_REQUIRES_USER_PRIVACY_CONSENT = "setRequiresUserPrivacyConsent()";
33-
static final String UNSUBSCRIBE_WHEN_NOTIFICATION_ARE_DISABLED = "unsubscribeWhenNotificationsAreDisabled()";
34-
static final String HANDLE_NOTIFICATION_OPEN = "handleNotificationOpen()";
35-
static final String CLEAR_NOTIFICATIONS = "clearOneSignalNotifications()";
36-
static final String REMOVE_GROUPED_NOTIFICATIONS = "removeGroupedNotifications()";
37-
static final String REMOVE_NOTIFICATION = "removeNotification()";
38-
static final String PAUSE_IN_APP_MESSAGES = "pauseInAppMessages()";
39-
static final String APP_LOST_FOCUS = "onAppLostFocus()";
40-
static final String SEND_OUTCOME = "sendOutcome()";
41-
static final String SEND_UNIQUE_OUTCOME = "sendUniqueOutcome()";
42-
static final String SEND_OUTCOME_WITH_VALUE = "sendOutcomeWithValue()";
43-
static final HashSet<String> METHODS_AVAILABLE_FOR_DELAY = new HashSet<>(Arrays.asList(
44-
GET_TAGS,
45-
SET_SMS_NUMBER,
46-
SET_EMAIL,
47-
LOGOUT_SMS_NUMBER,
48-
LOGOUT_EMAIL,
49-
SYNC_HASHED_EMAIL,
50-
SET_EXTERNAL_USER_ID,
51-
SET_SUBSCRIPTION,
52-
PROMPT_LOCATION,
53-
IDS_AVAILABLE,
54-
SEND_TAG,
55-
SEND_TAGS,
56-
SET_LOCATION_SHARED,
57-
SET_REQUIRES_USER_PRIVACY_CONSENT,
58-
UNSUBSCRIBE_WHEN_NOTIFICATION_ARE_DISABLED,
59-
HANDLE_NOTIFICATION_OPEN,
60-
APP_LOST_FOCUS,
61-
SEND_OUTCOME,
62-
SEND_UNIQUE_OUTCOME,
63-
SEND_OUTCOME_WITH_VALUE,
64-
REMOVE_GROUPED_NOTIFICATIONS,
65-
REMOVE_NOTIFICATION,
66-
CLEAR_NOTIFICATIONS
67-
));
68-
6918
// The concurrent queue in which we pin pending tasks upon finishing initialization
7019
private final ConcurrentLinkedQueue<Runnable> taskQueueWaitingForInit = new ConcurrentLinkedQueue<>();
7120
private final AtomicLong lastTaskId = new AtomicLong();
7221
private ExecutorService pendingTaskExecutor;
7322

74-
private final OSLogger logger;
75-
private final OSRemoteParamController paramController;
23+
protected final OSLogger logger;
7624

77-
OSTaskController(OSRemoteParamController paramController, OSLogger logger) {
78-
this.paramController = paramController;
25+
OSTaskController(OSLogger logger) {
7926
this.logger = logger;
8027
}
8128

82-
/**
83-
* Check if task should be queue
84-
*
85-
* @return true if remote params aren't available and current method needs them otherwise false
86-
* */
87-
boolean shouldQueueTaskForInit(String task) {
88-
return !paramController.isRemoteParamsCallDone() && METHODS_AVAILABLE_FOR_DELAY.contains(task);
89-
}
90-
9129
boolean shouldRunTaskThroughQueue() {
9230
// Don't schedule again a running pending task
9331
if (Thread.currentThread().getName().contains(OS_PENDING_EXECUTOR))
Lines changed: 75 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,75 @@
1+
package com.onesignal;
2+
3+
import java.util.Arrays;
4+
import java.util.HashSet;
5+
6+
class OSTaskRemoteController extends OSTaskController {
7+
8+
// Available task for delay
9+
static final String GET_TAGS = "getTags()";
10+
static final String SET_SMS_NUMBER = "setSMSNumber()";
11+
static final String SET_EMAIL = "setEmail()";
12+
static final String LOGOUT_SMS_NUMBER = "logoutSMSNumber()";
13+
static final String LOGOUT_EMAIL = "logoutEmail()";
14+
static final String SYNC_HASHED_EMAIL = "syncHashedEmail()";
15+
static final String SET_EXTERNAL_USER_ID = "setExternalUserId()";
16+
static final String SET_SUBSCRIPTION = "setSubscription()";
17+
static final String PROMPT_LOCATION = "promptLocation()";
18+
static final String IDS_AVAILABLE = "idsAvailable()";
19+
static final String SEND_TAG = "sendTag()";
20+
static final String SEND_TAGS = "sendTags()";
21+
static final String SET_LOCATION_SHARED = "setLocationShared()";
22+
static final String SET_REQUIRES_USER_PRIVACY_CONSENT = "setRequiresUserPrivacyConsent()";
23+
static final String UNSUBSCRIBE_WHEN_NOTIFICATION_ARE_DISABLED = "unsubscribeWhenNotificationsAreDisabled()";
24+
static final String HANDLE_NOTIFICATION_OPEN = "handleNotificationOpen()";
25+
static final String CLEAR_NOTIFICATIONS = "clearOneSignalNotifications()";
26+
static final String REMOVE_GROUPED_NOTIFICATIONS = "removeGroupedNotifications()";
27+
static final String REMOVE_NOTIFICATION = "removeNotification()";
28+
static final String PAUSE_IN_APP_MESSAGES = "pauseInAppMessages()";
29+
static final String APP_LOST_FOCUS = "onAppLostFocus()";
30+
static final String SEND_OUTCOME = "sendOutcome()";
31+
static final String SEND_UNIQUE_OUTCOME = "sendUniqueOutcome()";
32+
static final String SEND_OUTCOME_WITH_VALUE = "sendOutcomeWithValue()";
33+
static final HashSet<String> METHODS_AVAILABLE_FOR_DELAY = new HashSet<>(Arrays.asList(
34+
GET_TAGS,
35+
SET_SMS_NUMBER,
36+
SET_EMAIL,
37+
LOGOUT_SMS_NUMBER,
38+
LOGOUT_EMAIL,
39+
SYNC_HASHED_EMAIL,
40+
SET_EXTERNAL_USER_ID,
41+
SET_SUBSCRIPTION,
42+
PROMPT_LOCATION,
43+
IDS_AVAILABLE,
44+
SEND_TAG,
45+
SEND_TAGS,
46+
SET_LOCATION_SHARED,
47+
SET_REQUIRES_USER_PRIVACY_CONSENT,
48+
UNSUBSCRIBE_WHEN_NOTIFICATION_ARE_DISABLED,
49+
HANDLE_NOTIFICATION_OPEN,
50+
APP_LOST_FOCUS,
51+
SEND_OUTCOME,
52+
SEND_UNIQUE_OUTCOME,
53+
SEND_OUTCOME_WITH_VALUE,
54+
REMOVE_GROUPED_NOTIFICATIONS,
55+
REMOVE_NOTIFICATION,
56+
CLEAR_NOTIFICATIONS
57+
));
58+
59+
private final OSRemoteParamController paramController;
60+
61+
OSTaskRemoteController(OSRemoteParamController paramController, OSLogger logger) {
62+
super(logger);
63+
this.paramController = paramController;
64+
}
65+
66+
/**
67+
* Check if task should be queue
68+
*
69+
* @return true if remote params aren't available and current method needs them otherwise false
70+
* */
71+
boolean shouldQueueTaskForInit(String task) {
72+
return !paramController.isRemoteParamsCallDone() && METHODS_AVAILABLE_FOR_DELAY.contains(task);
73+
}
74+
75+
}

0 commit comments

Comments
 (0)