Skip to content

Commit

Permalink
Merge branch 'master' into master
Browse files Browse the repository at this point in the history
  • Loading branch information
mtrezza committed Feb 22, 2023
2 parents f56250d + b07ce8c commit 06f9f69
Show file tree
Hide file tree
Showing 40 changed files with 1,334 additions and 406 deletions.
60 changes: 60 additions & 0 deletions packages/dart/CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,3 +1,63 @@
## [3.1.13](https://github.com/parse-community/Parse-SDK-Flutter/compare/dart-3.1.12...dart-3.1.13) (2023-02-15)

### Bug Fixes

* `ParseUser.save` fails when user is logged in ([#819](https://github.com/parse-community/Parse-SDK-Flutter/issues/819))

## [3.1.12](https://github.com/parse-community/Parse-SDK-Flutter/compare/dart-3.1.11...dart-3.1.12) (2023-02-01)

### Bug Fixes

* `ParseObject.fromJson` does not send proper payload to server ([#688](https://github.com/parse-community/Parse-SDK-Flutter/issues/688))

## [3.1.11](https://github.com/parse-community/Parse-SDK-Flutter/compare/dart-3.1.10...dart-3.1.11) (2023-01-21)

### Features

* Add query constraint `wherePolygonContains` to determine whether a point in within a polygon ([#777](https://github.com/parse-community/Parse-SDK-Flutter/issues/777))

## [3.1.10](https://github.com/parse-community/Parse-SDK-Flutter/compare/dart-3.1.9...dart-3.1.10) (2023-01-16)

### Bug Fixes

* Time zone data not set in `ParseInstallation` ([#96](https://github.com/parse-community/Parse-SDK-Flutter/issues/96))

## [3.1.9](https://github.com/parse-community/Parse-SDK-Flutter/compare/dart-3.1.8...dart-3.1.9) (2022-12-25)

### Bug Fixes

* Include option in `getObject` feature is not working ([#813](https://github.com/parse-community/Parse-SDK-Flutter/issues/813))

## [3.1.8](https://github.com/parse-community/Parse-SDK-Flutter/compare/dart-3.1.7...dart-3.1.8) (2022-12-23)

### Features

* Add `ParseObject.toJson()` to create a JSON representation ([#616](https://github.com/parse-community/Parse-SDK-Flutter/issues/616))

## [3.1.7](https://github.com/parse-community/Parse-SDK-Flutter/compare/dart-3.1.6...dart-3.1.7) (2022-12-22)

### Features

* Add `include` option to `getObject` and `fetch` ([#798](https://github.com/parse-community/Parse-SDK-Flutter/issues/798))

## [3.1.6](https://github.com/parse-community/Parse-SDK-Flutter/compare/dart-3.1.5...dart-3.1.6) (2022-12-21)

### Bug Fixes

* Add `and`, `nor` operators in QueryBuilder ([#795](https://github.com/parse-community/Parse-SDK-Flutter/issues/795))

## [3.1.5](https://github.com/parse-community/Parse-SDK-Flutter/compare/dart-3.1.4...dart-3.1.5) (2022-12-16)

### Bug Fixes

* Add upload / download cancel and progress callback for ParseFile ([#807](https://github.com/parse-community/Parse-SDK-Flutter/issues/807))

## [3.1.4](https://github.com/parse-community/Parse-SDK-Flutter/compare/dart-3.1.3...dart-3.1.4) (2022-12-14)

### Bug Fixes

* SDK crashes due to missing error code property in `ParseNetworkResponse.data` ([#799](https://github.com/parse-community/Parse-SDK-Flutter/issues/799))

## [3.1.3](https://github.com/parse-community/Parse-SDK-Flutter/compare/dart-3.1.2...dart-3.1.3) (2022-11-15)

### Bug Fixes
Expand Down
2 changes: 2 additions & 0 deletions packages/dart/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -313,6 +313,8 @@ QueryBuilder<ParseObject> mainQuery = QueryBuilder.or(
var apiResponse = await mainQuery.query();
```

To find objects that match several queries use __QueryBuilder.and__. To find objects that do not match any given query use __QueryBuilder.nor__.

The features available are:-
* Equals
* Contains
Expand Down
3 changes: 2 additions & 1 deletion packages/dart/lib/parse_server_sdk.dart
Original file line number Diff line number Diff line change
Expand Up @@ -5,14 +5,15 @@ import 'dart:convert';
import 'dart:io';
import 'dart:math';
import 'dart:typed_data';

import 'package:dio/dio.dart';
import 'package:meta/meta.dart';
import 'package:mime_type/mime_type.dart';
import 'package:path/path.dart' as path;
import 'package:sembast/sembast.dart';
import 'package:sembast/sembast_io.dart';
import 'package:sembast_web/sembast_web.dart';
import 'package:timezone/data/latest.dart' as tz;
import 'package:timezone/timezone.dart' as tz;
import 'package:uuid/uuid.dart';
import 'package:web_socket_channel/web_socket_channel.dart';
import 'package:xxtea/xxtea.dart';
Expand Down
2 changes: 1 addition & 1 deletion packages/dart/lib/src/base/parse_constants.dart
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
part of flutter_parse_sdk;

// Library
const String keySdkVersion = '3.1.2';
const String keySdkVersion = '3.1.13';
const String keyLibraryName = 'Flutter Parse SDK';

// End Points
Expand Down
2 changes: 2 additions & 0 deletions packages/dart/lib/src/network/parse_client.dart
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,7 @@ abstract class ParseClient {
Stream<List<int>>? data,
ParseNetworkOptions? options,
ProgressCallback? onSendProgress,
dynamic cancelToken,
});

Future<ParseNetworkResponse> delete(
Expand All @@ -38,6 +39,7 @@ abstract class ParseClient {
String path, {
ParseNetworkOptions? options,
ProgressCallback? onReceiveProgress,
dynamic cancelToken,
});

// Future<ParseNetworkByteResponse> putBytes(
Expand Down
31 changes: 26 additions & 5 deletions packages/dart/lib/src/network/parse_dio_client.dart
Original file line number Diff line number Diff line change
Expand Up @@ -40,18 +40,26 @@ class ParseDioClient extends ParseClient {
String path, {
ParseNetworkOptions? options,
ProgressCallback? onReceiveProgress,
dynamic cancelToken,
}) async {
try {
final dio.Response<List<int>> dioResponse = await _client.get<List<int>>(
path,
cancelToken: cancelToken,
onReceiveProgress: onReceiveProgress,
options: _Options(
headers: options?.headers, responseType: dio.ResponseType.bytes),
);
return ParseNetworkByteResponse(
bytes: dioResponse.data, statusCode: dioResponse.statusCode!);
} on dio.DioError catch (error) {
return ParseNetworkByteResponse(
data: error.response?.data, statusCode: error.response!.statusCode!);
if (error.response != null) {
return ParseNetworkByteResponse(
data: error.response?.data,
statusCode: error.response!.statusCode!);
} else {
return _getOtherCaseErrorForParseNetworkResponse(error.error);
}
}
}

Expand Down Expand Up @@ -93,22 +101,35 @@ class ParseDioClient extends ParseClient {
Future<ParseNetworkResponse> postBytes(String path,
{Stream<List<int>>? data,
ParseNetworkOptions? options,
ProgressCallback? onSendProgress}) async {
ProgressCallback? onSendProgress,
dynamic cancelToken}) async {
try {
final dio.Response<String> dioResponse = await _client.post<String>(
path,
data: data,
cancelToken: cancelToken,
options: _Options(headers: options?.headers),
onSendProgress: onSendProgress,
);
return ParseNetworkResponse(
data: dioResponse.data!, statusCode: dioResponse.statusCode!);
} on dio.DioError catch (error) {
return ParseNetworkResponse(
data: error.response?.data, statusCode: error.response!.statusCode!);
if (error.response != null) {
return ParseNetworkResponse(
data: error.response?.data,
statusCode: error.response!.statusCode!);
} else {
return _getOtherCaseErrorForParseNetworkResponse(error.error);
}
}
}

_getOtherCaseErrorForParseNetworkResponse(String error) {
return ParseNetworkResponse(
data: "{\"code\":${ParseError.otherCause},\"error\":\"$error\"}",
statusCode: ParseError.otherCause);
}

@override
Future<ParseNetworkResponse> delete(String path,
{ParseNetworkOptions? options}) async {
Expand Down
2 changes: 2 additions & 0 deletions packages/dart/lib/src/network/parse_http_client.dart
Original file line number Diff line number Diff line change
Expand Up @@ -40,6 +40,7 @@ class ParseHTTPClient extends ParseClient {
String path, {
ParseNetworkOptions? options,
ProgressCallback? onReceiveProgress,
dynamic cancelToken,
}) async {
final http.Response response = await _client.get(
Uri.parse(path),
Expand Down Expand Up @@ -85,6 +86,7 @@ class ParseHTTPClient extends ParseClient {
Stream<List<int>>? data,
ParseNetworkOptions? options,
ProgressCallback? onSendProgress,
dynamic cancelToken,
}) async {
final http.Response response = await _client.post(
Uri.parse(path),
Expand Down
40 changes: 20 additions & 20 deletions packages/dart/lib/src/network/parse_live_query.dart
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,7 @@ class Subscription<T extends ParseObject> {
}
}

enum LiveQueryClientEvent { CONNECTED, DISCONNECTED, USER_DISCONNECTED }
enum LiveQueryClientEvent { connected, disconnected, userDisconnected }

class LiveQueryReconnectingController {
LiveQueryReconnectingController(
Expand All @@ -50,16 +50,16 @@ class LiveQueryReconnectingController {
}
_eventStream.listen((LiveQueryClientEvent event) {
switch (event) {
case LiveQueryClientEvent.CONNECTED:
case LiveQueryClientEvent.connected:
_isConnected = true;
_retryState = 0;
_userDisconnected = false;
break;
case LiveQueryClientEvent.DISCONNECTED:
case LiveQueryClientEvent.disconnected:
_isConnected = false;
_setReconnect();
break;
case LiveQueryClientEvent.USER_DISCONNECTED:
case LiveQueryClientEvent.userDisconnected:
_userDisconnected = true;
Timer? currentTimer = _currentTimer;
if (currentTimer != null) {
Expand All @@ -70,14 +70,14 @@ class LiveQueryReconnectingController {
}

if (debug) {
print('$DEBUG_TAG: $event');
print('$debugTag: $event');
}
});
ParseCoreData().appResumedStream?.listen((void _) => _setReconnect());
}

static List<int> get retryInterval => ParseCoreData().liveListRetryIntervals;
static const String DEBUG_TAG = 'LiveQueryReconnectingController';
static const String debugTag = 'LiveQueryReconnectingController';

final Function _reconnect;
final Stream<LiveQueryClientEvent> _eventStream;
Expand All @@ -99,7 +99,7 @@ class LiveQueryReconnectingController {
_isConnected = false;
}
if (debug) {
print('$DEBUG_TAG: $state');
print('$debugTag: $state');
}
_setReconnect();
}
Expand All @@ -116,7 +116,7 @@ class LiveQueryReconnectingController {
_reconnect();
});
if (debug) {
print('$DEBUG_TAG: Retrytimer set to ${retryInterval[_retryState]}ms');
print('$debugTag: Retry timer set to ${retryInterval[_retryState]}ms');
}
if (_retryState < retryInterval.length - 1) {
_retryState++;
Expand Down Expand Up @@ -188,13 +188,13 @@ class LiveQueryClient {
if (webSocket != null) {
return webSocket.readyState;
}
return parse_web_socket.WebSocket.CONNECTING;
return parse_web_socket.WebSocket.connecting;
}

Future<dynamic> disconnect({bool userInitialized = false}) async {
parse_web_socket.WebSocket? webSocket = _webSocket;
if (webSocket != null &&
webSocket.readyState == parse_web_socket.WebSocket.OPEN) {
webSocket.readyState == parse_web_socket.WebSocket.open) {
if (_debug) {
print('$_printConstLiveQuery: Socket closed');
}
Expand All @@ -215,7 +215,7 @@ class LiveQueryClient {
_connecting = false;
if (userInitialized) {
_clientEventStreamController.sink
.add(LiveQueryClientEvent.USER_DISCONNECTED);
.add(LiveQueryClientEvent.userDisconnected);
}
}

Expand All @@ -224,7 +224,7 @@ class LiveQueryClient {
{T? copyObject}) async {
if (_webSocket == null) {
await _clientEventStream.any((LiveQueryClientEvent event) =>
event == LiveQueryClientEvent.CONNECTED);
event == LiveQueryClientEvent.connected);
}
final int requestId = _requestIdGenerator();
final Subscription<T> subscription =
Expand Down Expand Up @@ -272,7 +272,7 @@ class LiveQueryClient {
await parse_web_socket.WebSocket.connect(_liveQueryURL);
_webSocket = webSocket;
_connecting = false;
if (webSocket.readyState == parse_web_socket.WebSocket.OPEN) {
if (webSocket.readyState == parse_web_socket.WebSocket.open) {
if (_debug) {
print('$_printConstLiveQuery: Socket opened');
}
Expand All @@ -288,13 +288,13 @@ class LiveQueryClient {
_handleMessage(message);
}, onDone: () {
_clientEventStreamController.sink
.add(LiveQueryClientEvent.DISCONNECTED);
.add(LiveQueryClientEvent.disconnected);
if (_debug) {
print('$_printConstLiveQuery: Done');
}
}, onError: (Object error) {
_clientEventStreamController.sink
.add(LiveQueryClientEvent.DISCONNECTED);
.add(LiveQueryClientEvent.disconnected);
if (_debug) {
print(
'$_printConstLiveQuery: Error: ${error.runtimeType.toString()}');
Expand All @@ -307,7 +307,7 @@ class LiveQueryClient {
});
} on Exception catch (e) {
_connecting = false;
_clientEventStreamController.sink.add(LiveQueryClientEvent.DISCONNECTED);
_clientEventStreamController.sink.add(LiveQueryClientEvent.disconnected);
if (_debug) {
print('$_printConstLiveQuery: Error: ${e.toString()}');
}
Expand Down Expand Up @@ -390,12 +390,12 @@ class LiveQueryClient {

Subscription? subscription;
if (actionData.containsKey('op') && actionData['op'] == 'connected') {
print('ReSubScription:$_requestSubscription');
print('Re subscription:$_requestSubscription');

_requestSubscription.values.toList().forEach((Subscription subcription) {
_subscribeLiveQuery(subcription);
_requestSubscription.values.toList().forEach((Subscription subscription) {
_subscribeLiveQuery(subscription);
});
_clientEventStreamController.sink.add(LiveQueryClientEvent.CONNECTED);
_clientEventStreamController.sink.add(LiveQueryClientEvent.connected);
return;
}
if (actionData.containsKey('requestId')) {
Expand Down
Loading

0 comments on commit 06f9f69

Please sign in to comment.