Skip to content

Commit d41596a

Browse files
authored
Small changes and improvements (#441)
* docs changes * remove flutter_test * CoreStore was implemented twice * implemented CoreStoreMemoryImp (default corestore for dart) * fix tests * Update .travis.yml
1 parent 745b054 commit d41596a

13 files changed

+175
-62
lines changed

.travis.yml

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,8 +10,10 @@ install:
1010
- flutter doctor
1111

1212
script:
13-
- flutter packages get
14-
- flutter test --no-pub test/
13+
- (cd packages/dart && dart pub get)
14+
- (cd packages/dart && dart test test/)
15+
- (cd packages/flutter && flutter pub get)
16+
- (cd packages/flutter && flutter test --no-pub test/)
1517

1618
cache:
1719
directories:

README.md

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11

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)
2+
![Parse Logo](https://parseplatform.org/img/logo.svg)
3+
34
---
45

56
This repository contains packages that allow communication with a Parse Server,

CHANGELOG.md renamed to packages/dart/CHANGELOG.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
## 1.0.28
2+
Spit this package: All flutter parts are now in [this](https://pub.dev/packages/parse_server_sdk_flutter) package!
23

34
## 1.0.27
45
User login / signUp / loginAnonymous delete SessionId stored in device before calling server

packages/dart/README.md

Lines changed: 3 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
![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)
1+
![Parse Logo](https://parseplatform.org/img/logo.svg) ![Dart Logo](https://dart.dev/assets/shared/dart-logo-for-shares.png?2)
22

33

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

99
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)
1010

11-
## Join in!
12-
Want to get involved? Join our Slack channel and help out! (http://flutter-parse-sdk.slack.com)
13-
1411
## Getting Started
1512
To install, either add to your pubspec.yaml
1613
```yml
@@ -37,7 +34,7 @@ If you want to use secure storage or use the Flutter web/desktop SDK, please cha
3734
await Parse().initialize(
3835
keyParseApplicationId,
3936
keyParseServerUrl,
40-
coreStore: await CoreStoreSembastImp.getInstance());
37+
coreStore: await CoreStoreSembastImp.getInstance("/data"));
4138
```
4239
It's possible to add other parameters to work with your instance of Parse Server:-
4340

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

5754

packages/dart/lib/parse_server_sdk.dart

Lines changed: 11 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -19,17 +19,9 @@ import 'package:uuid/uuid.dart';
1919
import 'package:web_socket_channel/web_socket_channel.dart';
2020
import 'package:xxtea/xxtea.dart';
2121

22-
part 'package:parse_server_sdk/src/data/core_store.dart';
23-
part 'package:parse_server_sdk/src/data/parse_subclass_handler.dart';
24-
part 'package:parse_server_sdk/src/objects/response/parse_error_response.dart';
25-
part 'package:parse_server_sdk/src/objects/response/parse_exception_response.dart';
26-
part 'package:parse_server_sdk/src/objects/response/parse_response_builder.dart';
27-
part 'package:parse_server_sdk/src/objects/response/parse_response_utils.dart';
28-
part 'package:parse_server_sdk/src/objects/response/parse_success_no_results.dart';
29-
part 'package:parse_server_sdk/src/storage/core_store_sem_impl.dart';
30-
part 'package:parse_server_sdk/src/storage/xxtea_codec.dart';
3122
part 'src/base/parse_constants.dart';
3223
part 'src/data/parse_core_data.dart';
24+
part 'src/data/parse_subclass_handler.dart';
3325
part 'src/enums/parse_enum_api_rq.dart';
3426
part 'src/network/parse_connectivity.dart';
3527
part 'src/network/parse_http_client.dart';
@@ -52,14 +44,23 @@ part 'src/objects/parse_relation.dart';
5244
part 'src/objects/parse_response.dart';
5345
part 'src/objects/parse_session.dart';
5446
part 'src/objects/parse_user.dart';
47+
part 'src/objects/response/parse_error_response.dart';
48+
part 'src/objects/response/parse_exception_response.dart';
49+
part 'src/objects/response/parse_response_builder.dart';
50+
part 'src/objects/response/parse_response_utils.dart';
51+
part 'src/objects/response/parse_success_no_results.dart';
52+
part 'src/storage/core_store.dart';
53+
part 'src/storage/core_store_memory.dart';
54+
part 'src/storage/core_store_sem_impl.dart';
55+
part 'src/storage/xxtea_codec.dart';
5556
part 'src/utils/parse_date_format.dart';
5657
part 'src/utils/parse_decoder.dart';
5758
part 'src/utils/parse_encoder.dart';
5859
part 'src/utils/parse_file_extensions.dart';
60+
part 'src/utils/parse_live_list.dart';
5961
part 'src/utils/parse_logger.dart';
6062
part 'src/utils/parse_login_helpers.dart';
6163
part 'src/utils/parse_utils.dart';
62-
part 'src/utils/parse_live_list.dart';
6364

6465
class Parse {
6566
ParseCoreData data;

packages/dart/lib/src/data/core_store.dart

Lines changed: 0 additions & 31 deletions
This file was deleted.

packages/dart/lib/src/data/parse_core_data.dart

Lines changed: 3 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -35,14 +35,11 @@ class ParseCoreData {
3535
List<int> liveListRetryIntervals,
3636
ParseConnectivityProvider connectivityProvider,
3737
String fileDirectory,
38-
Stream<void> appResumedStream,
38+
Stream<void> appResumedStream,
3939
}) async {
4040
_instance = ParseCoreData._init(appId, serverUrl);
4141

42-
assert(_instance.storage != null || store != null,
43-
'There is no CoreStore set.');
44-
45-
_instance.storage ??= store;
42+
_instance.storage ??= store ?? CoreStoreMemoryImp();
4643

4744
if (debug != null) {
4845
_instance.debug = debug;
@@ -98,7 +95,7 @@ class ParseCoreData {
9895
_instance.fileDirectory = fileDirectory;
9996
}
10097

101-
if(appResumedStream!= null){
98+
if (appResumedStream != null) {
10299
_instance.appResumedStream = appResumedStream;
103100
}
104101
}
Lines changed: 75 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,75 @@
1+
part of flutter_parse_sdk;
2+
3+
class CoreStoreMemoryImp implements CoreStore {
4+
static Map<String, dynamic> _data = <String, dynamic>{};
5+
6+
@override
7+
Future<void> clear() async {
8+
_data = <String, dynamic>{};
9+
}
10+
11+
@override
12+
Future<bool> containsKey(String key) async {
13+
return _data.containsKey(key);
14+
}
15+
16+
@override
17+
Future<dynamic> get(String key) async {
18+
return _data[key];
19+
}
20+
21+
@override
22+
Future<bool> getBool(String key) async {
23+
return _data[key];
24+
}
25+
26+
@override
27+
Future<double> getDouble(String key) async {
28+
return _data[key];
29+
}
30+
31+
@override
32+
Future<int> getInt(String key) async {
33+
return _data[key];
34+
}
35+
36+
@override
37+
Future<String> getString(String key) async {
38+
return _data[key];
39+
}
40+
41+
@override
42+
Future<List<String>> getStringList(String key) async {
43+
return _data[key];
44+
}
45+
46+
@override
47+
Future<dynamic> remove(String key) async {
48+
return _data.remove(key);
49+
}
50+
51+
@override
52+
Future<void> setBool(String key, bool value) async {
53+
_data[key] = value;
54+
}
55+
56+
@override
57+
Future<void> setDouble(String key, double value) async {
58+
_data[key] = value;
59+
}
60+
61+
@override
62+
Future<void> setInt(String key, int value) async {
63+
_data[key] = value;
64+
}
65+
66+
@override
67+
Future<void> setString(String key, String value) async {
68+
_data[key] = value;
69+
}
70+
71+
@override
72+
Future<void> setStringList(String key, List<String> values) async {
73+
_data[key] = values;
74+
}
75+
}

packages/dart/pubspec.yaml

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,5 @@ dependencies:
2424

2525
dev_dependencies:
2626
# Testing
27-
flutter_test:
28-
sdk: flutter
27+
test: ^1.15.3
2928
mockito: ^4.1.1
Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
import 'package:parse_server_sdk/parse_server_sdk.dart';
2+
import 'package:test/test.dart';
3+
4+
void main() {
5+
test('testBuilder', () async {
6+
await Parse().initialize('appId', 'serverUrl',
7+
clientKey: 'clientKey',
8+
liveQueryUrl: 'liveQueryUrl',
9+
appName: 'appName',
10+
appPackageName: 'somePackageName',
11+
appVersion: 'someAppVersion',
12+
masterKey: 'masterKey',
13+
sessionId: 'sessionId',
14+
fileDirectory: 'someDirectory',
15+
debug: true,);
16+
17+
expect(ParseCoreData().applicationId, 'appId');
18+
expect(ParseCoreData().serverUrl, 'serverUrl');
19+
expect(ParseCoreData().clientKey, 'clientKey');
20+
expect(ParseCoreData().liveQueryURL, 'liveQueryUrl');
21+
expect(ParseCoreData().appName, 'appName');
22+
expect(ParseCoreData().appPackageName, 'somePackageName');
23+
expect(ParseCoreData().appVersion, 'someAppVersion');
24+
expect(ParseCoreData().masterKey, 'masterKey');
25+
expect(ParseCoreData().sessionId, 'sessionId');
26+
expect(ParseCoreData().debug, true);
27+
expect(ParseCoreData().fileDirectory, 'someDirectory');
28+
});
29+
}
Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,43 @@
1+
import 'package:mockito/mockito.dart';
2+
import 'package:parse_server_sdk/parse_server_sdk.dart';
3+
import 'package:test/test.dart';
4+
5+
class MockClient extends Mock implements ParseHTTPClient {}
6+
7+
void main() {
8+
group('queryBuilder', () {
9+
test('whereRelatedTo', () async {
10+
final MockClient client = MockClient();
11+
12+
await Parse().initialize(
13+
'appId',
14+
'https://test.parse.com',
15+
debug: true,
16+
// to prevent automatic detection
17+
fileDirectory: 'someDirectory',
18+
// to prevent automatic detection
19+
appName: 'appName',
20+
// to prevent automatic detection
21+
appPackageName: 'somePackageName',
22+
// to prevent automatic detection
23+
appVersion: 'someAppVersion',
24+
);
25+
26+
final QueryBuilder<ParseObject> queryBuilder =
27+
QueryBuilder<ParseObject>(ParseObject('_User', client: client));
28+
queryBuilder.whereRelatedTo('likes', 'Post', '8TOXdXf3tz');
29+
30+
when(client.data).thenReturn(ParseCoreData());
31+
await queryBuilder.query();
32+
33+
final Uri result = verify(client.get(captureAny)).captured.single;
34+
35+
expect(result.path, '/classes/_User');
36+
37+
final Uri expectedQuery = Uri(
38+
query:
39+
'where={"\$relatedTo":{"object":{"__type":"Pointer","className":"Post","objectId":"8TOXdXf3tz"},"key":"likes"}}');
40+
expect(result.query, expectedQuery.query);
41+
});
42+
});
43+
}

packages/flutter/CHANGELOG.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
## 1.0.28
2+

packages/flutter/README.md

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,11 @@
11

2-
![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)
2+
![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)
33

44
## Parse For Flutter!
55
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).
66

77
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)
88

9-
## Join in!
10-
Want to get involved? Join our Slack channel and help out! (http://flutter-parse-sdk.slack.com)
11-
129
## Getting Started
1310
To install, either add to your pubspec.yaml
1411
```yml

0 commit comments

Comments
 (0)