Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

User login, register, creation fix. Debug features added #14

Merged
merged 1 commit into from
Dec 31, 2018
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
21 changes: 15 additions & 6 deletions example/lib/main.dart
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@ import 'package:flutter_plugin_example/application_constants.dart';
import 'package:flutter_plugin_example/diet_plan.dart';
import 'package:parse_server_sdk/objects/parse_object.dart';
import 'package:parse_server_sdk/network/parse_query.dart';
import 'package:parse_server_sdk/objects/parse_response.dart';
import 'package:parse_server_sdk/objects/parse_user.dart';
import 'package:parse_server_sdk/parse.dart';

Expand Down Expand Up @@ -52,11 +53,22 @@ class _MyAppState extends State<MyApp> {

runTestQueries(){
getAllItems();
getAllItemsByName();
getSingleItem();
query();
initUser();
}

void getAllItemsByName() async {
var apiResponse = await ParseObject('ParseTableName').getAll();

if (apiResponse.success){
for (var testObject in apiResponse.result) {
print(ApplicationConstants.APP_NAME + ": " + testObject.toString());
}
}
}

void getAllItems() async {
var dietPlans = await DietPlan().getAll();

Expand Down Expand Up @@ -89,7 +101,7 @@ class _MyAppState extends State<MyApp> {
if (response.success) {
print(ApplicationConstants.APP_NAME +
": " +
((response.result as List<ParseObject>)[0] as DietPlan)
((response.result as List<dynamic>).first as DietPlan)
.toString());
} else {
print(ApplicationConstants.APP_NAME +
Expand All @@ -100,10 +112,7 @@ class _MyAppState extends State<MyApp> {
}

initUser() async {
User().createNewUser("TestFlutter", "TestPassword123", "TestEmail@Email.com");

User().login().then((val) {
print(val);
});
ParseUser().create("TestFlutter", "TestPassword123", "TestFlutterSDK@gmail.com");
ParseUser().signUp();
}
}
3 changes: 3 additions & 0 deletions lib/base/parse_constants.dart
Original file line number Diff line number Diff line change
Expand Up @@ -4,4 +4,7 @@ class ParseConstants {
static const String OBJECT_ID = 'objectId';
static const String CREATED_AT = 'createdAt';
static const String UPDATED_AT = 'updatedAT';

static const String HEADER_SESSION_TOKEN = 'X-Parse-Session-Token';
static const String HEADER_REVOCABLE_SESSION = 'X-Parse-Revocable-Session';
}
40 changes: 32 additions & 8 deletions lib/data/parse_data_user.dart
Original file line number Diff line number Diff line change
@@ -1,21 +1,45 @@
class ParseDataUser {
static ParseDataUser _instance;
import 'package:parse_server_sdk/objects/parse_base.dart';

static ParseDataUser get instance => _instance;
class User extends ParseBase {
static User _instance;

static User get instance => _instance;

static void init(username, password, emailAddress) =>
_instance ??= ParseDataUser._init(username, password, emailAddress);
_instance ??= User._init(username, password, emailAddress);

String acl;
String username;
String password;
String emailAddress;

ParseDataUser._init(this.username, this.password, this.emailAddress);
User._init(this.username, this.password, this.emailAddress): super();

factory User() => _instance;

fromJson(Map<String, dynamic> objectData) {
setObjectData(objectData);

factory ParseDataUser() => _instance;
acl = getObjectData()[ACL];
username = getObjectData()[USERNAME];
password = getObjectData()[PASSWORD];
emailAddress = getObjectData()[EMAIL];
return this;
}

Map<String, dynamic> toJson() => {
ACL: acl,
USERNAME: username,
PASSWORD: password,
EMAIL: emailAddress,
};

@override
String toString() =>
"Username: $username \n"
String toString() => "Username: $username \n"
"Email Address:$emailAddress";

static const String USERNAME = 'Username';
static const String EMAIL = 'Email';
static const String PASSWORD = 'Password';
static const String ACL = 'ACL';
}
21 changes: 0 additions & 21 deletions lib/data/parse_user_data.dart

This file was deleted.

26 changes: 26 additions & 0 deletions lib/enums/parse_enum_object_call.dart
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
enum ParseApiObjectCallType {
get, getAll, create, save, query, delete
}

getEnumValue(ParseApiObjectCallType type){
switch (type){
case ParseApiObjectCallType.get: {
return 'get';
}
case ParseApiObjectCallType.getAll: {
return 'getAll';
}
case ParseApiObjectCallType.create: {
return 'create';
}
case ParseApiObjectCallType.save: {
return 'save';
}
case ParseApiObjectCallType.query: {
return 'query';
}
case ParseApiObjectCallType.delete: {
return 'delete';
}
}
}
32 changes: 32 additions & 0 deletions lib/enums/parse_enum_user_call.dart
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
enum ParseApiUserCallType {
currentUser, signUp, login, verificationEmailRequest, requestPasswordReset, save, destroy, all
}

getEnumValue(ParseApiUserCallType type){
switch (type){
case ParseApiUserCallType.currentUser: {
return 'currentUser';
}
case ParseApiUserCallType.signUp: {
return 'signUp';
}
case ParseApiUserCallType.login: {
return 'login';
}
case ParseApiUserCallType.verificationEmailRequest: {
return 'verificationEmailRequest';
}
case ParseApiUserCallType.requestPasswordReset: {
return 'requestPasswordReset';
}
case ParseApiUserCallType.save: {
return 'save';
}
case ParseApiUserCallType.destroy: {
return 'destroy';
}
case ParseApiUserCallType.all: {
return 'all';
}
}
}
5 changes: 2 additions & 3 deletions lib/network/parse_query.dart
Original file line number Diff line number Diff line change
@@ -1,12 +1,11 @@
import 'dart:async';
import 'dart:convert';

import 'package:parse_server_sdk/objects/parse_base.dart';
import 'package:parse_server_sdk/network/parse_http_client.dart';
import 'package:parse_server_sdk/objects/parse_object.dart';
import 'package:parse_server_sdk/objects/parse_response.dart';

class QueryBuilder extends ParseBaseObject {
class QueryBuilder {

ParseObject object;
final ParseHTTPClient client = ParseHTTPClient();
Expand Down Expand Up @@ -53,7 +52,7 @@ class QueryBuilder extends ParseBaseObject {
return new Future(foo);
}

Future<ParseResponse> query() async {
query() async {
return object.query(_buildQuery());
}

Expand Down
92 changes: 16 additions & 76 deletions lib/objects/parse_base.dart
Original file line number Diff line number Diff line change
@@ -1,106 +1,46 @@
import 'dart:convert';

import 'package:meta/meta.dart';
import 'package:parse_server_sdk/network/parse_http_client.dart';

abstract class ParseBaseObject {
ParseHTTPClient _client;

abstract class ParseBase {
Map<String, dynamic> _objectData;

String get objectId => _objectData['objectId'];

DateTime get createdAt => _objectData['createdAt'];
DateTime get updatedAt => _objectData['updatedAt'];

ParseBaseObject([this._client]){
_objectData = Map<String, dynamic>();
}
DateTime get updatedAt => _objectData['updatedAt'];

@protected
setClient(ParseHTTPClient client) => _client = client;
toJson() => JsonEncoder().convert(getObjectData());

@protected
getDebugStatus() => _client.data.debug;
copy() => JsonDecoder().convert(fromJson(getObjectData()));

@protected
getAppName() => _client.data.appName;
setObjectData(Map<String, dynamic> objectData) => _objectData = objectData;

@protected
getObjectData() => _objectData;

@protected
fromJson(Map<String, dynamic> objectData) => objectData;

toJson() => JsonEncoder().convert(getObjectData());

copy() {
var copy = fromJson(_objectData);
return JsonDecoder().convert(copy);
}

_getBasePath(String path) => "${_client.data.serverUrl}$path";

setValue(String key, dynamic value, {bool forceUpdate: true}) {
if (value != null) {
if (_objectData.containsKey(key)) {
if (forceUpdate) _objectData[key] = value;
if (getObjectData().containsKey(key)) {
if (forceUpdate) getObjectData()[key] = value;
} else {
_objectData[key] = value;
getObjectData()[key] = value;
}
}
}

getValue(String key, {dynamic defaultValue, bool fromServer}) {
if (_objectData.containsKey(key)) {
return _objectData[key];
if (getObjectData().containsKey(key)) {
return getObjectData()[key];
} else {
return defaultValue;
}
}

_get(String objectId, String path) async {
var uri = _getBasePath(path);
if (objectId != null) uri += "/$objectId";
return _client.get(uri);
}

_getAll(String path) async {
return _client.get(_getBasePath(path));
}

@protected
parseGetAll(String path) => _getAll(path);
@protected
parseGetObjectById(String objectId, String path) => _get(objectId, path);

_create(String path) async {
var uri = _client.data.serverUrl + "$path";
return _client.post(uri, body: JsonEncoder().convert(_objectData));
}

@protected
parseCreate(String path, Map objectData) => _create(path);

_save(String path) {
if (_objectData == null) {
return _create(path);
} else {
var uri = "${_getBasePath(path)}/$objectId";
return _client.put(uri, body: JsonEncoder().convert(_objectData));
}
}

@protected
parseSave(String path) => _save(path);

_query(String path, String query) async {
var uri = "${_getBasePath(path)}?$query";
return _client.get(uri);
}

@protected
parseQuery(String path, String query) => _query(path, query);

_delete(String path, String objectId){
var uri = "${_getBasePath(path)}/$objectId";
return _client.delete(uri);
}

@protected
parseDelete(String path, String query) => _delete(path, objectId);
}
Loading