@@ -329,7 +329,7 @@ private void setLanguage(MethodCall call, final Result result) {
329329 if (language != null && language .length () == 0 )
330330 language = null ;
331331
332- OneSignal .setLanguage (language );
332+ OneSignal .setLanguage (language , new OSFlutterSetLanguageHandler ( messenger , channel , result , "setLanguage" ) );
333333 }
334334
335335 private void setExternalUserId (MethodCall call , final Result result ) {
@@ -603,6 +603,47 @@ public void onFailure(JSONObject response) {
603603 }
604604 }
605605
606+ static class OSFlutterSetLanguageHandler extends OSFlutterHandler
607+ implements OneSignal .OSSetLanguageCompletionHandler {
608+
609+ OSFlutterSetLanguageHandler (BinaryMessenger messenger , MethodChannel channel , Result res , String methodName ) {
610+ super (messenger , channel , res , methodName );
611+ }
612+
613+ @ Override
614+ public void onSuccess (String results ) {
615+ if (this .replySubmitted .getAndSet (true )) {
616+ OneSignal .onesignalLog (OneSignal .LOG_LEVEL .DEBUG , "OneSignal " + methodName + " handler called twice, ignoring! response: " + results );
617+ return ;
618+ }
619+
620+ if (results == null ) { // The results currently is always null.
621+ results = "Successfully set language." ;
622+ }
623+
624+ HashMap <String , Object > responseMap = new HashMap <>();
625+ responseMap .put ("success" , true );
626+ responseMap .put ("message" , results );
627+ replySuccess (result , responseMap );
628+ }
629+
630+ @ Override
631+ public void onFailure (OneSignal .OSLanguageError error ) {
632+ if (this .replySubmitted .getAndSet (true )) {
633+ return ;
634+ }
635+
636+ String errorMessage = error .getMessage ();
637+ if (errorMessage == null ) {
638+ errorMessage = "Failed to set language." ;
639+ }
640+
641+ replyError (result , "OneSignal" ,
642+ "Encountered an error when " + methodName + ": " + errorMessage ,
643+ null );
644+ }
645+ }
646+
606647 static class OSFlutterHandler extends FlutterRegistrarResponder {
607648 protected final Result result ;
608649 protected final String methodName ;
0 commit comments