Skip to content

Commit c429de2

Browse files
authored
Merge pull request #86 from chrbayer/master
Handle sessionToken correctly in ParseUser
2 parents c0c7b86 + 799c83b commit c429de2

File tree

2 files changed

+12
-3
lines changed

2 files changed

+12
-3
lines changed

lib/src/base/parse_constants.dart

+1
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@ const String keyVarUpdatedAt = 'updatedAt';
2222
const String keyVarUsername = 'username';
2323
const String keyVarEmail = 'email';
2424
const String keyVarPassword = 'password';
25+
const String keyVarSessionToken = 'sessionToken';
2526
const String keyVarAcl = 'ACL';
2627

2728
// Classes

lib/src/objects/parse_user.dart

+11-3
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,11 @@ class ParseUser extends ParseObject implements ParseCloneable {
3030
set emailAddress(String emailAddress) =>
3131
set<String>(keyVarEmail, emailAddress);
3232

33+
String get sessionToken => super.get<String>(keyVarSessionToken);
34+
35+
set sessionToken(String sessionToken) =>
36+
set<String>(keyVarSessionToken, sessionToken);
37+
3338
/// Creates an instance of ParseUser
3439
///
3540
/// Users can set whether debug should be set on this class with a [bool],
@@ -41,7 +46,7 @@ class ParseUser extends ParseObject implements ParseCloneable {
4146
/// is required as well to create a full new user object on ParseServer. Only
4247
/// username and password is required to login
4348
ParseUser(String username, String password, String emailAddress,
44-
{bool debug, ParseHTTPClient client})
49+
{String sessionToken, bool debug, ParseHTTPClient client})
4550
: super(keyClassUser) {
4651
_debug = isDebugEnabled(objectLevelDebug: debug);
4752
_client = client ??
@@ -52,6 +57,7 @@ class ParseUser extends ParseObject implements ParseCloneable {
5257
this.username = username;
5358
this.password = password;
5459
this.emailAddress = emailAddress;
60+
this.sessionToken = sessionToken;
5561
}
5662

5763
ParseUser.forQuery() : super(keyClassUser);
@@ -105,7 +111,7 @@ class ParseUser extends ParseObject implements ParseCloneable {
105111
/// Current user is stored locally, but in case of a server update [bool]
106112
/// fromServer can be called and an updated version of the [User] object will be
107113
/// returned
108-
static currentUser() {
114+
static Future<ParseUser> currentUser() {
109115
return _getUserFromLocalStore();
110116
}
111117

@@ -207,6 +213,7 @@ class ParseUser extends ParseObject implements ParseCloneable {
207213
final String sessionId = _client.data.sessionId;
208214

209215
_client.data.sessionId = null;
216+
ParseCoreData().setSessionId(null);
210217

211218
if (deleteLocalUserData == true) {
212219
unpin(key: keyParseStoreUser);
@@ -366,7 +373,8 @@ class ParseUser extends ParseObject implements ParseCloneable {
366373
Map<String, dynamic> responseData = JsonDecoder().convert(response.body);
367374
if (responseData.containsKey(keyVarObjectId)) {
368375
parseResponse.result.fromJson(responseData);
369-
ParseCoreData().setSessionId(responseData[keyParamSessionToken]);
376+
user.sessionToken = responseData[keyParamSessionToken];
377+
ParseCoreData().setSessionId(user.sessionToken);
370378
}
371379

372380
if (type == ParseApiRQ.getAll || type == ParseApiRQ.destroy) {

0 commit comments

Comments
 (0)