Skip to content

Commit 5ba6a16

Browse files
committed
Added Android Email Support
• Support for React-Native Email has already been implemented for iOS. • Now added support for Android as well
1 parent 223111e commit 5ba6a16

File tree

3 files changed

+68
-21
lines changed

3 files changed

+68
-21
lines changed

android/src/main/java/com/geektime/rnonesignalandroid/RNOneSignal.java

Lines changed: 63 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,8 @@
2424
import com.onesignal.OSPermissionSubscriptionState;
2525
import com.onesignal.OSSubscriptionState;
2626
import com.onesignal.OneSignal;
27+
import com.onesignal.OneSignal.EmailUpdateHandler;
28+
import com.onesignal.OneSignal.EmailUpdateError;
2729

2830
import org.json.JSONObject;
2931
import org.json.JSONException;
@@ -53,6 +55,7 @@ public RNOneSignal(ReactApplicationContext reactContext) {
5355
// However it seems it is also to soon to call getCurrentActivity() from the reactContext as well.
5456
// This will normally succeed when onHostResume fires instead.
5557
private void initOneSignal() {
58+
5659
Activity activity = getCurrentActivity();
5760
if (activity == null || oneSignalInitDone)
5861
return;
@@ -98,6 +101,66 @@ public void tagsAvailable(JSONObject tags) {
98101
});
99102
}
100103

104+
@ReactMethod
105+
public void setUnauthenticatedEmail(String email, final Callback callback) {
106+
OneSignal.setEmail(email, null, new OneSignal.EmailUpdateHandler() {
107+
@Override
108+
public void onSuccess() {
109+
callback.invoke();
110+
}
111+
112+
@Override
113+
public void onFailure(EmailUpdateError error) {
114+
try {
115+
JSONObject errorObject = new JSONObject("{'error' : '" + error.getMessage() + "'}");
116+
callback.invoke(RNUtils.jsonToWritableMap(errorObject));
117+
} catch (JSONException exception) {
118+
exception.printStackTrace();
119+
}
120+
}
121+
});
122+
}
123+
124+
@ReactMethod
125+
public void setEmail(String email, String emailAuthToken, final Callback callback) {
126+
OneSignal.setEmail(email, emailAuthToken, new EmailUpdateHandler() {
127+
@Override
128+
public void onSuccess() {
129+
callback.invoke();
130+
}
131+
132+
@Override
133+
public void onFailure(EmailUpdateError error) {
134+
try {
135+
JSONObject errorObject = new JSONObject("{'error' : '" + error.getMessage() + "'}");
136+
callback.invoke(RNUtils.jsonToWritableMap(errorObject));
137+
} catch (JSONException exception) {
138+
exception.printStackTrace();
139+
}
140+
}
141+
});
142+
}
143+
144+
@ReactMethod
145+
public void logoutEmail(final Callback callback) {
146+
OneSignal.logoutEmail(new EmailUpdateHandler() {
147+
@Override
148+
public void onSuccess() {
149+
callback.invoke();
150+
}
151+
152+
@Override
153+
public void onFailure(EmailUpdateError error) {
154+
try {
155+
JSONObject errorObject = new JSONObject("{'error' : '" + error.getMessage() + "'}");
156+
callback.invoke(RNUtils.jsonToWritableMap(errorObject));
157+
} catch (JSONException exception) {
158+
exception.printStackTrace();
159+
}
160+
}
161+
});
162+
}
163+
101164
@ReactMethod
102165
public void configure() {
103166
OneSignal.idsAvailable(new OneSignal.IdsAvailableHandler() {

index.js

Lines changed: 5 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -196,30 +196,17 @@ export default class OneSignal {
196196

197197
static setEmail(email, emailAuthCode, callback) {
198198

199-
if (callback == undefined) {
199+
if (callback == undefined && typeof emailAuthCode == 'function') {
200200
//emailAuthCode is an optional parameter
201201
//since JS does not support function overloading,
202202
//unauthenticated setEmail calls will have emailAuthCode as the callback
203203

204204
var callback = emailAuthCode;
205205

206-
invariant(
207-
typeof callback === 'function',
208-
'Must provide a valid callback'
209-
);
210-
211-
if (Platform.OS == "ios") {
212-
RNOneSignal.setUnauthenticatedEmail(email, callback);
213-
}
206+
RNOneSignal.setUnauthenticatedEmail(email, callback);
214207
} else {
215-
invariant(
216-
typeof callback === 'function',
217-
'Must provide a valid callback'
218-
);
219208

220-
if (Platform.OS == "ios") {
221-
RNOneSignal.setEmail(email, emailAuthCode, callback);
222-
}
209+
RNOneSignal.setEmail(email, emailAuthCode, callback);
223210
}
224211
}
225212

@@ -228,10 +215,8 @@ export default class OneSignal {
228215
typeof callback === 'function',
229216
'Must provide a valid callback'
230217
);
231-
232-
if (Platform.OS == "ios") {
233-
RNOneSignal.logoutEmail(callback);
234-
}
218+
219+
RNOneSignal.logoutEmail(callback);
235220
}
236221

237222
static setLocationShared(shared) {

ios/RCTOneSignal/RCTOneSignal.m

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -56,7 +56,6 @@ - (id)initWithLaunchOptions:(NSDictionary *)launchOptions appId:(NSString *)appI
5656
[OneSignal addSubscriptionObserver:self];
5757
[OneSignal addEmailSubscriptionObserver:self];
5858
[OneSignal setValue:@"react" forKey:@"mSDKType"];
59-
[OneSignal setLogLevel:ONE_S_LL_VERBOSE visualLevel:ONE_S_LL_NONE];
6059
[OneSignal initWithLaunchOptions:launchOptions
6160
appId:appId
6261
handleNotificationReceived:^(OSNotification* notification) {

0 commit comments

Comments
 (0)