@@ -34,51 +34,46 @@ of this software and associated documentation files (the "Software"), to deal
3434
3535package com .geektime .rnonesignalandroid ;
3636
37- import java .util .Iterator ;
38- import java .util .HashMap ;
39-
4037import android .content .Context ;
38+ import android .content .pm .ApplicationInfo ;
4139import android .os .Bundle ;
4240import android .util .Log ;
43- import android .content .pm .ApplicationInfo ;
4441
45- import com .facebook .react .bridge .Promise ;
4642import com .facebook .react .bridge .Callback ;
47- import com .facebook .react .bridge .ReactMethod ;
48- import com .facebook .react .bridge .ReadableMap ;
49- import com .facebook .react .bridge .ReactContext ;
50- import com .facebook .react .bridge .ReadableArray ;
51- import com .facebook .react .bridge .WritableNativeMap ;
5243import com .facebook .react .bridge .LifecycleEventListener ;
44+ import com .facebook .react .bridge .Promise ;
5345import com .facebook .react .bridge .ReactApplicationContext ;
46+ import com .facebook .react .bridge .ReactContext ;
5447import com .facebook .react .bridge .ReactContextBaseJavaModule ;
48+ import com .facebook .react .bridge .ReactMethod ;
49+ import com .facebook .react .bridge .ReadableArray ;
50+ import com .facebook .react .bridge .ReadableMap ;
5551import com .facebook .react .modules .core .DeviceEventManagerModule ;
56-
57- import com .onesignal .OSEmailSubscriptionStateChanges ;
58- import com .onesignal .OneSignal ;
59- import com .onesignal .OSOutcomeEvent ;
6052import com .onesignal .OSDeviceState ;
53+ import com .onesignal .OSEmailSubscriptionObserver ;
54+ import com .onesignal .OSEmailSubscriptionStateChanges ;
6155import com .onesignal .OSInAppMessageAction ;
6256import com .onesignal .OSNotification ;
63- import com .onesignal .OSNotificationReceivedEvent ;
6457import com .onesignal .OSNotificationOpenedResult ;
65- import com .onesignal .OneSignal .OutcomeCallback ;
58+ import com .onesignal .OSNotificationReceivedEvent ;
59+ import com .onesignal .OSOutcomeEvent ;
60+ import com .onesignal .OSPermissionObserver ;
61+ import com .onesignal .OSPermissionStateChanges ;
62+ import com .onesignal .OSSMSSubscriptionObserver ;
63+ import com .onesignal .OSSMSSubscriptionStateChanges ;
64+ import com .onesignal .OSSubscriptionObserver ;
65+ import com .onesignal .OSSubscriptionStateChanges ;
66+ import com .onesignal .OneSignal ;
6667import com .onesignal .OneSignal .EmailUpdateError ;
67-
6868import com .onesignal .OneSignal .EmailUpdateHandler ;
6969import com .onesignal .OneSignal .OSInAppMessageClickHandler ;
7070import com .onesignal .OneSignal .OSNotificationOpenedHandler ;
71+ import com .onesignal .OneSignal .OutcomeCallback ;
7172
72- import com .onesignal .OSPermissionObserver ;
73- import com .onesignal .OSSubscriptionObserver ;
74- import com .onesignal .OSEmailSubscriptionObserver ;
75-
76- import com .onesignal .OSPermissionStateChanges ;
77- import com .onesignal .OSSubscriptionStateChanges ;
78-
79- import org .json .JSONObject ;
80- import org .json .JSONArray ;
8173import org .json .JSONException ;
74+ import org .json .JSONObject ;
75+
76+ import java .util .HashMap ;
8277
8378public class RNOneSignal extends ReactContextBaseJavaModule
8479 implements
@@ -87,8 +82,8 @@ public class RNOneSignal extends ReactContextBaseJavaModule
8782 OSNotificationOpenedHandler ,
8883 OSEmailSubscriptionObserver ,
8984 LifecycleEventListener ,
90- OSInAppMessageClickHandler
91- {
85+ OSInAppMessageClickHandler ,
86+ OSSMSSubscriptionObserver {
9287
9388 public static final String HIDDEN_MESSAGE_KEY = "hidden" ;
9489
@@ -104,6 +99,7 @@ public class RNOneSignal extends ReactContextBaseJavaModule
10499 private boolean hasSetInAppClickedHandler = false ;
105100 private boolean hasSetSubscriptionObserver = false ;
106101 private boolean hasSetEmailSubscriptionObserver = false ;
102+ private boolean hasSetSMSSubscriptionObserver = false ;
107103 private boolean hasSetPermissionObserver = false ;
108104
109105 // A native module is supposed to invoke its callback only once. It can, however, store the callback and invoke it later.
@@ -166,7 +162,7 @@ private void initOneSignal() {
166162 Context context = mReactApplicationContext .getCurrentActivity ();
167163
168164 if (oneSignalInitDone ) {
169- Log .e ("onesignal " , "Already initialized the OneSignal React-Native SDK" );
165+ Log .e ("OneSignal " , "Already initialized the OneSignal React-Native SDK" );
170166 return ;
171167 }
172168
@@ -191,22 +187,28 @@ public void setAppId(String appId) {
191187 /* Observers */
192188 @ Override
193189 public void onOSPermissionChanged (OSPermissionStateChanges stateChanges ) {
194- Log .i ("Onesignal " , "sending permission change event" );
190+ Log .i ("OneSignal " , "sending permission change event" );
195191 sendEvent ("OneSignal-permissionChanged" , RNUtils .jsonToWritableMap (stateChanges .toJSONObject ()));
196192 }
197193
198194 @ Override
199195 public void onOSSubscriptionChanged (OSSubscriptionStateChanges stateChanges ) {
200- Log .i ("Onesignal " , "sending subscription change event" );
196+ Log .i ("OneSignal " , "sending subscription change event" );
201197 sendEvent ("OneSignal-subscriptionChanged" , RNUtils .jsonToWritableMap (stateChanges .toJSONObject ()));
202198 }
203199
204200 @ Override
205201 public void onOSEmailSubscriptionChanged (OSEmailSubscriptionStateChanges stateChanges ) {
206- Log .i ("Onesignal " , "sending email subscription change event" );
202+ Log .i ("OneSignal " , "sending email subscription change event" );
207203 sendEvent ("OneSignal-emailSubscriptionChanged" , RNUtils .jsonToWritableMap (stateChanges .toJSONObject ()));
208204 }
209205
206+ @ Override
207+ public void onSMSSubscriptionChanged (OSSMSSubscriptionStateChanges stateChanges ) {
208+ Log .i ("OneSignal" , "sending SMS subscription change event" );
209+ sendEvent ("OneSignal-smsSubscriptionChanged" , RNUtils .jsonToWritableMap (stateChanges .toJSONObject ()));
210+ }
211+
210212 @ ReactMethod
211213 public void addPermissionObserver () {
212214 if (!hasSetPermissionObserver ) {
@@ -231,11 +233,24 @@ public void addEmailSubscriptionObserver() {
231233 }
232234 }
233235
236+ @ ReactMethod
237+ public void addSMSSubscriptionObserver () {
238+ if (!hasSetSMSSubscriptionObserver ) {
239+ OneSignal .addSMSSubscriptionObserver (this );
240+ hasSetSMSSubscriptionObserver = true ;
241+ }
242+ }
243+
234244 /* Other methods */
235245
236246 @ ReactMethod
237247 public void getDeviceState (Promise promise ) {
238248 OSDeviceState state = OneSignal .getDeviceState ();
249+ if (state == null ) {
250+ Log .e ("OneSignal" , "getDeviceState: OSDeviceState is null" );
251+ promise .reject ("Null OSDeviceState" , "OSDeviceState is null" );
252+ return ;
253+ }
239254 promise .resolve (RNUtils .jsonToWritableMap (state .toJSONObject ()));
240255 }
241256
@@ -244,6 +259,11 @@ public void disablePush(boolean disable) {
244259 OneSignal .disablePush (disable );
245260 }
246261
262+ @ ReactMethod
263+ public void unsubscribeWhenNotificationsAreDisabled (boolean unsubscribe ) {
264+ OneSignal .unsubscribeWhenNotificationsAreDisabled (unsubscribe );
265+ }
266+
247267 @ ReactMethod
248268 public void sendTag (String key , String value ) {
249269 OneSignal .sendTag (key , value );
@@ -313,6 +333,44 @@ public void onFailure(EmailUpdateError error) {
313333 });
314334 }
315335
336+ @ ReactMethod
337+ public void setSMSNumber (String smsNumber , String smsAuthToken , final Callback callback ) {
338+ OneSignal .setSMSNumber (smsNumber , smsAuthToken , new OneSignal .OSSMSUpdateHandler () {
339+ @ Override
340+ public void onSuccess (JSONObject result ) {
341+ callback .invoke (RNUtils .jsonToWritableMap (result ));
342+ }
343+
344+ @ Override
345+ public void onFailure (OneSignal .OSSMSUpdateError error ) {
346+ try {
347+ callback .invoke (RNUtils .jsonToWritableMap (jsonFromErrorMessageString (error .getMessage ())));
348+ } catch (JSONException exception ) {
349+ exception .printStackTrace ();
350+ }
351+ }
352+ });
353+ }
354+
355+ @ ReactMethod
356+ public void logoutSMSNumber (final Callback callback ) {
357+ OneSignal .logoutSMSNumber (new OneSignal .OSSMSUpdateHandler () {
358+ @ Override
359+ public void onSuccess (JSONObject result ) {
360+ callback .invoke (RNUtils .jsonToWritableMap (result ));
361+ }
362+
363+ @ Override
364+ public void onFailure (OneSignal .OSSMSUpdateError error ) {
365+ try {
366+ callback .invoke (RNUtils .jsonToWritableMap (jsonFromErrorMessageString (error .getMessage ())));
367+ } catch (JSONException exception ) {
368+ exception .printStackTrace ();
369+ }
370+ }
371+ });
372+ }
373+
316374 @ ReactMethod
317375 public void promptLocation () {
318376 OneSignal .promptLocation ();
@@ -323,6 +381,11 @@ public void setLogLevel(int logLevel, int visualLogLevel) {
323381 OneSignal .setLogLevel (logLevel , visualLogLevel );
324382 }
325383
384+ @ ReactMethod
385+ public void isLocationShared (Promise promise ) {
386+ promise .resolve (OneSignal .isLocationShared ());
387+ }
388+
326389 @ ReactMethod
327390 public void setLocationShared (Boolean shared ) {
328391 OneSignal .setLocationShared (shared );
@@ -358,6 +421,16 @@ public void removeNotification(int id) {
358421 OneSignal .removeNotification (id );
359422 }
360423
424+ @ ReactMethod
425+ public void removeGroupedNotifications (String id ) {
426+ OneSignal .removeGroupedNotifications (id );
427+ }
428+
429+ @ ReactMethod
430+ public void requiresUserPrivacyConsent (Promise promise ) {
431+ promise .resolve (OneSignal .requiresUserPrivacyConsent ());
432+ }
433+
361434 @ ReactMethod
362435 public void setRequiresUserPrivacyConsent (Boolean required ) {
363436 OneSignal .setRequiresUserPrivacyConsent (required );
0 commit comments