Skip to content

Commit 2ae6d0b

Browse files
committed
Split handler by responsibility
1 parent 5ea93cb commit 2ae6d0b

File tree

1 file changed

+69
-17
lines changed

1 file changed

+69
-17
lines changed

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

Lines changed: 69 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -231,7 +231,7 @@ private void getDeviceState(Result reply) {
231231

232232
private void postNotification(MethodCall call, final Result reply) {
233233
JSONObject json = new JSONObject((Map<String, Object>) call.arguments);
234-
OneSignal.postNotification(json, new OSFlutterResultHandler(flutterRegistrar, channel, reply, "postNotification"));
234+
OneSignal.postNotification(json, new OSFlutterPostNotificationHandler(flutterRegistrar, channel, reply, "postNotification"));
235235
}
236236

237237
private void promptLocation(Result reply) {
@@ -259,11 +259,11 @@ private void setSMSNumber(MethodCall call, final Result reply) {
259259
String smsNumber = call.argument("smsNumber");
260260
String smsAuthHashToken = call.argument("smsAuthHashToken");
261261

262-
OneSignal.setSMSNumber(smsNumber, smsAuthHashToken, new OSFlutterResultHandler(flutterRegistrar, channel, reply, "setSMSNumber"));
262+
OneSignal.setSMSNumber(smsNumber, smsAuthHashToken, new OSFlutterSMSHandler(flutterRegistrar, channel, reply, "setSMSNumber"));
263263
}
264264

265265
private void logoutSMSNumber(final Result reply) {
266-
OneSignal.logoutSMSNumber(new OSFlutterResultHandler(flutterRegistrar, channel, reply, "logoutSMSNumber"));
266+
OneSignal.logoutSMSNumber(new OSFlutterSMSHandler(flutterRegistrar, channel, reply, "logoutSMSNumber"));
267267
}
268268

269269
private void setLanguage(MethodCall call, final Result result) {
@@ -282,11 +282,11 @@ private void setExternalUserId(MethodCall call, final Result result) {
282282
if (authHashToken != null && authHashToken.length() == 0)
283283
authHashToken = null;
284284

285-
OneSignal.setExternalUserId(externalUserId, authHashToken, new OSFlutterResultHandler(flutterRegistrar, channel, result, "setExternalUserId"));
285+
OneSignal.setExternalUserId(externalUserId, authHashToken, new OSFlutterExternalUserIdHandler(flutterRegistrar, channel, result, "setExternalUserId"));
286286
}
287287

288288
private void removeExternalUserId(final Result result) {
289-
OneSignal.removeExternalUserId(new OSFlutterResultHandler(flutterRegistrar, channel, result, "removeExternalUserId"));
289+
OneSignal.removeExternalUserId(new OSFlutterExternalUserIdHandler(flutterRegistrar, channel, result, "removeExternalUserId"));
290290
}
291291

292292
private void initNotificationOpenedHandlerParams() {
@@ -428,46 +428,98 @@ public void onFailure(EmailUpdateError error) {
428428
}
429429
}
430430

431-
static class OSFlutterResultHandler extends FlutterRegistrarResponder
432-
implements OneSignal.OSExternalUserIdUpdateCompletionHandler, OneSignal.OSSMSUpdateHandler, OneSignal.PostNotificationResponseHandler {
431+
static class OSFlutterSMSHandler extends FlutterRegistrarResponder
432+
implements OneSignal.OSSMSUpdateHandler {
433433
private final Result result;
434434
private final String methodName;
435435
private final AtomicBoolean replySubmitted = new AtomicBoolean(false);
436436

437-
OSFlutterResultHandler(PluginRegistry.Registrar flutterRegistrar, MethodChannel channel, Result res, String methodName) {
438-
this.flutterRegistrar = flutterRegistrar;
439-
this.channel = channel;
440-
this.result = res;
441-
this.methodName = methodName;
437+
OSFlutterSMSHandler(PluginRegistry.Registrar flutterRegistrar, MethodChannel channel, Result res, String methodName) {
438+
this.flutterRegistrar = flutterRegistrar;
439+
this.channel = channel;
440+
this.result = res;
441+
this.methodName = methodName;
442442
}
443443

444444
@Override
445445
public void onSuccess(JSONObject results) {
446446
if (this.replySubmitted.getAndSet(true))
447-
return;
447+
return;
448448

449449
try {
450-
replySuccess(result, OneSignalSerializer.convertJSONObjectToHashMap(results));
450+
replySuccess(result, OneSignalSerializer.convertJSONObjectToHashMap(results));
451451
} catch (JSONException e) {
452-
replyError(result, "OneSignal", "Encountered an error attempting to deserialize server response for " + methodName + ": " + e.getMessage(), null);
452+
replyError(result, "OneSignal", "Encountered an error attempting to deserialize server response for " + methodName + ": " + e.getMessage(), null);
453453
}
454454
}
455455

456456
@Override
457457
public void onFailure(OneSignal.OSSMSUpdateError error) {
458458
if (this.replySubmitted.getAndSet(true))
459-
return;
459+
return;
460460

461461
replyError(result, "OneSignal", "Encountered an error when " + methodName + " (" + error.getType() + "): " + error.getMessage(), null);
462462
}
463+
}
464+
465+
static class OSFlutterExternalUserIdHandler extends FlutterRegistrarResponder
466+
implements OneSignal.OSExternalUserIdUpdateCompletionHandler {
467+
private final Result result;
468+
private final String methodName;
469+
private final AtomicBoolean replySubmitted = new AtomicBoolean(false);
470+
471+
OSFlutterExternalUserIdHandler(PluginRegistry.Registrar flutterRegistrar, MethodChannel channel, Result res, String methodName) {
472+
this.flutterRegistrar = flutterRegistrar;
473+
this.channel = channel;
474+
this.result = res;
475+
this.methodName = methodName;
476+
}
477+
478+
@Override
479+
public void onSuccess(JSONObject results) {
480+
if (this.replySubmitted.getAndSet(true))
481+
return;
482+
483+
try {
484+
replySuccess(result, OneSignalSerializer.convertJSONObjectToHashMap(results));
485+
} catch (JSONException e) {
486+
replyError(result, "OneSignal", "Encountered an error attempting to deserialize server response for " + methodName + ": " + e.getMessage(), null);
487+
}
488+
}
463489

464490
@Override
465491
public void onFailure(OneSignal.ExternalIdError error) {
466492
if (this.replySubmitted.getAndSet(true))
467-
return;
493+
return;
468494

469495
replyError(result, "OneSignal", "Encountered an error when " + methodName + " (" + error.getType() + "): " + error.getMessage(), null);
470496
}
497+
}
498+
499+
static class OSFlutterPostNotificationHandler extends FlutterRegistrarResponder
500+
implements OneSignal.PostNotificationResponseHandler {
501+
private final Result result;
502+
private final String methodName;
503+
private final AtomicBoolean replySubmitted = new AtomicBoolean(false);
504+
505+
OSFlutterPostNotificationHandler(PluginRegistry.Registrar flutterRegistrar, MethodChannel channel, Result res, String methodName) {
506+
this.flutterRegistrar = flutterRegistrar;
507+
this.channel = channel;
508+
this.result = res;
509+
this.methodName = methodName;
510+
}
511+
512+
@Override
513+
public void onSuccess(JSONObject results) {
514+
if (this.replySubmitted.getAndSet(true))
515+
return;
516+
517+
try {
518+
replySuccess(result, OneSignalSerializer.convertJSONObjectToHashMap(results));
519+
} catch (JSONException e) {
520+
replyError(result, "OneSignal", "Encountered an error attempting to deserialize server response for " + methodName + ": " + e.getMessage(), null);
521+
}
522+
}
471523

472524
@Override
473525
public void onFailure(JSONObject response) {

0 commit comments

Comments
 (0)