@@ -229,7 +229,7 @@ public static class SendTagsError {
229
229
public String getMessage () { return message ; }
230
230
}
231
231
232
- public static class OSDeviceInfoError {
232
+ static class OSDeviceInfoError {
233
233
private int errorCode ;
234
234
private String message ;
235
235
@@ -243,11 +243,30 @@ public static class OSDeviceInfoError {
243
243
public String getMessage () { return message ; }
244
244
}
245
245
246
- public interface OSDeviceInfoCompletionHandler {
246
+ interface OSDeviceInfoCompletionHandler {
247
247
void onSuccess (String results );
248
248
void onFailure (OSDeviceInfoError error );
249
249
}
250
250
251
+ public static class OSLanguageError {
252
+ private int errorCode ;
253
+ private String message ;
254
+
255
+ OSLanguageError (int errorCode , String message ) {
256
+ this .errorCode = errorCode ;
257
+ this .message = message ;
258
+ }
259
+
260
+ public int getCode () { return errorCode ; }
261
+
262
+ public String getMessage () { return message ; }
263
+ }
264
+
265
+ public interface OSSetLanguageCompletionHandler {
266
+ void onSuccess (String results );
267
+ void onFailure (OSLanguageError error );
268
+ }
269
+
251
270
public enum ExternalIdErrorType {
252
271
REQUIRES_EXTERNAL_ID_AUTH , INVALID_OPERATION , NETWORK
253
272
}
@@ -1719,7 +1738,7 @@ public static void setLanguage(@NonNull final String language) {
1719
1738
setLanguage (language , null );
1720
1739
}
1721
1740
1722
- public static void setLanguage (@ NonNull final String language , @ Nullable final OSDeviceInfoCompletionHandler completionCallback ) {
1741
+ public static void setLanguage (@ NonNull final String language , @ Nullable final OSSetLanguageCompletionHandler completionCallback ) {
1723
1742
if (taskRemoteController .shouldQueueTaskForInit (OSTaskRemoteController .SET_LANGUAGE )) {
1724
1743
logger .error ("Waiting for remote params. " +
1725
1744
"Moving " + OSTaskRemoteController .SET_LANGUAGE + " operation to a pending task queue." );
@@ -1733,6 +1752,23 @@ public void run() {
1733
1752
return ;
1734
1753
}
1735
1754
1755
+ OSDeviceInfoCompletionHandler deviceInfoCompletionHandler = null ;
1756
+
1757
+ if (completionCallback != null ) {
1758
+ deviceInfoCompletionHandler = new OSDeviceInfoCompletionHandler () {
1759
+ @ Override
1760
+ public void onSuccess (String results ) {
1761
+ completionCallback .onSuccess (results );
1762
+ }
1763
+
1764
+ @ Override
1765
+ public void onFailure (OSDeviceInfoError error ) {
1766
+ OSLanguageError languageError = new OSLanguageError (error .errorCode , error .message );
1767
+ completionCallback .onFailure (languageError );
1768
+ }
1769
+ };
1770
+ }
1771
+
1736
1772
if (shouldLogUserPrivacyConsentErrorMessageForMethodName (OSTaskRemoteController .SET_LANGUAGE ))
1737
1773
return ;
1738
1774
@@ -1743,7 +1779,7 @@ public void run() {
1743
1779
try {
1744
1780
JSONObject deviceInfo = new JSONObject ();
1745
1781
deviceInfo .put ("language" , languageContext .getLanguage ());
1746
- OneSignalStateSynchronizer .updateDeviceInfo (deviceInfo , completionCallback );
1782
+ OneSignalStateSynchronizer .updateDeviceInfo (deviceInfo , deviceInfoCompletionHandler );
1747
1783
} catch (JSONException exception ) {
1748
1784
exception .printStackTrace ();
1749
1785
}
0 commit comments