Skip to content

Commit 59131ba

Browse files
authored
Merge pull request #288 from powersync-ja/fix-sync-options-change-detection
Fix detecting changes in sync options
2 parents 3fa499d + 7531df8 commit 59131ba

File tree

2 files changed

+40
-3
lines changed

2 files changed

+40
-3
lines changed

packages/powersync_core/lib/src/sync/options.dart

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -47,9 +47,9 @@ extension type ResolvedSyncOptions(SyncOptions source) {
4747
params: other.params ?? params,
4848
);
4949

50-
final didChange = !_mapEquality.equals(other.params, params) ||
51-
other.crudThrottleTime != crudThrottleTime ||
52-
other.retryDelay != retryDelay;
50+
final didChange = !_mapEquality.equals(newOptions.params, params) ||
51+
newOptions.crudThrottleTime != crudThrottleTime ||
52+
newOptions.retryDelay != retryDelay;
5353
return (ResolvedSyncOptions(newOptions), didChange);
5454
}
5555

Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
import 'package:powersync_core/src/sync/options.dart';
2+
import 'package:test/test.dart';
3+
4+
void main() {
5+
group('sync options', () {
6+
test('can merge with changes', () {
7+
final a = ResolvedSyncOptions(SyncOptions(
8+
params: {'client': 'a'},
9+
crudThrottleTime: const Duration(seconds: 1),
10+
));
11+
12+
final (b, didChange) = a.applyFrom(SyncOptions(
13+
params: {'client': 'a'},
14+
retryDelay: const Duration(seconds: 1),
15+
));
16+
17+
expect(b.params, {'client': 'a'});
18+
expect(b.crudThrottleTime, const Duration(seconds: 1));
19+
expect(b.retryDelay, const Duration(seconds: 1));
20+
expect(didChange, isTrue);
21+
});
22+
23+
test('can merge without changes', () {
24+
final a = ResolvedSyncOptions(SyncOptions(
25+
params: {'client': 'a'},
26+
crudThrottleTime: const Duration(seconds: 1),
27+
));
28+
29+
final (_, didChange) = a.applyFrom(SyncOptions(
30+
// This is the default, so no change from a
31+
retryDelay: const Duration(seconds: 5),
32+
));
33+
34+
expect(didChange, isFalse);
35+
});
36+
});
37+
}

0 commit comments

Comments
 (0)