Skip to content

Small changes and improvements #441

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
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
6 changes: 4 additions & 2 deletions .travis.yml
Original file line number Diff line number Diff line change
Expand Up @@ -10,8 +10,10 @@ install:
- flutter doctor

script:
- flutter packages get
- flutter test --no-pub test/
- (cd packages/dart && dart pub get)
- (cd packages/dart && dart test test/)
- (cd packages/flutter && flutter pub get)
- (cd packages/flutter && flutter test --no-pub test/)

cache:
directories:
Expand Down
3 changes: 2 additions & 1 deletion README.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@

![Parse Logo](https://i2.wp.com/blog.openshift.com/wp-content/uploads/parse-server-logo-1.png?fit=200%2C200&ssl=1&resize=350%2C200)
![Parse Logo](https://parseplatform.org/img/logo.svg)

---

This repository contains packages that allow communication with a Parse Server,
Expand Down
1 change: 1 addition & 0 deletions CHANGELOG.md → packages/dart/CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
## 1.0.28
Spit this package: All flutter parts are now in [this](https://pub.dev/packages/parse_server_sdk_flutter) package!

## 1.0.27
User login / signUp / loginAnonymous delete SessionId stored in device before calling server
Expand Down
9 changes: 3 additions & 6 deletions packages/dart/README.md
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
![Dart Logo](https://dart.dev/assets/shared/dart-logo-for-shares.png?2) ![Parse Logo](https://i2.wp.com/blog.openshift.com/wp-content/uploads/parse-server-logo-1.png?fit=200%2C200&ssl=1&resize=350%2C200)
![Parse Logo](https://parseplatform.org/img/logo.svg) ![Dart Logo](https://dart.dev/assets/shared/dart-logo-for-shares.png?2)


**THIS README IS WORK IN PROGRESS**
Expand All @@ -8,9 +8,6 @@ This is a Dart package that allows communication with a Parse Server, (https://p

This is a work in progress and we are consistently updating it. Please let us know if you think anything needs changing/adding, and more than ever, please do join in on this project. (Even if it is just to improve our documentation)

## Join in!
Want to get involved? Join our Slack channel and help out! (http://flutter-parse-sdk.slack.com)

## Getting Started
To install, either add to your pubspec.yaml
```yml
Expand All @@ -37,7 +34,7 @@ If you want to use secure storage or use the Flutter web/desktop SDK, please cha
await Parse().initialize(
keyParseApplicationId,
keyParseServerUrl,
coreStore: await CoreStoreSembastImp.getInstance());
coreStore: await CoreStoreSembastImp.getInstance("/data"));
```
It's possible to add other parameters to work with your instance of Parse Server:-

Expand All @@ -51,7 +48,7 @@ It's possible to add other parameters to work with your instance of Parse Server
liveQueryUrl: keyLiveQueryUrl, // Required if using LiveQuery
autoSendSessionId: true, // Required for authentication and ACL
securityContext: securityContext, // Again, required for some setups
coreStore: await CoreStoreSharedPrefsImp.getInstance()); // Local data storage method. Will use SharedPreferences instead of Sembast as an internal DB
coreStore: CoreStoreMemoryImp()); // Non persistent mode (default): Sdk will store everything in memmore instead of using Sembast as an internal DB.
```


Expand Down
21 changes: 11 additions & 10 deletions packages/dart/lib/parse_server_sdk.dart
Original file line number Diff line number Diff line change
Expand Up @@ -19,17 +19,9 @@ import 'package:uuid/uuid.dart';
import 'package:web_socket_channel/web_socket_channel.dart';
import 'package:xxtea/xxtea.dart';

part 'package:parse_server_sdk/src/data/core_store.dart';
part 'package:parse_server_sdk/src/data/parse_subclass_handler.dart';
part 'package:parse_server_sdk/src/objects/response/parse_error_response.dart';
part 'package:parse_server_sdk/src/objects/response/parse_exception_response.dart';
part 'package:parse_server_sdk/src/objects/response/parse_response_builder.dart';
part 'package:parse_server_sdk/src/objects/response/parse_response_utils.dart';
part 'package:parse_server_sdk/src/objects/response/parse_success_no_results.dart';
part 'package:parse_server_sdk/src/storage/core_store_sem_impl.dart';
part 'package:parse_server_sdk/src/storage/xxtea_codec.dart';
part 'src/base/parse_constants.dart';
part 'src/data/parse_core_data.dart';
part 'src/data/parse_subclass_handler.dart';
part 'src/enums/parse_enum_api_rq.dart';
part 'src/network/parse_connectivity.dart';
part 'src/network/parse_http_client.dart';
Expand All @@ -52,14 +44,23 @@ part 'src/objects/parse_relation.dart';
part 'src/objects/parse_response.dart';
part 'src/objects/parse_session.dart';
part 'src/objects/parse_user.dart';
part 'src/objects/response/parse_error_response.dart';
part 'src/objects/response/parse_exception_response.dart';
part 'src/objects/response/parse_response_builder.dart';
part 'src/objects/response/parse_response_utils.dart';
part 'src/objects/response/parse_success_no_results.dart';
part 'src/storage/core_store.dart';
part 'src/storage/core_store_memory.dart';
part 'src/storage/core_store_sem_impl.dart';
part 'src/storage/xxtea_codec.dart';
part 'src/utils/parse_date_format.dart';
part 'src/utils/parse_decoder.dart';
part 'src/utils/parse_encoder.dart';
part 'src/utils/parse_file_extensions.dart';
part 'src/utils/parse_live_list.dart';
part 'src/utils/parse_logger.dart';
part 'src/utils/parse_login_helpers.dart';
part 'src/utils/parse_utils.dart';
part 'src/utils/parse_live_list.dart';

class Parse {
ParseCoreData data;
Expand Down
31 changes: 0 additions & 31 deletions packages/dart/lib/src/data/core_store.dart

This file was deleted.

9 changes: 3 additions & 6 deletions packages/dart/lib/src/data/parse_core_data.dart
Original file line number Diff line number Diff line change
Expand Up @@ -35,14 +35,11 @@ class ParseCoreData {
List<int> liveListRetryIntervals,
ParseConnectivityProvider connectivityProvider,
String fileDirectory,
Stream<void> appResumedStream,
Stream<void> appResumedStream,
}) async {
_instance = ParseCoreData._init(appId, serverUrl);

assert(_instance.storage != null || store != null,
'There is no CoreStore set.');

_instance.storage ??= store;
_instance.storage ??= store ?? CoreStoreMemoryImp();

if (debug != null) {
_instance.debug = debug;
Expand Down Expand Up @@ -98,7 +95,7 @@ class ParseCoreData {
_instance.fileDirectory = fileDirectory;
}

if(appResumedStream!= null){
if (appResumedStream != null) {
_instance.appResumedStream = appResumedStream;
}
}
Expand Down
75 changes: 75 additions & 0 deletions packages/dart/lib/src/storage/core_store_memory.dart
Original file line number Diff line number Diff line change
@@ -0,0 +1,75 @@
part of flutter_parse_sdk;

class CoreStoreMemoryImp implements CoreStore {
static Map<String, dynamic> _data = <String, dynamic>{};

@override
Future<void> clear() async {
_data = <String, dynamic>{};
}

@override
Future<bool> containsKey(String key) async {
return _data.containsKey(key);
}

@override
Future<dynamic> get(String key) async {
return _data[key];
}

@override
Future<bool> getBool(String key) async {
return _data[key];
}

@override
Future<double> getDouble(String key) async {
return _data[key];
}

@override
Future<int> getInt(String key) async {
return _data[key];
}

@override
Future<String> getString(String key) async {
return _data[key];
}

@override
Future<List<String>> getStringList(String key) async {
return _data[key];
}

@override
Future<dynamic> remove(String key) async {
return _data.remove(key);
}

@override
Future<void> setBool(String key, bool value) async {
_data[key] = value;
}

@override
Future<void> setDouble(String key, double value) async {
_data[key] = value;
}

@override
Future<void> setInt(String key, int value) async {
_data[key] = value;
}

@override
Future<void> setString(String key, String value) async {
_data[key] = value;
}

@override
Future<void> setStringList(String key, List<String> values) async {
_data[key] = values;
}
}
3 changes: 1 addition & 2 deletions packages/dart/pubspec.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,5 @@ dependencies:

dev_dependencies:
# Testing
flutter_test:
sdk: flutter
test: ^1.15.3
mockito: ^4.1.1
29 changes: 29 additions & 0 deletions packages/dart/test/parse_client_configuration_test.dart
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
import 'package:parse_server_sdk/parse_server_sdk.dart';
import 'package:test/test.dart';

void main() {
test('testBuilder', () async {
await Parse().initialize('appId', 'serverUrl',
clientKey: 'clientKey',
liveQueryUrl: 'liveQueryUrl',
appName: 'appName',
appPackageName: 'somePackageName',
appVersion: 'someAppVersion',
masterKey: 'masterKey',
sessionId: 'sessionId',
fileDirectory: 'someDirectory',
debug: true,);

expect(ParseCoreData().applicationId, 'appId');
expect(ParseCoreData().serverUrl, 'serverUrl');
expect(ParseCoreData().clientKey, 'clientKey');
expect(ParseCoreData().liveQueryURL, 'liveQueryUrl');
expect(ParseCoreData().appName, 'appName');
expect(ParseCoreData().appPackageName, 'somePackageName');
expect(ParseCoreData().appVersion, 'someAppVersion');
expect(ParseCoreData().masterKey, 'masterKey');
expect(ParseCoreData().sessionId, 'sessionId');
expect(ParseCoreData().debug, true);
expect(ParseCoreData().fileDirectory, 'someDirectory');
});
}
43 changes: 43 additions & 0 deletions packages/dart/test/parse_query_test.dart
Original file line number Diff line number Diff line change
@@ -0,0 +1,43 @@
import 'package:mockito/mockito.dart';
import 'package:parse_server_sdk/parse_server_sdk.dart';
import 'package:test/test.dart';

class MockClient extends Mock implements ParseHTTPClient {}

void main() {
group('queryBuilder', () {
test('whereRelatedTo', () async {
final MockClient client = MockClient();

await Parse().initialize(
'appId',
'https://test.parse.com',
debug: true,
// to prevent automatic detection
fileDirectory: 'someDirectory',
// to prevent automatic detection
appName: 'appName',
// to prevent automatic detection
appPackageName: 'somePackageName',
// to prevent automatic detection
appVersion: 'someAppVersion',
);

final QueryBuilder<ParseObject> queryBuilder =
QueryBuilder<ParseObject>(ParseObject('_User', client: client));
queryBuilder.whereRelatedTo('likes', 'Post', '8TOXdXf3tz');

when(client.data).thenReturn(ParseCoreData());
await queryBuilder.query();

final Uri result = verify(client.get(captureAny)).captured.single;

expect(result.path, '/classes/_User');

final Uri expectedQuery = Uri(
query:
'where={"\$relatedTo":{"object":{"__type":"Pointer","className":"Post","objectId":"8TOXdXf3tz"},"key":"likes"}}');
expect(result.query, expectedQuery.query);
});
});
}
2 changes: 2 additions & 0 deletions packages/flutter/CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
## 1.0.28

5 changes: 1 addition & 4 deletions packages/flutter/README.md
Original file line number Diff line number Diff line change
@@ -1,14 +1,11 @@

![Parse Logo](https://upload.wikimedia.org/wikipedia/commons/1/17/Google-flutter-logo.png)![Flutter Logo](https://i2.wp.com/blog.openshift.com/wp-content/uploads/parse-server-logo-1.png?fit=200%2C200&ssl=1&resize=350%2C200)
![Parse Logo](https://parseplatform.org/img/logo.svg) ![Flutter Logo](https://i2.wp.com/blog.openshift.com/wp-content/uploads/parse-server-logo-1.png?fit=200%2C200&ssl=1&resize=350%2C200)

## Parse For Flutter!
Hi, this is a Flutter plugin that allows communication with a Parse Server, (https://parseplatform.org) either hosted on your own server or another, like (http://Back4App.com).

This is a work in progress and we are consistently updating it. Please let us know if you think anything needs changing/adding, and more than ever, please do join in on this project. (Even if it is just to improve our documentation)

## Join in!
Want to get involved? Join our Slack channel and help out! (http://flutter-parse-sdk.slack.com)

## Getting Started
To install, either add to your pubspec.yaml
```yml
Expand Down