Skip to content

Commit 99f323e

Browse files
authored
Merge pull request #662 from OneSignal/user_model/testing-cleanup
[User Model] Testing + Cleanup
2 parents b95d480 + b6c483e commit 99f323e

36 files changed

+372
-534
lines changed

android/build.gradle

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -34,5 +34,5 @@ android {
3434
}
3535

3636
dependencies {
37-
implementation 'com.onesignal:OneSignal:5.0.0-beta1'
37+
implementation 'com.onesignal:OneSignal:5.0.0-beta2'
3838
}

android/src/main/java/com/onesignal/flutter/OneSignalDebug.java

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -19,9 +19,8 @@
1919
import io.flutter.plugin.common.PluginRegistry.Registrar;
2020

2121
public class OneSignalDebug extends FlutterRegistrarResponder implements MethodCallHandler {
22-
private MethodChannel channel;
23-
24-
static void registerWith(BinaryMessenger messenger) {
22+
23+
static void registerWith(BinaryMessenger messenger) {
2524
OneSignalDebug controller = new OneSignalDebug();
2625
controller.messenger = messenger;
2726
controller.channel = new MethodChannel(messenger, "OneSignal#debug");

android/src/main/java/com/onesignal/flutter/OneSignalInAppMessages.java

Lines changed: 25 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -17,15 +17,14 @@
1717
import io.flutter.plugin.common.PluginRegistry.Registrar;
1818

1919
public class OneSignalInAppMessages extends FlutterRegistrarResponder implements MethodCallHandler,
20-
IInAppMessageClickHandler{
21-
private MethodChannel channel;
22-
20+
IInAppMessageClickHandler, IInAppMessageLifecycleHandler{
21+
2322
private IInAppMessageClickResult inAppMessageClickedResult;
2423
private boolean hasSetInAppMessageClickedHandler = false;
2524

2625
static void registerWith(BinaryMessenger messenger) {
2726
OneSignalInAppMessages sharedInstance = new OneSignalInAppMessages();
28-
27+
2928
sharedInstance.messenger = messenger;
3029
sharedInstance.channel = new MethodChannel(messenger, "OneSignal#inappmessages");
3130
sharedInstance.channel.setMethodCallHandler(sharedInstance);
@@ -109,26 +108,26 @@ public void inAppMessageClicked(IInAppMessageClickResult action) {
109108

110109
/* in app message lifecycle */
111110
public void setInAppMessageLifecycleHandler() {
112-
OneSignal.getInAppMessages().setInAppMessageLifecycleHandler(new IInAppMessageLifecycleHandler() {
113-
@Override
114-
public void onWillDisplayInAppMessage(IInAppMessage message) {
115-
invokeMethodOnUiThread("OneSignal#onWillDisplayInAppMessage", OneSignalSerializer.convertInAppMessageToMap(message));
116-
}
117-
118-
@Override
119-
public void onDidDisplayInAppMessage(IInAppMessage message) {
120-
invokeMethodOnUiThread("OneSignal#onDidDisplayInAppMessage", OneSignalSerializer.convertInAppMessageToMap(message));
121-
}
122-
123-
@Override
124-
public void onWillDismissInAppMessage(IInAppMessage message) {
125-
invokeMethodOnUiThread("OneSignal#onWillDismissInAppMessage", OneSignalSerializer.convertInAppMessageToMap(message));
126-
}
127-
128-
@Override
129-
public void onDidDismissInAppMessage(IInAppMessage message) {
130-
invokeMethodOnUiThread("OneSignal#onDidDismissInAppMessage", OneSignalSerializer.convertInAppMessageToMap(message));
131-
}
132-
});
133-
}
111+
OneSignal.getInAppMessages().setInAppMessageLifecycleHandler(this);
112+
}
113+
114+
@Override
115+
public void onWillDisplayInAppMessage(IInAppMessage message) {
116+
invokeMethodOnUiThread("OneSignal#onWillDisplayInAppMessage", OneSignalSerializer.convertInAppMessageToMap(message));
117+
}
118+
119+
@Override
120+
public void onDidDisplayInAppMessage(IInAppMessage message) {
121+
invokeMethodOnUiThread("OneSignal#onDidDisplayInAppMessage", OneSignalSerializer.convertInAppMessageToMap(message));
122+
}
123+
124+
@Override
125+
public void onWillDismissInAppMessage(IInAppMessage message) {
126+
invokeMethodOnUiThread("OneSignal#onWillDismissInAppMessage", OneSignalSerializer.convertInAppMessageToMap(message));
127+
}
128+
129+
@Override
130+
public void onDidDismissInAppMessage(IInAppMessage message) {
131+
invokeMethodOnUiThread("OneSignal#onDidDismissInAppMessage", OneSignalSerializer.convertInAppMessageToMap(message));
132+
}
134133
}

android/src/main/java/com/onesignal/flutter/OneSignalLocation.java

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,6 @@
1919
import io.flutter.plugin.common.PluginRegistry.Registrar;
2020

2121
public class OneSignalLocation extends FlutterRegistrarResponder implements MethodCallHandler {
22-
private MethodChannel channel;
2322

2423
static void registerWith(BinaryMessenger messenger) {
2524
OneSignalLocation controller = new OneSignalLocation();

android/src/main/java/com/onesignal/flutter/OneSignalNotifications.java

Lines changed: 28 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
package com.onesignal.flutter;
22

3+
import com.onesignal.debug.internal.logging.Logging;
34
import com.onesignal.OneSignal;
45
import com.onesignal.Continue;
56

@@ -37,12 +38,9 @@
3738
import io.flutter.plugin.common.PluginRegistry.Registrar;
3839

3940
public class OneSignalNotifications extends FlutterRegistrarResponder implements MethodCallHandler, INotificationClickHandler, INotificationWillShowInForegroundHandler, IPermissionChangedHandler {
40-
// private MethodChannel channel;
41-
4241
private boolean hasSetNotificationWillShowInForegroundHandler = false;
4342
private final HashMap<String, INotificationReceivedEvent> notificationReceivedEventCache = new HashMap<>();
4443

45-
4644
static void registerWith(BinaryMessenger messenger) {
4745
OneSignalNotifications controller = new OneSignalNotifications();
4846
controller.messenger = messenger;
@@ -52,7 +50,7 @@ static void registerWith(BinaryMessenger messenger) {
5250

5351
@Override
5452
public void onMethodCall(MethodCall call, Result result) {
55-
if (call.method.contentEquals("OneSignal#getPermission"))
53+
if (call.method.contentEquals("OneSignal#permission"))
5654
replySuccess(result, OneSignal.getNotifications().getPermission());
5755
else if (call.method.contentEquals("OneSignal#requestPermission"))
5856
this.requestPermission(call, result);
@@ -63,11 +61,11 @@ else if (call.method.contentEquals("OneSignal#removeGroupedNotifications"))
6361
else if (call.method.contentEquals("OneSignal#clearAll"))
6462
this.clearAll(call, result);
6563
else if (call.method.contentEquals("OneSignal#initNotificationOpenedHandlerParams"))
66-
this.initNotificationOpenedHandlerParams();
64+
this.initNotificationOpenedHandlerParams(call, result);
6765
else if (call.method.contentEquals("OneSignal#initNotificationWillShowInForegroundHandlerParams"))
6866
this.initNotificationWillShowInForegroundHandlerParams();
6967
else if (call.method.contentEquals("OneSignal#completeNotification"))
70-
this.initNotificationWillShowInForegroundHandlerParams();
68+
this.completeNotification(call, result);
7169
else if (call.method.contentEquals("OneSignal#lifecycleInit"))
7270
this.lifecycleInit();
7371
else
@@ -99,22 +97,23 @@ private void clearAll(MethodCall call, Result result) {
9997
}
10098

10199

102-
private void initNotificationOpenedHandlerParams() {
100+
private void initNotificationOpenedHandlerParams(MethodCall call, Result result) {
103101
OneSignal.getNotifications().setNotificationClickHandler(this);
102+
replySuccess(result, null);
104103
}
105104

106105

107106
private void initNotificationWillShowInForegroundHandlerParams() {
108107
this.hasSetNotificationWillShowInForegroundHandler = true;
109108
}
110109

111-
private void completeNotification(MethodCall call, final Result reply) {
110+
private void completeNotification(MethodCall call, Result result) {
112111
String notificationId = call.argument("notificationId");
113112
boolean shouldDisplay = call.argument("shouldDisplay");
114113
INotificationReceivedEvent notificationReceivedEvent = notificationReceivedEventCache.get(notificationId);
115114

116115
if (notificationReceivedEvent == null) {
117-
//OneSignal.onesignalLog(OneSignal.LOG_LEVEL.ERROR, "Could not find notification completion block with id: " + notificationId);
116+
Logging.error("Could not find notification completion block with id: " + notificationId, null);
118117
return;
119118
}
120119

@@ -123,6 +122,13 @@ private void completeNotification(MethodCall call, final Result reply) {
123122
} else {
124123
notificationReceivedEvent.complete(null);
125124
}
125+
126+
synchronized (notificationReceivedEvent) {
127+
notificationReceivedEventCache.remove(notificationId);
128+
notificationReceivedEvent.notify();
129+
}
130+
131+
replySuccess(result, null);
126132
}
127133

128134
@Override
@@ -131,7 +137,7 @@ public void notificationClicked(INotificationClickResult result) {
131137
invokeMethodOnUiThread("OneSignal#handleOpenedNotification", OneSignalSerializer.convertNotificationClickResultToMap(result));
132138
} catch (JSONException e) {
133139
e.getStackTrace();
134-
android.util.Log.w("TestHenryTest ", e.toString());
140+
Logging.error("Encountered an error attempting to convert INotificationClickResult object to hash map:" + e.toString(), null);
135141
}
136142
}
137143

@@ -160,18 +166,28 @@ public void notificationWillShowInForeground(INotificationReceivedEvent notifica
160166
try {
161167
HashMap<String, Object> receivedMap = OneSignalSerializer.convertNotificationToMap(notification);
162168
invokeMethodOnUiThread("OneSignal#handleNotificationWillShowInForeground", receivedMap);
169+
try {
170+
171+
synchronized (notificationReceivedEvent) {
172+
while(notificationReceivedEventCache.containsKey(notification.getNotificationId()))
173+
notificationReceivedEvent.wait();
174+
}
175+
} catch(InterruptedException e){
176+
Logging.error("InterruptedException" + e.toString(), null);
177+
}
178+
163179
} catch (JSONException e) {
164180
e.getStackTrace();
181+
Logging.error("Encountered an error attempting to convert INotification object to hash map:" + e.toString(), null);
165182
}
166183
}
167184

168185
@Override
169186
public void onPermissionChanged(boolean permission) {
170-
171187
invokeMethodOnUiThread("OneSignal#OSPermissionChanged", OneSignalSerializer.convertPermissionChanged(permission));
172188
}
173189

174-
public void lifecycleInit() {
190+
private void lifecycleInit() {
175191
OneSignal.getNotifications().setNotificationWillShowInForegroundHandler(this);
176192
OneSignal.getNotifications().addPermissionChangedHandler(this);
177193
}

android/src/main/java/com/onesignal/flutter/OneSignalPlugin.java

Lines changed: 13 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88

99
import com.onesignal.OneSignal;
1010
import com.onesignal.Continue;
11+
import com.onesignal.common.OneSignalWrapper;
1112

1213
import org.json.JSONException;
1314
import org.json.JSONObject;
@@ -30,20 +31,17 @@
3031
/** OnesignalPlugin */
3132
public class OneSignalPlugin extends FlutterRegistrarResponder implements FlutterPlugin, MethodCallHandler, ActivityAware {
3233

33-
private boolean hasSetRequiresPrivacyConsent = false;
34-
private boolean waitingForUserPrivacyConsent = false;
35-
3634
public OneSignalPlugin() {
3735
}
3836

3937
private void init(Context context, BinaryMessenger messenger)
4038
{
4139
this.context = context;
4240
this.messenger = messenger;
43-
44-
// OneSignal.sdkType = "flutter";
45-
46-
waitingForUserPrivacyConsent = false;
41+
OneSignalWrapper.setSdkType("flutter");
42+
// For 5.0.0-beta, hard code to reflect SDK version
43+
OneSignalWrapper.setSdkVersion("050000");
44+
4745
channel = new MethodChannel(messenger, "OneSignal");
4846
channel.setMethodCallHandler(this);
4947

@@ -54,9 +52,6 @@ private void init(Context context, BinaryMessenger messenger)
5452
OneSignalUser.registerWith(messenger);
5553
OneSignalPushSubscription.registerWith(messenger);
5654
OneSignalNotifications.registerWith(messenger);
57-
// OneSignalTagsController.registerWith(messenger);
58-
// OneSignalInAppMessagingController.registerWith(messenger);
59-
// OneSignalOutcomeEventsController.registerWith(messenger);
6055
}
6156

6257
@Override
@@ -73,8 +68,6 @@ public void onDetachedFromEngine(@NonNull FlutterPlugin.FlutterPluginBinding bin
7368
}
7469

7570
private void onDetachedFromEngine() {
76-
// OneSignal.setNotificationOpenedHandler(null);
77-
// OneSignal.setInAppMessageClickHandler(null);
7871
}
7972

8073
@Override
@@ -116,7 +109,7 @@ public boolean onViewDestroy(FlutterNativeView flutterNativeView) {
116109
public void onMethodCall(MethodCall call, Result result) {
117110
if (call.method.contentEquals("OneSignal#initialize"))
118111
this.initWithContext(call, result);
119-
else if (call.method.contentEquals("OneSignal#getRequiresPrivacyConsent"))
112+
else if (call.method.contentEquals("OneSignal#requiresPrivacyConsent"))
120113
replySuccess(result, OneSignal.getRequiresPrivacyConsent());
121114
else if (call.method.contentEquals("OneSignal#setRequiresPrivacyConsent"))
122115
this.setRequiresPrivacyConsent(call, result);
@@ -126,6 +119,8 @@ else if (call.method.contentEquals("OneSignal#setPrivacyConsent"))
126119
this.setPrivacyConsent(call, result);
127120
else if (call.method.contentEquals("OneSignal#login"))
128121
this.login(call, result);
122+
else if (call.method.contentEquals("OneSignal#loginWithJWT"))
123+
this.loginWithJWT(call, result);
129124
else if (call.method.contentEquals("OneSignal#logout"))
130125
this.logout(call, result);
131126
else
@@ -135,48 +130,32 @@ else if (call.method.contentEquals("OneSignal#logout"))
135130
private void initWithContext(MethodCall call, Result reply) {
136131
String appId = call.argument("appId");
137132
OneSignal.initWithContext(context, appId);
138-
// if (hasSetRequiresPrivacyConsent && !OneSignal.userProvidedPrivacyConsent())
139-
// this.waitingForUserPrivacyConsent = true;
140-
// else
141-
// this.addObservers();
142-
143133
replySuccess(reply, null);
144134
}
145135

146136
private void setRequiresPrivacyConsent(MethodCall call, Result reply) {
147137
boolean required = call.argument("required");
148-
149138
OneSignal.setRequiresPrivacyConsent(required);
150-
151139
replySuccess(reply, null);
152140
}
153141

154142
private void setPrivacyConsent(MethodCall call, Result reply) {
155143
boolean granted = call.argument("granted");
156144
OneSignal.setPrivacyConsent(granted);
157-
158145
replySuccess(reply, null);
159146
}
160147

161148
private void login(MethodCall call, Result result) {
162149
OneSignal.login((String) call.argument("externalId"));
163150
replySuccess(result, null);
164151
}
152+
153+
private void loginWithJWT(MethodCall call, Result result) {
154+
OneSignal.login((String) call.argument("externalId"), (String) call.argument("jwt"));
155+
replySuccess(result, null);
156+
}
165157
private void logout(MethodCall call, Result result) {
166158
OneSignal.logout();
167159
replySuccess(result, null);
168160
}
169-
170-
static class OSFlutterHandler extends FlutterRegistrarResponder {
171-
protected final Result result;
172-
protected final String methodName;
173-
protected final AtomicBoolean replySubmitted = new AtomicBoolean(false);
174-
175-
OSFlutterHandler(BinaryMessenger messenger, MethodChannel channel, Result res, String methodName) {
176-
this.messenger = messenger;
177-
this.channel = channel;
178-
this.result = res;
179-
this.methodName = methodName;
180-
}
181-
}
182161
}

android/src/main/java/com/onesignal/flutter/OneSignalPushSubscription.java

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,8 @@
66
import com.onesignal.user.subscriptions.ISubscription;
77
import com.onesignal.user.subscriptions.ISubscriptionChangedHandler;
88

9+
import com.onesignal.debug.internal.logging.Logging;
10+
911
import org.json.JSONException;
1012
import org.json.JSONObject;
1113

@@ -22,7 +24,6 @@
2224
import io.flutter.plugin.common.PluginRegistry.Registrar;
2325

2426
public class OneSignalPushSubscription extends FlutterRegistrarResponder implements MethodCallHandler, ISubscriptionChangedHandler {
25-
private MethodChannel channel;
2627

2728
static void registerWith(BinaryMessenger messenger) {
2829
OneSignalPushSubscription controller = new OneSignalPushSubscription();
@@ -58,17 +59,17 @@ private void optOut(MethodCall call, Result reply) {
5859
replySuccess(reply, null);
5960
}
6061

61-
public void lifecycleInit() {
62+
private void lifecycleInit() {
6263
OneSignal.getUser().getPushSubscription().addChangeHandler(this);
6364
}
6465

6566
@Override
6667
public void onSubscriptionChanged(ISubscription subscription) {
6768
if (!(subscription instanceof IPushSubscription)){
6869
return;
69-
}
70+
}
7071
IPushSubscription pushSubscription = (IPushSubscription) subscription;
71-
invokeMethodOnUiThread("OneSignal#onSubscriptionChanged", OneSignalSerializer.convertOnSubscriptionChanged(pushSubscription));
72+
invokeMethodOnUiThread("OneSignal#pushSubscriptionChanged", OneSignalSerializer.convertOnSubscriptionChanged(pushSubscription));
7273
}
7374

7475
}

0 commit comments

Comments
 (0)