Skip to content

Commit b95d480

Browse files
authored
Merge pull request #660 from OneSignal/user_model/cleanup_and_testing
[User Model] Testing cleanup and fixes
2 parents ad62d90 + a65cc3f commit b95d480

File tree

10 files changed

+116
-101
lines changed

10 files changed

+116
-101
lines changed

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

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@
1414

1515
abstract class FlutterRegistrarResponder {
1616
Context context;
17-
MethodChannel channel;
17+
protected MethodChannel channel;
1818
BinaryMessenger messenger;
1919

2020
/**
@@ -69,7 +69,7 @@ private void runOnMainThread(final Runnable runnable) {
6969
}
7070

7171
void invokeMethodOnUiThread(final String methodName, final HashMap map) {
72-
final MethodChannel channel = this.channel;
72+
//final MethodChannel channel = this.channel;
7373
runOnMainThread(new Runnable() {
7474
@Override
7575
public void run() {

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

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -104,30 +104,30 @@ public void inAppMessageClicked(IInAppMessageClickResult action) {
104104
return;
105105
}
106106

107-
channel.invokeMethod("OneSignal#handleClickedInAppMessage", OneSignalSerializer.convertInAppMessageClickedActionToMap(action));
107+
invokeMethodOnUiThread("OneSignal#handleClickedInAppMessage", OneSignalSerializer.convertInAppMessageClickedActionToMap(action));
108108
}
109109

110110
/* in app message lifecycle */
111111
public void setInAppMessageLifecycleHandler() {
112112
OneSignal.getInAppMessages().setInAppMessageLifecycleHandler(new IInAppMessageLifecycleHandler() {
113113
@Override
114114
public void onWillDisplayInAppMessage(IInAppMessage message) {
115-
channel.invokeMethod("OneSignal#onWillDisplayInAppMessage", OneSignalSerializer.convertInAppMessageToMap(message));
115+
invokeMethodOnUiThread("OneSignal#onWillDisplayInAppMessage", OneSignalSerializer.convertInAppMessageToMap(message));
116116
}
117117

118118
@Override
119119
public void onDidDisplayInAppMessage(IInAppMessage message) {
120-
channel.invokeMethod("OneSignal#onDidDisplayInAppMessage", OneSignalSerializer.convertInAppMessageToMap(message));
120+
invokeMethodOnUiThread("OneSignal#onDidDisplayInAppMessage", OneSignalSerializer.convertInAppMessageToMap(message));
121121
}
122122

123123
@Override
124124
public void onWillDismissInAppMessage(IInAppMessage message) {
125-
channel.invokeMethod("OneSignal#onWillDismissInAppMessage", OneSignalSerializer.convertInAppMessageToMap(message));
125+
invokeMethodOnUiThread("OneSignal#onWillDismissInAppMessage", OneSignalSerializer.convertInAppMessageToMap(message));
126126
}
127127

128128
@Override
129129
public void onDidDismissInAppMessage(IInAppMessage message) {
130-
channel.invokeMethod("OneSignal#onDidDismissInAppMessage", OneSignalSerializer.convertInAppMessageToMap(message));
130+
invokeMethodOnUiThread("OneSignal#onDidDismissInAppMessage", OneSignalSerializer.convertInAppMessageToMap(message));
131131
}
132132
});
133133
}

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

Lines changed: 19 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@
3737
import io.flutter.plugin.common.PluginRegistry.Registrar;
3838

3939
public class OneSignalNotifications extends FlutterRegistrarResponder implements MethodCallHandler, INotificationClickHandler, INotificationWillShowInForegroundHandler, IPermissionChangedHandler {
40-
private MethodChannel channel;
40+
// private MethodChannel channel;
4141

4242
private boolean hasSetNotificationWillShowInForegroundHandler = false;
4343
private final HashMap<String, INotificationReceivedEvent> notificationReceivedEventCache = new HashMap<>();
@@ -75,7 +75,7 @@ else if (call.method.contentEquals("OneSignal#lifecycleInit"))
7575
}
7676

7777
private void requestPermission(MethodCall call, Result result) {
78-
boolean fallback = call.argument("fallback");
78+
boolean fallback = (boolean) call.argument("fallbackToSettings");
7979
OneSignal.getNotifications().requestPermission(fallback, Continue.none());
8080
}
8181

@@ -128,12 +128,23 @@ private void completeNotification(MethodCall call, final Result reply) {
128128
@Override
129129
public void notificationClicked(INotificationClickResult result) {
130130
try {
131-
channel.invokeMethod("OneSignal#handleOpenedNotification", OneSignalSerializer.convertNotificationClickedResultToMap(result));
131+
invokeMethodOnUiThread("OneSignal#handleOpenedNotification", OneSignalSerializer.convertNotificationClickResultToMap(result));
132132
} catch (JSONException e) {
133-
e.getStackTrace();
134-
// OneSignal.onesignalLog(OneSignal.LOG_LEVEL.ERROR,
135-
// "Encountered an error attempting to convert OSNotificationOpenResult object to hash map: " + e.getMessage());
133+
e.getStackTrace();
134+
android.util.Log.w("TestHenryTest ", e.toString());
135+
}
136+
}
137+
138+
private JSONObject getJsonFromMap(Map<String, Object> map) throws JSONException {
139+
JSONObject jsonData = new JSONObject();
140+
for (String key : map.keySet()) {
141+
Object value = map.get(key);
142+
if (value instanceof Map<?, ?>) {
143+
value = getJsonFromMap((Map<String, Object>) value);
144+
}
145+
jsonData.put(key, value);
136146
}
147+
return jsonData;
137148
}
138149

139150
@Override
@@ -148,18 +159,16 @@ public void notificationWillShowInForeground(INotificationReceivedEvent notifica
148159

149160
try {
150161
HashMap<String, Object> receivedMap = OneSignalSerializer.convertNotificationToMap(notification);
151-
channel.invokeMethod("OneSignal#handleNotificationWillShowInForeground", receivedMap);
162+
invokeMethodOnUiThread("OneSignal#handleNotificationWillShowInForeground", receivedMap);
152163
} catch (JSONException e) {
153164
e.getStackTrace();
154-
// OneSignal.onesignalLog(OneSignal.LOG_LEVEL.ERROR,
155-
// "Encountered an error attempting to convert OSNotificationReceivedEvent object to hash map: " + e.getMessage());
156165
}
157166
}
158167

159168
@Override
160169
public void onPermissionChanged(boolean permission) {
161170

162-
channel.invokeMethod("OneSignal#OSPermissionChanged", OneSignalSerializer.convertPermissionChanged(permission));
171+
invokeMethodOnUiThread("OneSignal#OSPermissionChanged", OneSignalSerializer.convertPermissionChanged(permission));
163172
}
164173

165174
public void lifecycleInit() {

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

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -128,6 +128,7 @@ else if (call.method.contentEquals("OneSignal#login"))
128128
this.login(call, result);
129129
else if (call.method.contentEquals("OneSignal#logout"))
130130
this.logout(call, result);
131+
else
131132
replyNotImplemented(result);
132133
}
133134

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

Lines changed: 10 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@
2121
import io.flutter.plugin.common.PluginRegistry;
2222
import io.flutter.plugin.common.PluginRegistry.Registrar;
2323

24-
public class OneSignalPushSubscription extends FlutterRegistrarResponder implements MethodCallHandler {
24+
public class OneSignalPushSubscription extends FlutterRegistrarResponder implements MethodCallHandler, ISubscriptionChangedHandler {
2525
private MethodChannel channel;
2626

2727
static void registerWith(BinaryMessenger messenger) {
@@ -59,19 +59,16 @@ private void optOut(MethodCall call, Result reply) {
5959
}
6060

6161
public void lifecycleInit() {
62-
OneSignal.getUser().getPushSubscription().addChangeHandler(new ISubscriptionChangedHandler() {
63-
@Override
64-
public void onSubscriptionChanged(ISubscription subscription) {
65-
if (!(subscription instanceof IPushSubscription)){
66-
return;
67-
}
68-
IPushSubscription pushSubscription = (IPushSubscription) subscription;
69-
70-
channel.invokeMethod("OneSignal#onSubscriptionChanged", OneSignalSerializer.convertOnSubscriptionChanged(pushSubscription));
71-
}
62+
OneSignal.getUser().getPushSubscription().addChangeHandler(this);
63+
}
7264

73-
});
65+
@Override
66+
public void onSubscriptionChanged(ISubscription subscription) {
67+
if (!(subscription instanceof IPushSubscription)){
68+
return;
69+
}
70+
IPushSubscription pushSubscription = (IPushSubscription) subscription;
71+
invokeMethodOnUiThread("OneSignal#onSubscriptionChanged", OneSignalSerializer.convertOnSubscriptionChanged(pushSubscription));
7472
}
7573

76-
7774
}

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

Lines changed: 23 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -9,9 +9,10 @@
99
import com.onesignal.inAppMessages.IInAppMessageClickResult;
1010

1111
import com.onesignal.notifications.INotification;
12+
13+
import com.onesignal.notifications.INotificationAction;
1214
import com.onesignal.notifications.INotificationClickResult;
1315
import com.onesignal.notifications.INotificationReceivedEvent;
14-
import com.onesignal.notifications.INotificationReceivedEvent;
1516

1617
import org.json.JSONArray;
1718
import org.json.JSONException;
@@ -36,7 +37,6 @@ static HashMap<String, Object> convertNotificationToMap(INotification notificati
3637
hash.put("groupedNotifications", notification.getGroupedNotifications());
3738
}
3839

39-
4040
hash.put("notificationId", notification.getNotificationId());
4141
hash.put("title", notification.getTitle());
4242

@@ -76,14 +76,29 @@ static HashMap<String, Object> convertNotificationToMap(INotification notificati
7676
return hash;
7777
}
7878

79-
static HashMap<String, Object> convertNotificationClickedResultToMap(INotificationClickResult openResult) throws JSONException {
79+
static HashMap<String, Object> convertNotificationClickResultToMap(INotificationClickResult openResult) throws JSONException {
80+
HashMap<String, Object> hash = new HashMap<>();
81+
82+
hash.put("notification", convertNotificationToMap(openResult.getNotification()));
83+
hash.put("action", convertNotificationActionToMap(openResult.getAction()));
84+
85+
return hash;
86+
}
87+
88+
89+
private static HashMap<String, Object> convertNotificationActionToMap(INotificationAction action) {
8090
HashMap<String, Object> hash = new HashMap<>();
8191

82-
hash.put("actionId", openResult.getAction().getActionId());
83-
hash.put("type", openResult.getAction().getType());
84-
hash.put("title", openResult.getNotification().getTitle());
85-
hash.put("message", openResult.getNotification().getBody());
86-
hash.put("additionalData", openResult.getNotification().getAdditionalData());
92+
hash.put("id", action.getActionId());
93+
94+
switch (action.getType()) {
95+
case Opened:
96+
hash.put("type", 0);
97+
break;
98+
case ActionTaken:
99+
hash.put("type", 1);
100+
}
101+
87102
return hash;
88103
}
89104

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

Lines changed: 12 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -80,26 +80,24 @@ private void removeAliases(MethodCall call, Result result) {
8080
}
8181
}
8282

83-
private void addEmail(MethodCall call, final Result reply) {
84-
String email = call.argument("email");
85-
86-
OneSignal.getUser().addEmail(email);
83+
private void addEmail(MethodCall call, Result result) {
84+
OneSignal.getUser().addEmail((String) call.arguments);
85+
replySuccess(result, null);
8786
}
8887

89-
private void removeEmail(MethodCall call, final Result reply) {
90-
String email = call.argument("email");
91-
OneSignal.getUser().removeEmail(email);
88+
private void removeEmail(MethodCall call, Result result) {
89+
OneSignal.getUser().removeEmail((String) call.arguments);
90+
replySuccess(result, null);
9291
}
9392

94-
private void addSms(MethodCall call, final Result reply) {
95-
String smsNumber = call.argument("smsNumber");
96-
97-
OneSignal.getUser().addSms(smsNumber);
93+
private void addSms(MethodCall call, Result result) {
94+
OneSignal.getUser().addSms((String) call.arguments);
95+
replySuccess(result, null);
9896
}
9997

100-
private void removeSms(MethodCall call, final Result reply) {
101-
String smsNumber = call.argument("smsNumber");
102-
OneSignal.getUser().removeSms(smsNumber);
98+
private void removeSms(MethodCall call, Result result) {
99+
OneSignal.getUser().removeSms((String) call.arguments);
100+
replySuccess(result, null);
103101
}
104102
private void addTags(MethodCall call, Result result) {
105103
// call.arguments is being casted to a Map<String, Object> so a try-catch with

example/lib/main.dart

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@ class _MyAppState extends State<MyApp> with OneSignalPushSubscriptionObserver {
3232
Future<void> initPlatformState() async {
3333
if (!mounted) return;
3434

35-
OneSignal.Debug.setLogLevel(OSLogLevel.debug);
35+
OneSignal.Debug.setLogLevel(OSLogLevel.none);
3636

3737
OneSignal.Debug.setAlertLevel(OSLogLevel.none);
3838

@@ -42,9 +42,9 @@ class _MyAppState extends State<MyApp> with OneSignalPushSubscriptionObserver {
4242
OneSignal.User.pushSubscription.addObserver(this);
4343

4444
// Outcome Examples
45-
oneSignalOutcomeExamples();
46-
47-
// OneSignal.shared.login("Testtesttest");
45+
//oneSignalOutcomeExamples();
46+
//OneSignal.shared.logout();
47+
OneSignal.shared.login("Henry11111111");
4848

4949
// OneSignal.shared.setRequiresUserPrivacyConsent(_requireConsent);
5050

@@ -59,7 +59,8 @@ class _MyAppState extends State<MyApp> with OneSignalPushSubscriptionObserver {
5959

6060
OneSignal.Notifications.setNotificationWillShowInForegroundHandler(
6161
(OSNotificationReceivedEvent event) {
62-
print('FOREGROUND HANDLER CALLED WITH: ${event}');
62+
print(
63+
'FOREGROUND HANDLER CALLED WITH1: ${event.notification.jsonRepresentation()}');
6364

6465
/// Display Notification, send null to not display
6566
event.complete(null);
@@ -296,7 +297,7 @@ class _MyAppState extends State<MyApp> with OneSignalPushSubscriptionObserver {
296297
// OneSignal.InAppMessages.clearTriggers();
297298

298299
// Toggle pausing (displaying or not) of IAMs
299-
OneSignal.InAppMessages.paused(false);
300+
OneSignal.InAppMessages.paused(true);
300301
var arePaused = await OneSignal.InAppMessages.arePaused();
301302
print('Notifications paused ${arePaused}');
302303
}

0 commit comments

Comments
 (0)