Skip to content

Commit 0105e27

Browse files
committed
Fixed missing email_auth_hash from email_logout
1 parent 40b58d9 commit 0105e27

4 files changed

Lines changed: 27 additions & 9 deletions

File tree

OneSignalSDK/onesignal/src/main/java/com/onesignal/OneSignalStateSynchronizer.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -94,7 +94,7 @@ static void syncHashedEmail(String email) {
9494
}
9595

9696
static void setEmail(String email, String emailAuthHash) {
97-
getPushStateSynchronizer().setEmail(email);
97+
getPushStateSynchronizer().setEmail(email, emailAuthHash);
9898
getEmailStateSynchronizer().setEmail(email, emailAuthHash);
9999
}
100100

OneSignalSDK/onesignal/src/main/java/com/onesignal/UserStatePushSynchronizer.java

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -88,14 +88,14 @@ void updateState(JSONObject pushState) {
8888
}
8989
}
9090

91-
void setEmail(String email) {
91+
void setEmail(String email, String emailAuthHash) {
9292
try {
93-
JSONObject emailJSON = new JSONObject();
94-
emailJSON.put("email", email);
93+
UserState userState = getUserStateForModification();
9594

95+
userState.dependValues.put("email_auth_hash", emailAuthHash);
9696

97-
JSONObject syncValues = getUserStateForModification().syncValues;
98-
generateJsonDiff(syncValues, emailJSON, syncValues, null);
97+
JSONObject syncValues = userState.syncValues;
98+
generateJsonDiff(syncValues, new JSONObject().put("email", email), syncValues, null);
9999
}
100100
catch (JSONException e) {
101101
e.printStackTrace();

OneSignalSDK/onesignal/src/main/java/com/onesignal/UserStateSynchronizer.java

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -189,10 +189,11 @@ private void doEmailLogout(String userId) {
189189
String urlStr = "players/" + userId + "/email_logout";
190190
JSONObject jsonBody = new JSONObject();
191191
try {
192-
JSONObject syncValues = currentUserState.syncValues;
192+
JSONObject dependValues = currentUserState.dependValues;
193+
if (dependValues.has("email_auth_hash"))
194+
jsonBody.put("email_auth_hash", dependValues.optString("email_auth_hash"));
193195

194-
if (syncValues.has("email_auth_hash"))
195-
jsonBody.put("email_auth_hash", syncValues.optString("email_auth_hash"));
196+
JSONObject syncValues = currentUserState.syncValues;
196197
if (syncValues.has("parent_player_id"))
197198
jsonBody.put("parent_player_id", syncValues.optString("parent_player_id"));
198199

@@ -226,9 +227,11 @@ void onSuccess(String response) {
226227

227228
private void logoutEmailSyncSuccess() {
228229
toSyncUserState.dependValues.remove("logoutEmail");
230+
toSyncUserState.dependValues.remove("email_auth_hash");
229231
toSyncUserState.syncValues.remove("parent_player_id");
230232
toSyncUserState.persistState();
231233

234+
currentUserState.dependValues.remove("email_auth_hash");
232235
currentUserState.syncValues.remove("parent_player_id");
233236
String emailLoggedOut = currentUserState.syncValues.optString("email");
234237
currentUserState.syncValues.remove("email");

OneSignalSDK/unittest/src/test/java/com/test/onesignal/MainOneSignalClassRunner.java

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1084,6 +1084,21 @@ public void shouldUpdateEmailWhenAuthHashIsUsed() throws Exception {
10841084
assertEquals("different@email.com", emailPut.payload.get("identifier"));
10851085
}
10861086

1087+
@Test
1088+
public void shouldSendEmailAuthHashWithLogout() throws Exception {
1089+
OneSignalInit();
1090+
String mockEmailHash = new String(new char[64]).replace('\0', '0');
1091+
OneSignal.setEmail("josh@onesignal.com", mockEmailHash);
1092+
threadAndTaskWait();
1093+
1094+
OneSignal.logoutEmail();
1095+
threadAndTaskWait();
1096+
1097+
ShadowOneSignalRestClient.Request emailPut = ShadowOneSignalRestClient.requests.get(4);
1098+
assertEquals("players/a2f7f967-e8cc-11e4-bed1-118f05be4511/email_logout", emailPut.url);
1099+
assertEquals(mockEmailHash, emailPut.payload.get("email_auth_hash"));
1100+
}
1101+
10871102
private void emailSetThenLogout() throws Exception {
10881103
OneSignal.setEmail("josh@onesignal.com");
10891104
threadAndTaskWait();

0 commit comments

Comments
 (0)