Skip to content

Commit 876c80a

Browse files
committed
Fix logout email ended linking again email
* Clean email data from user states * Don't wait for email to be save on shared preferences, use memory email data * Add logout email button under example app
1 parent f3e606c commit 876c80a

File tree

6 files changed

+52
-1
lines changed

6 files changed

+52
-1
lines changed

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

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -86,4 +86,10 @@ public JSONObject optJSONObject(String name) {
8686
return jsonObject.optJSONObject(name);
8787
}
8888

89+
@Override
90+
public String toString() {
91+
return "ImmutableJSONObject{" +
92+
"jsonObject=" + jsonObject +
93+
'}';
94+
}
8995
}

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

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2353,12 +2353,16 @@ static boolean hasEmailId() {
23532353
}
23542354

23552355
static String getEmailId() {
2356-
if (TextUtils.isEmpty(emailId) && appContext != null) {
2356+
if (emailId == null && appContext != null) {
23572357
emailId = OneSignalPrefs.getString(
23582358
OneSignalPrefs.PREFS_ONESIGNAL,
23592359
OneSignalPrefs.PREFS_OS_EMAIL_ID,
23602360
null);
23612361
}
2362+
2363+
if (TextUtils.isEmpty(emailId))
2364+
return null;
2365+
23622366
return emailId;
23632367
}
23642368

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

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -395,4 +395,13 @@ private static JSONObject generateJsonDiff(JSONObject cur, JSONObject changedTo,
395395
return JSONUtils.generateJsonDiff(cur, changedTo, baseOutput, includeFields);
396396
}
397397
}
398+
399+
@Override
400+
public String toString() {
401+
return "UserState{" +
402+
"persistKey='" + persistKey + '\'' +
403+
", dependValues=" + dependValues +
404+
", syncValues=" + syncValues +
405+
'}';
406+
}
398407
}

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

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -292,6 +292,7 @@ private void logoutEmailSyncSuccess() {
292292
getToSyncUserState().removeFromDependValues("logoutEmail");
293293
toSyncUserState.removeFromDependValues("email_auth_hash");
294294
toSyncUserState.removeFromSyncValues("parent_player_id");
295+
toSyncUserState.removeFromSyncValues("email");
295296
toSyncUserState.persistState();
296297

297298
currentUserState.removeFromDependValues("email_auth_hash");

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

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -56,6 +56,15 @@ public static class Request {
5656
this.payload = payload;
5757
this.url = url;
5858
}
59+
60+
@Override
61+
public String toString() {
62+
return "Request{" +
63+
"method=" + method +
64+
", payload=" + payload +
65+
", url='" + url + '\'' +
66+
'}';
67+
}
5968
}
6069

6170
private static class PendingResponse {

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

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,7 @@
3939
import android.location.Location;
4040
import android.net.ConnectivityManager;
4141
import android.os.Bundle;
42+
import android.util.Log;
4243

4344
import com.huawei.hms.location.HWLocation;
4445
import com.onesignal.MockOSLog;
@@ -1748,6 +1749,27 @@ public void shouldLogoutOfEmail() throws Exception {
17481749
assertEquals("b2f7f966-d8cc-11e4-bed1-df8f05be55ba", logoutEmailPost.payload.get("app_id"));
17491750
}
17501751

1752+
@Test
1753+
public void logoutEmailShouldNotSendEmailPlayersRequest() throws Exception {
1754+
// 1. Init OneSignal and set email
1755+
OneSignalInit();
1756+
1757+
emailSetThenLogout();
1758+
1759+
advanceSystemTimeBy(60);
1760+
blankActivityController.pause();
1761+
threadAndTaskWait();
1762+
1763+
List<ShadowOneSignalRestClient.Request> requests = ShadowOneSignalRestClient.requests;
1764+
assertEquals(6, ShadowOneSignalRestClient.networkCallCount);
1765+
1766+
ShadowOneSignalRestClient.Request postPush = ShadowOneSignalRestClient.requests.get(4);
1767+
assertNotEquals("players/a2f7f967-e8cc-11e4-bed1-118f05be4511", postPush.url);
1768+
1769+
ShadowOneSignalRestClient.Request postEmail = ShadowOneSignalRestClient.requests.get(5);
1770+
assertEquals("players/a2f7f967-e8cc-11e4-bed1-118f05be4511/on_focus", postEmail.url);
1771+
}
1772+
17511773
@Test
17521774
public void shouldFireOnSuccessOfLogoutEmail() throws Exception {
17531775
OneSignalInit();

0 commit comments

Comments
 (0)