Skip to content
Open
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
14 changes: 14 additions & 0 deletions packages/flutter/lib/parse_server_sdk_flutter.dart
Original file line number Diff line number Diff line change
Expand Up @@ -47,6 +47,16 @@ class Parse extends sdk.Parse
/// ```
/// [appName], [appVersion] and [appPackageName] are automatically set on Android and IOS, if they are not defined. You should provide a value on web.
/// [fileDirectory] is not used on web
///
/// [restRetryIntervals] - Retry intervals in milliseconds for read operations.
/// Applies to: GET, DELETE, and getBytes methods.
/// Default: [0, 250, 500, 1000, 2000] (5 retry attempts with exponential backoff).
/// Set to [] to disable retries for read operations.
///
/// [restRetryIntervalsForWrites] - Retry intervals in milliseconds for write operations.
/// Applies to: POST, PUT, and postBytes methods.
/// Default: [] (no retries to prevent duplicate data creation).
/// Configure only if you have idempotency guarantees in place.
@override
Future<Parse> initialize(
String appId,
Expand All @@ -66,6 +76,8 @@ class Parse extends sdk.Parse
Map<String, sdk.ParseObjectConstructor>? registeredSubClassMap,
sdk.ParseUserConstructor? parseUserConstructor,
sdk.ParseFileConstructor? parseFileConstructor,
List<int>? restRetryIntervals,
List<int>? restRetryIntervalsForWrites,
List<int>? liveListRetryIntervals,
sdk.ParseConnectivityProvider? connectivityProvider,
String? fileDirectory,
Expand Down Expand Up @@ -102,6 +114,8 @@ class Parse extends sdk.Parse
registeredSubClassMap: registeredSubClassMap,
parseUserConstructor: parseUserConstructor,
parseFileConstructor: parseFileConstructor,
restRetryIntervals: restRetryIntervals,
restRetryIntervalsForWrites: restRetryIntervalsForWrites,
liveListRetryIntervals: liveListRetryIntervals,
connectivityProvider: connectivityProvider ?? this,
fileDirectory:
Expand Down
2 changes: 1 addition & 1 deletion packages/flutter/pubspec.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@ dependencies:
flutter:
sdk: flutter

parse_server_sdk: ">=9.4.2 <10.0.0"
parse_server_sdk: ">=9.5.0 <10.0.0"
# Uncomment for local testing
#parse_server_sdk:
# path: ../dart
Expand Down
34 changes: 34 additions & 0 deletions packages/flutter/test/parse_client_configuration_test.dart
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@ import 'package:parse_server_sdk_flutter/parse_server_sdk_flutter.dart';
import 'package:shared_preferences/shared_preferences.dart';

void main() {
TestWidgetsFlutterBinding.ensureInitialized();
SharedPreferences.setMockInitialValues(<String, String>{});

test('testBuilder', () async {
Expand All @@ -19,6 +20,8 @@ void main() {
sessionId: 'sessionId',
fileDirectory: 'someDirectory',
debug: true,
restRetryIntervals: [100, 200, 300],
restRetryIntervalsForWrites: [500, 1000],
);

// assert
Expand All @@ -33,5 +36,36 @@ void main() {
expect(ParseCoreData().sessionId, 'sessionId');
expect(ParseCoreData().debug, true);
expect(ParseCoreData().fileDirectory, 'someDirectory');
expect(ParseCoreData().restRetryIntervals, [100, 200, 300]);
expect(ParseCoreData().restRetryIntervalsForWrites, [500, 1000]);
});

test('testDefaultValues', () async {
// arrange - initialize with minimal parameters to test defaults
await Parse().initialize(
'appId',
'serverUrl',
appName: 'appName',
appPackageName: 'somePackageName',
appVersion: 'someAppVersion',
fileDirectory: 'someDirectory',
);

// assert - verify default values are used
expect(ParseCoreData().applicationId, 'appId');
expect(ParseCoreData().serverUrl, 'serverUrl');
expect(ParseCoreData().appName, 'appName');
expect(ParseCoreData().appPackageName, 'somePackageName');
expect(ParseCoreData().appVersion, 'someAppVersion');
expect(ParseCoreData().debug, false); // default
expect(ParseCoreData().autoSendSessionId, true); // default
expect(ParseCoreData().clientKey, null); // not provided
expect(ParseCoreData().masterKey, null); // not provided
expect(ParseCoreData().sessionId, null); // not provided
expect(ParseCoreData().liveQueryURL, null); // not provided
// Note: default retry values mirror parse_server_sdk defaults and may need
// updating if those change in future versions
expect(ParseCoreData().restRetryIntervals, [0, 250, 500, 1000, 2000]);
expect(ParseCoreData().restRetryIntervalsForWrites, <int>[]);
});
}