Skip to content

Develop #38

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

Merged
merged 7 commits into from
Jan 19, 2019
Merged
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
10 changes: 10 additions & 0 deletions .idea/libraries/Dart_Packages.xml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

1 change: 1 addition & 0 deletions .idea/libraries/Flutter_Plugins.xml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

935 changes: 419 additions & 516 deletions .idea/workspace.xml

Large diffs are not rendered by default.

6 changes: 6 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,3 +1,9 @@
## 1.0.6

BREAK FIX - Fixed ParseUser return type so now returns ParseResponse
BREAK FIX - Changed query names to make more human readable
Fixed pinning and unpinning

## 1.0.5

Corrected save. Now formatted items correctly for saving on server
8 changes: 5 additions & 3 deletions README.md
Original file line number Diff line number Diff line change
@@ -13,7 +13,7 @@ Want to get involved? Join our Slack channel and help out! (http://flutter-parse
To install, either add to your pubspec.yaml
```
dependencies:
parse_server_sdk: ^1.0.5
parse_server_sdk: ^1.0.6
```
or clone this repository and add to your project. As this is an early development with multiple contributors, it is probably best to download/clone and keep updating as an when a new feature is added.

@@ -174,11 +174,13 @@ var user = ParseUser().create("TestFlutter", "TestPassword123", "TestFlutterSDK
Then have the user sign up:

```
user = await user.signUp();
var response = await user.signUp();
if (response.success) user = response.result;
```
You can also logout and login with the user:
```
user = await user.login();
var response = await user.login();
if (response.success) user = response.result;
```
Also, once logged in you can manage sessions tokens. This feature can be called after Parse().init() on startup to check for a logged in user.
```
41 changes: 30 additions & 11 deletions example/lib/main.dart
Original file line number Diff line number Diff line change
@@ -122,8 +122,7 @@ class _MyAppState extends State<MyApp> {

void query() async {
var queryBuilder = QueryBuilder<DietPlan>(DietPlan())
..greaterThan(DietPlan.keyFat, 20)
..descending(DietPlan.keyFat);
..whereContains(DietPlan.keyName, "eto");

var apiResponse = await queryBuilder.query();

@@ -138,22 +137,42 @@ class _MyAppState extends State<MyApp> {

// All return type ParseUser except all
var user = ParseUser("TestFlutter", "TestPassword123", "[email protected]");
user = await user.signUp();
user = await user.login();
var response = await user.signUp();
if (response.success) user = response.result;

response = await user.login();
if (response.success) user = response.result;

user = null;
// Best practice for starting the app. This will check for a valid user
user = await ParseUser.currentUser();
await user.logout();
user = await ParseUser.currentUser();

response = await user.getCurrentUserFromServer();
if (response.success) user = response.result;

response = await user.requestPasswordReset();
if (response.success) user = response.result;

// Best practice for starting the app. This will check for a
user = ParseUser.currentUser();
user = await user.getCurrentUserFromServer();
user = await user.requestPasswordReset();
user = await user.verificationEmailRequest();
response = await user.verificationEmailRequest();
if (response.success) user = response.result;

response = await user.save();
if (response.success) user = response.result;

user = await user.save();
var destroyResponse = await user.destroy();
if (destroyResponse.success) print('object has been destroyed!');

// Returns type ParseResponse as its a query, not a single result
await ParseUser.all();
response = await ParseUser.all();
if (response.success) user = response.result;

var queryBuilder = QueryBuilder<ParseUser>(ParseUser.forQuery())
..whereStartsWith(ParseUser.keyUsername, 'phillw');;

var apiResponse = await queryBuilder.query();
if (apiResponse.success) user = response.result;
}

function() {
6 changes: 6 additions & 0 deletions lib/parse.dart
Original file line number Diff line number Diff line change
@@ -4,6 +4,8 @@ import 'dart:async';
import 'dart:convert';
import 'dart:io';

import 'dart:typed_data';
import 'package:path/path.dart' as path;
import 'package:http/http.dart';
import 'package:meta/meta.dart';
import 'package:shared_preferences/shared_preferences.dart';
@@ -37,6 +39,8 @@ part 'src/objects/parse_response.dart';

part 'src/objects/parse_user.dart';

part 'src/objects/parse_file.dart';

part 'src/utils/parse_decoder.dart';

part 'src/utils/parse_encoder.dart';
@@ -45,6 +49,8 @@ part 'src/utils/parse_logger.dart';

part 'src/utils/parse_utils.dart';

part 'src/utils/parse_file_extensions.dart';

class Parse {
ParseCoreData data;
final ParseHTTPClient client = new ParseHTTPClient();
2 changes: 2 additions & 0 deletions lib/src/base/parse_constants.dart
Original file line number Diff line number Diff line change
@@ -25,6 +25,8 @@ const String keyVarAcl = 'ACL';
// Classes
const String keyClassMain = 'ParseMain';
const String keyClassUser = '_User';
const String keyGeoPoint = 'GeoPoint';
const String keyFile = 'File';

// Headers
const String keyHeaderSessionToken = 'X-Parse-Session-Token';
27 changes: 15 additions & 12 deletions lib/src/data/parse_core_data.dart
Original file line number Diff line number Diff line change
@@ -3,20 +3,22 @@ part of flutter_parse_sdk;
/// Singleton class that defines all user keys and data
class ParseCoreData {
static ParseCoreData _instance;

static ParseCoreData get instance => _instance;

/// Creates an instance of Parse Server
///
/// This class should not be user unless switching servers during the app,
/// which is odd. Should only be user by Parse.init
static void init(appId, serverUrl, {debug, appName, liveQueryUrl, masterKey, sessionId}){
_instance = ParseCoreData._init(appId, serverUrl);

if (debug != null) _instance.debug = debug;
if (appName != null) _instance.appName = appName;
if (liveQueryUrl != null) _instance.liveQueryURL = liveQueryUrl;
if (masterKey != null) _instance.masterKey = masterKey;
if (sessionId != null) _instance.sessionId = sessionId;
static void init(appId, serverUrl,
{debug, appName, liveQueryUrl, masterKey, sessionId}) {
_instance = ParseCoreData._init(appId, serverUrl);

if (debug != null) _instance.debug = debug;
if (appName != null) _instance.appName = appName;
if (liveQueryUrl != null) _instance.liveQueryURL = liveQueryUrl;
if (masterKey != null) _instance.masterKey = masterKey;
if (sessionId != null) _instance.sessionId = sessionId;
}

String appName;
@@ -28,8 +30,7 @@ class ParseCoreData {
bool debug;
SharedPreferences storage;

ParseCoreData._init(
this.applicationId,
ParseCoreData._init(this.applicationId,
this.serverUrl);

factory ParseCoreData() => _instance;
@@ -38,15 +39,17 @@ class ParseCoreData {
///
/// This is generated when a users logs in, or calls currentUser to update
/// their keys
void setSessionId(String sessionId){
void setSessionId(String sessionId) {
this.sessionId = sessionId;
}

void initStorage() async {
storage = await SharedPreferences.getInstance();
}

SharedPreferences getStore() => storage;
Future<SharedPreferences> getStore() async {
return storage != null ? storage : await SharedPreferences.getInstance();
}

@override
String toString() => "$applicationId $masterKey";
10 changes: 9 additions & 1 deletion lib/src/enums/parse_enum_api_rq.dart
Original file line number Diff line number Diff line change
@@ -16,5 +16,13 @@ enum ParseApiRQ {
requestPasswordReset,
destroy,
all,
execute
execute,
upload,
add,
addAll,
addUnique,
remove,
removeAll,
increment,
decrement
}
Loading