File tree Expand file tree Collapse file tree 2 files changed +28
-6
lines changed Expand file tree Collapse file tree 2 files changed +28
-6
lines changed Original file line number Diff line number Diff line change @@ -501,12 +501,15 @@ public Task<Void> then(Task<Void> task) throws Exception {
501501 }
502502
503503 @ Override
504- void setState (ParseObject .State newState ) {
505- // Avoid overwriting auth info
506- State .Builder builder = new State .Builder (getState ());
507- builder .apply (newState );
508-
509- super .setState (builder .build ());
504+ /* package */ void setState (ParseObject .State newState ) {
505+ // Avoid clearing sessionToken when updating the current user's State via ParseQuery result
506+ if (isCurrentUser () && getSessionToken () != null
507+ && newState .get ("sessionToken" ) == null ) {
508+ super .setState (newState .newBuilder ().put ("sessionToken" , getSessionToken ()).build ());
509+ }
510+ else {
511+ super .setState (newState );
512+ }
510513 }
511514
512515 @ Override
Original file line number Diff line number Diff line change @@ -1059,6 +1059,25 @@ public void testUpgradeToRevocableSessionAsync() throws Exception {
10591059 verify (currentUserController , times (1 )).setAsync (user );
10601060 }
10611061
1062+ @ Test
1063+ public void testDontOverwriteSessionTokenForCurrentUser () throws Exception {
1064+ ParseUser .State sessionTokenState = new ParseUser .State .Builder ()
1065+ .sessionToken ("sessionToken" )
1066+ .build ();
1067+ ParseUser .State emptyState = new ParseUser .State .Builder ().build ();
1068+
1069+ ParseUser user = ParseObject .from (sessionTokenState );
1070+ user .setIsCurrentUser (true );
1071+ assertEquals (user .getSessionToken (), "sessionToken" );
1072+
1073+ user .setState (emptyState );
1074+ assertEquals (user .getSessionToken (), "sessionToken" );
1075+
1076+ user .setIsCurrentUser (false );
1077+ user .setState (emptyState );
1078+ assertNull (user .getSessionToken ());
1079+ }
1080+
10621081 //endregion
10631082
10641083 //region testUnlinkFromAsync
You can’t perform that action at this time.
0 commit comments