File tree Expand file tree Collapse file tree 3 files changed +49
-6
lines changed
android/src/main/java/com/geektime/rnonesignalandroid Expand file tree Collapse file tree 3 files changed +49
-6
lines changed Original file line number Diff line number Diff line change @@ -288,8 +288,38 @@ public void getDeviceState(Promise promise) {
288288 }
289289
290290 @ ReactMethod
291- public void setLanguage (String language ) {
292- OneSignal .setLanguage (language );
291+ public void setLanguage (String language , final Callback successCallback , final Callback failureCallback ) {
292+ OneSignal .setLanguage (language , new OneSignal .OSSetLanguageCompletionHandler () {
293+ final Callback [] callbackArr = new Callback []{ successCallback , failureCallback };
294+ @ Override
295+ public void onSuccess (String results ) {
296+ if (callbackArr [0 ] != null ) {
297+ if (results == null ) {
298+ results = "{'success' : 'true', 'message' : 'Successfully set language.'}" ;
299+ }
300+ callbackArr [0 ].invoke (results );
301+ callbackArr [0 ] = null ;
302+ callbackArr [1 ] = null ; // prevent other callback from being invoked by another channel
303+ }
304+ }
305+
306+ @ Override
307+ public void onFailure (OneSignal .OSLanguageError error ) {
308+ try {
309+ if (callbackArr [1 ] != null ) {
310+ String errorMessage = error .getMessage ();
311+ if (errorMessage == null ) {
312+ errorMessage = "Failed to set language." ;
313+ }
314+ callbackArr [1 ].invoke (RNUtils .jsonToWritableMap (jsonFromErrorMessageString (errorMessage )));
315+ callbackArr [0 ] = null ;
316+ callbackArr [1 ] = null ;
317+ }
318+ } catch (JSONException exception ) {
319+ exception .printStackTrace ();
320+ }
321+ }
322+ });
293323 }
294324
295325 @ ReactMethod
Original file line number Diff line number Diff line change @@ -245,8 +245,12 @@ + (void)sendEventWithName:(NSString *)name withBody:(NSDictionary *)body {
245245 }
246246}
247247
248- RCT_EXPORT_METHOD (setLanguage:(NSString *)language) {
249- [OneSignal setLanguage: language];
248+ RCT_EXPORT_METHOD (setLanguage:(NSString *)language successCallback:(RCTResponseSenderBlock)successCallback failureCallback:(RCTResponseSenderBlock)failureCallback) {
249+ [OneSignal setLanguage: language withSuccess: ^(NSDictionary *success) {
250+ successCallback (@[success]);
251+ } withFailure: ^(NSError *error) {
252+ failureCallback ([self processNSError: error]);
253+ }];
250254}
251255
252256RCT_EXPORT_METHOD (setNotificationOpenedHandler) {
Original file line number Diff line number Diff line change @@ -287,12 +287,21 @@ export default class OneSignal {
287287 /**
288288 * Allows you to set the app defined language with the OneSignal SDK.
289289 * @param {string } language
290+ * @param {(success:object) => void } onSuccess
291+ * @param {(failure:object) => void } onFailure
290292 * @returns void
291293 */
292- static setLanguage ( language : string ) : void {
294+ static setLanguage ( language : string , onSuccess ?: ( success : object ) => void , onFailure ?: ( failure : object ) => void ) : void {
293295 if ( ! isNativeModuleLoaded ( RNOneSignal ) ) return ;
294296
295- RNOneSignal . setLanguage ( language ) ;
297+ if ( ! onSuccess ) {
298+ onSuccess = function ( ) { } ;
299+ }
300+
301+ if ( ! onFailure ) {
302+ onFailure = function ( ) { } ;
303+ }
304+ RNOneSignal . setLanguage ( language , onSuccess , onFailure ) ;
296305 }
297306
298307 /* T A G S */
You can’t perform that action at this time.
0 commit comments