diff --git a/lib/src/base/parse_constants.dart b/lib/src/base/parse_constants.dart index 8a0f0d5d0..592b07a9e 100644 --- a/lib/src/base/parse_constants.dart +++ b/lib/src/base/parse_constants.dart @@ -22,6 +22,7 @@ const String keyVarUpdatedAt = 'updatedAt'; const String keyVarUsername = 'username'; const String keyVarEmail = 'email'; const String keyVarPassword = 'password'; +const String keyVarSessionToken = 'sessionToken'; const String keyVarAcl = 'ACL'; // Classes diff --git a/lib/src/objects/parse_user.dart b/lib/src/objects/parse_user.dart index 7fc4ac533..7c7b05e7f 100644 --- a/lib/src/objects/parse_user.dart +++ b/lib/src/objects/parse_user.dart @@ -30,6 +30,11 @@ class ParseUser extends ParseObject implements ParseCloneable { set emailAddress(String emailAddress) => set(keyVarEmail, emailAddress); + String get sessionToken => super.get(keyVarSessionToken); + + set sessionToken(String sessionToken) => + set(keyVarSessionToken, sessionToken); + /// Creates an instance of ParseUser /// /// Users can set whether debug should be set on this class with a [bool], @@ -41,7 +46,7 @@ class ParseUser extends ParseObject implements ParseCloneable { /// is required as well to create a full new user object on ParseServer. Only /// username and password is required to login ParseUser(String username, String password, String emailAddress, - {bool debug, ParseHTTPClient client}) + {String sessionToken, bool debug, ParseHTTPClient client}) : super(keyClassUser) { _debug = isDebugEnabled(objectLevelDebug: debug); _client = client ?? @@ -52,6 +57,7 @@ class ParseUser extends ParseObject implements ParseCloneable { this.username = username; this.password = password; this.emailAddress = emailAddress; + this.sessionToken = sessionToken; } ParseUser.forQuery() : super(keyClassUser); @@ -105,7 +111,7 @@ class ParseUser extends ParseObject implements ParseCloneable { /// Current user is stored locally, but in case of a server update [bool] /// fromServer can be called and an updated version of the [User] object will be /// returned - static currentUser() { + static Future currentUser() { return _getUserFromLocalStore(); } @@ -207,6 +213,7 @@ class ParseUser extends ParseObject implements ParseCloneable { final String sessionId = _client.data.sessionId; _client.data.sessionId = null; + ParseCoreData().setSessionId(null); if (deleteLocalUserData == true) { unpin(key: keyParseStoreUser); @@ -366,7 +373,8 @@ class ParseUser extends ParseObject implements ParseCloneable { Map responseData = JsonDecoder().convert(response.body); if (responseData.containsKey(keyVarObjectId)) { parseResponse.result.fromJson(responseData); - ParseCoreData().setSessionId(responseData[keyParamSessionToken]); + user.sessionToken = responseData[keyParamSessionToken]; + ParseCoreData().setSessionId(user.sessionToken); } if (type == ParseApiRQ.getAll || type == ParseApiRQ.destroy) {