Skip to content

Commit 9d8c0a5

Browse files
committed
Code tidy, User section updated
1 parent ceac526 commit 9d8c0a5

File tree

10 files changed

+106
-72
lines changed

10 files changed

+106
-72
lines changed

example/lib/diet_plan.dart

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ class DietPlan extends ParseObject {
2121
static const String STATUS = 'Status';
2222

2323
@override
24-
dynamic fromJson(Map<String, dynamic> objectData) {
24+
dynamic fromJson(Map objectData) {
2525
this.name = objectData[NAME];
2626
this.description = objectData[DESCRIPTION];
2727
this.protein = objectData[PROTEIN];

example/lib/main.dart

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -113,6 +113,13 @@ class _MyAppState extends State<MyApp> {
113113

114114
initUser() async {
115115
ParseUser().create("TestFlutter", "TestPassword123", "TestFlutterSDK@gmail.com");
116-
ParseUser().signUp();
116+
var user = await ParseUser().signUp();
117+
user = await ParseUser().login();
118+
user = await ParseUser().currentUser(fromServer: true);
119+
user = await ParseUser().requestPasswordReset();
120+
user = await ParseUser().verificationEmailRequest();
121+
user = await ParseUser().all();
122+
user = await ParseUser().save();
123+
user = await ParseUser().destroy();
117124
}
118125
}

lib/data/parse_data_server.dart

Lines changed: 7 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -3,13 +3,13 @@ class ParseDataServer {
33
static ParseDataServer get instance => _instance;
44

55
static void init(appId, serverUrl, {debug, appName, liveQueryUrl, masterKey, sessionId}){
6-
_instance ??= ParseDataServer._init(appId, serverUrl);
6+
_instance = ParseDataServer._init(appId, serverUrl);
77

8-
if (debug != null) _instance..debug = debug;
9-
if (appName != null) _instance..appName = appName;
10-
if (liveQueryUrl != null) _instance..liveQueryURL = liveQueryUrl;
11-
if (masterKey != null) _instance..masterKey = masterKey;
12-
if (sessionId != null) _instance..sessionId = sessionId;
8+
if (debug != null) _instance.debug = debug;
9+
if (appName != null) _instance.appName = appName;
10+
if (liveQueryUrl != null) _instance.liveQueryURL = liveQueryUrl;
11+
if (masterKey != null) _instance.masterKey = masterKey;
12+
if (sessionId != null) _instance.sessionId = sessionId;
1313
}
1414

1515
String appName;
@@ -22,12 +22,7 @@ class ParseDataServer {
2222

2323
ParseDataServer._init(
2424
this.applicationId,
25-
this.serverUrl,
26-
{this.debug: false,
27-
this.appName: "ParseApplication",
28-
this.liveQueryURL,
29-
this.masterKey,
30-
this.sessionId});
25+
this.serverUrl);
3126

3227
factory ParseDataServer() => _instance;
3328

lib/data/parse_data_user.dart

Lines changed: 14 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,6 @@
1+
import 'package:parse_server_sdk/base/parse_constants.dart';
12
import 'package:parse_server_sdk/objects/parse_base.dart';
3+
import 'package:parse_server_sdk/utils/parse_utils_date.dart';
24

35
class User extends ParseBase {
46
static User _instance;
@@ -17,13 +19,19 @@ class User extends ParseBase {
1719

1820
factory User() => _instance;
1921

20-
fromJson(Map<String, dynamic> objectData) {
21-
setObjectData(objectData);
22+
fromJson(Map objectData) {
23+
if (getObjectData() == null) setObjectData(objectData);
24+
getObjectData().addAll(objectData);
25+
if (getObjectData().containsKey(ParseConstants.OBJECT_ID)) objectId = getValue(ParseConstants.OBJECT_ID).toString();
26+
if (getObjectData().containsKey(ParseConstants.CREATED_AT)) createdAt = convertStringToDateTime(getValue(ParseConstants.CREATED_AT).toString());
27+
if (getObjectData().containsKey(ParseConstants.UPDATED_AT)) updatedAt = convertStringToDateTime(getValue(ParseConstants.UPDATED_AT).toString());
28+
if (getObjectData().containsKey(ACL)) acl = getValue(ACL).toString();
29+
if (getObjectData().containsKey(USERNAME)) username = getValue(USERNAME).toString();
30+
if (getObjectData().containsKey(PASSWORD)) password = getValue(PASSWORD).toString();
31+
if (getObjectData().containsKey(EMAIL)) emailAddress = getValue(EMAIL).toString();
32+
33+
if (updatedAt == null) updatedAt = createdAt;
2234

23-
acl = getObjectData()[ACL];
24-
username = getObjectData()[USERNAME];
25-
password = getObjectData()[PASSWORD];
26-
emailAddress = getObjectData()[EMAIL];
2735
return this;
2836
}
2937

lib/objects/parse_base.dart

Lines changed: 12 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -3,13 +3,16 @@ import 'dart:convert';
33
import 'package:meta/meta.dart';
44

55
abstract class ParseBase {
6-
Map<String, dynamic> _objectData;
6+
Map _objectData;
77

8-
String get objectId => _objectData['objectId'];
8+
get getObjectId => _objectData['objectId'] == null ? objectId : _objectData['objectId'];
9+
String objectId;
910

10-
DateTime get createdAt => _objectData['createdAt'];
11+
get getCreatedAt => _objectData['createdAt'] == null ? createdAt : _objectData['createdAt'];
12+
DateTime createdAt;
1113

12-
DateTime get updatedAt => _objectData['updatedAt'];
14+
get getUpdatedAt => _objectData['updatedAt'] == null ? updatedAt : _objectData['updatedAt'];
15+
DateTime updatedAt;
1316

1417
@protected
1518
toJson() => JsonEncoder().convert(getObjectData());
@@ -18,13 +21,16 @@ abstract class ParseBase {
1821
copy() => JsonDecoder().convert(fromJson(getObjectData()));
1922

2023
@protected
21-
setObjectData(Map<String, dynamic> objectData) => _objectData = objectData;
24+
setObjectData(Map objectData) => _objectData = objectData;
2225

2326
@protected
2427
getObjectData() => _objectData;
2528

2629
@protected
27-
fromJson(Map<String, dynamic> objectData) => objectData;
30+
fromJson(Map objectData) {
31+
if (_objectData == null) _objectData = Map();
32+
_objectData.addAll(objectData);
33+
}
2834

2935
setValue(String key, dynamic value, {bool forceUpdate: true}) {
3036
if (value != null) {

lib/objects/parse_object.dart

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -13,8 +13,13 @@ class ParseObject extends ParseBase {
1313
bool _debug;
1414
ParseHTTPClient _client;
1515

16-
ParseObject(this.className, {bool debug: false, ParseHTTPClient client}) {
17-
_debug = debug;
16+
ParseObject(this.className, {bool debug, ParseHTTPClient client}) {
17+
if (debug == null) {
18+
_debug = client.data.debug;
19+
} else {
20+
_debug = debug;
21+
}
22+
1823
_path = "/classes/$className";
1924
setObjectData(Map<String, dynamic>());
2025
client == null ? _client = ParseHTTPClient() : _client = client;

lib/objects/parse_response.dart

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
11
import 'dart:convert';
22

3+
import 'package:http/http.dart';
34
import 'package:parse_server_sdk/objects/parse_exception.dart';
45
import 'package:parse_server_sdk/objects/parse_object.dart';
56
import 'package:parse_server_sdk/utils/parse_utils_objects.dart';
6-
import 'package:http/http.dart';
77

88
class ParseResponse {
99
bool success = false;
@@ -51,7 +51,7 @@ class ParseResponse {
5151
}
5252

5353
static _handleSingleResult(ParseObject object, map) {
54-
ParseUtilsObjects.populateObjectBaseData(object, map);
54+
populateObjectBaseData(object, map);
5555
return object.fromJson(map);
5656
}
5757

lib/objects/parse_user.dart

Lines changed: 43 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -10,30 +10,41 @@ class ParseUser {
1010
ParseHTTPClient _client;
1111
static final String className = '_User';
1212
String path = "/classes/$className";
13-
bool debug;
13+
bool _debug;
1414

15-
ParseUser({this.debug: false, ParseHTTPClient client}) {
15+
ParseUser({debug, ParseHTTPClient client}) {
1616
client != null ? _client = client : _client = ParseHTTPClient();
17+
18+
if (_debug == null) {
19+
_debug = client.data.debug;
20+
} else {
21+
_debug = _debug;
22+
}
1723
}
1824

1925
create(String username, String password, String emailAddress) {
20-
User.init(username, password, emailAddress.toLowerCase());
21-
return User();
26+
User.init(username, password, emailAddress);
27+
return User.instance;
2228
}
2329

24-
_getBasePath(String path) => "${_client.data.serverUrl}$path";
25-
2630
currentUser({bool fromServer: false}) async {
27-
if (User() == null) {
31+
if (_client.data.sessionId == null) {
2832
return null;
2933
} else if (fromServer == false) {
30-
return User();
34+
return User.instance;
3135
} else {
32-
var uri = "${_getBasePath(path)}/me";
33-
var result = await _client.get(uri, headers: {
36+
37+
Uri tempUri = Uri.parse(_client.data.serverUrl);
38+
39+
Uri uri= Uri(
40+
scheme: tempUri.scheme,
41+
host: tempUri.host,
42+
path: "${tempUri.path}$path/me");
43+
44+
final response = await _client.get(uri, headers: {
3445
ParseConstants.HEADER_SESSION_TOKEN: _client.data.sessionId
3546
});
36-
return _handleResult(result, ParseApiUserCallType.currentUser);
47+
return _handleResponse(response, ParseApiUserCallType.currentUser);
3748
}
3849
}
3950

@@ -56,8 +67,8 @@ class ParseUser {
5667
},
5768
body: JsonEncoder().convert(bodyData));
5869

59-
_handleResult(response, ParseApiUserCallType.signUp);
60-
return User();
70+
_handleResponse(response, ParseApiUserCallType.signUp);
71+
return User.instance;
6172
}
6273

6374
login() async {
@@ -68,24 +79,24 @@ class ParseUser {
6879
host: tempUri.host,
6980
path: "${tempUri.path}/login",
7081
queryParameters: {
71-
"username": User().username,
72-
"password": User().password
82+
"username": User.instance.username,
83+
"password": User.instance.password
7384
});
7485

7586
final response = await _client.post(url, headers: {
7687
ParseConstants.HEADER_REVOCABLE_SESSION: "1",
7788
});
7889

79-
_handleResult(response, ParseApiUserCallType.login);
80-
return User();
90+
_handleResponse(response, ParseApiUserCallType.login);
91+
return User.instance;
8192
}
8293

8394
verificationEmailRequest() async {
8495
final response = await _client.post(
8596
"${_client.data.serverUrl}/verificationEmailRequest",
8697
body: JsonEncoder().convert({"email": User().emailAddress}));
8798

88-
return _handleResult(
99+
return _handleResponse(
89100
response, ParseApiUserCallType.verificationEmailRequest);
90101
}
91102

@@ -94,59 +105,61 @@ class ParseUser {
94105
"${_client.data.serverUrl}/requestPasswordReset",
95106
body: JsonEncoder().convert({"email": User().emailAddress}));
96107

97-
return _handleResult(response, ParseApiUserCallType.requestPasswordReset);
108+
return _handleResponse(response, ParseApiUserCallType.requestPasswordReset);
98109
}
99110

100111
save() async {
101-
if (User().objectId == null) {
112+
if (User.instance.objectId == null) {
102113
return signUp();
103114
} else {
104115
final response = await _client.put(
105116
_client.data.serverUrl + "$path/${User().objectId}",
106117
body: JsonEncoder().convert(User().getObjectData()));
107-
return _handleResult(response, ParseApiUserCallType.save);
118+
return _handleResponse(response, ParseApiUserCallType.save);
108119
}
109120
}
110121

111122
destroy() async {
112123
final response = await _client.delete(
113124
_client.data.serverUrl + "$path/${User().objectId}",
114125
headers: {"X-Parse-Session-Token": _client.data.sessionId});
115-
_handleResult(response, ParseApiUserCallType.destroy);
116-
return User().objectId;
126+
127+
_handleResponse(response, ParseApiUserCallType.destroy);
128+
129+
return User.instance.objectId;
117130
}
118131

119132
all() async {
120133
final response = await _client.get(_client.data.serverUrl + "$path");
121-
return _handleResult(response, ParseApiUserCallType.all);
134+
return _handleResponse(response, ParseApiUserCallType.all);
122135
}
123136

124-
_handleResult(Response response, ParseApiUserCallType type) {
137+
_handleResponse(Response response, ParseApiUserCallType type) {
125138
Map<String, dynamic> responseData = JsonDecoder().convert(response.body);
126139

127140
var responseString = ' \n';
128141

129142
responseString += "----"
130143
"\n${_client.data.appName} API Response ($className : ${getEnumValue(type)}) :";
131144

132-
if (response.statusCode == 200) {
145+
if (response.statusCode == 200 || response.statusCode == 201) {
133146
responseString += "\nStatus Code: ${response.statusCode}";
134147
responseString += "\nPayload: ${responseData.toString()}";
135148

136149
if (responseData.containsKey('objectId')) {
137-
User().fromJson(JsonDecoder().convert(response.body) as Map);
138-
_client.data.sessionId = responseData['sessionId'];
150+
User.instance.fromJson(JsonDecoder().convert(response.body) as Map);
151+
_client.data.sessionId = responseData['sessionToken'];
139152
}
140153
} else {
141154
responseString += "\nStatus Code: ${responseData['code']}";
142155
responseString += "\nException: ${responseData['error']}";
143156
}
144157

145-
if (_client.data.debug || debug) {
158+
if (_client.data.debug || _debug) {
146159
responseString += "\n----\n";
147160
print(responseString);
148161
}
149162

150-
return User();
163+
return User.instance;
151164
}
152165
}

lib/utils/parse_utils_date.dart

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,21 +1,20 @@
11
import 'package:parse_server_sdk/base/parse_constants.dart';
22
import 'package:intl/intl.dart';
33

4-
class ParseUtilsDates {
5-
static DateTime convertStringToDateTime(String date) {
4+
DateTime convertStringToDateTime(String date) {
65
if (date == null) return null;
76

87
var formatter = DateFormat(ParseConstants.PARSE_DATE_FORMAT);
98
var dateToReturn = formatter.parse(_removeTimeZones(date));
109
return dateToReturn;
1110
}
1211

13-
static String _removeTimeZones(String date) {
12+
String _removeTimeZones(String date) {
1413
// TODO - library doesn't support timezones. Monitor this
1514
if (date.contains('zzzZ')) {
1615
return date.replaceRange(date.length - 4, date.length, '');
1716
} else {
1817
return date;
1918
}
2019
}
21-
}
20+

lib/utils/parse_utils_objects.dart

Lines changed: 9 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -2,11 +2,12 @@ import 'package:parse_server_sdk/base/parse_constants.dart';
22
import 'package:parse_server_sdk/objects/parse_object.dart';
33
import 'package:parse_server_sdk/utils/parse_utils_date.dart';
44

5-
class ParseUtilsObjects {
6-
static populateObjectBaseData(ParseObject object, Map<String, dynamic> objectData) {
7-
object.setValue(ParseConstants.OBJECT_ID, objectData[ParseConstants.OBJECT_ID]);
8-
object.setValue(ParseConstants.CREATED_AT, ParseUtilsDates.convertStringToDateTime(objectData[ParseConstants.CREATED_AT]));
9-
object.setValue(ParseConstants.OBJECT_ID, ParseUtilsDates.convertStringToDateTime(objectData[ParseConstants.UPDATED_AT]));
10-
return object;
11-
}
12-
}
5+
populateObjectBaseData(ParseObject object, Map<String, dynamic> objectData) {
6+
object.setValue(
7+
ParseConstants.OBJECT_ID, objectData[ParseConstants.OBJECT_ID]);
8+
object.setValue(ParseConstants.CREATED_AT,
9+
convertStringToDateTime(objectData[ParseConstants.CREATED_AT]));
10+
object.setValue(ParseConstants.OBJECT_ID,
11+
convertStringToDateTime(objectData[ParseConstants.UPDATED_AT]));
12+
return object;
13+
}

0 commit comments

Comments
 (0)