diff --git a/packages/fl_query/lib/src/core/utils.dart b/packages/fl_query/lib/src/core/utils.dart index cfdda17..071a550 100644 --- a/packages/fl_query/lib/src/core/utils.dart +++ b/packages/fl_query/lib/src/core/utils.dart @@ -2,6 +2,7 @@ import 'package:fl_query/src/core/models.dart'; import 'package:fl_query/src/core/query.dart'; import 'package:fl_query/src/core/query_key.dart'; import 'package:collection/collection.dart'; +import 'dart:math'; /// Default query keys hash function. /// Dummy function just to fill the gaps for original react-query like @@ -159,7 +160,16 @@ List replaceEqualDeepList(List a, List b, void Function() onEqual) { return copy; } -Duration timeUntilStale(DateTime updatedAt, [Duration? staleTime]) => - updatedAt.add(staleTime ?? Duration.zero).difference(DateTime.now()); +Duration timeUntilStale(DateTime updatedAt, [Duration? staleTime]) { + return Duration( + milliseconds: max( + updatedAt + .add(staleTime ?? Duration.zero) + .difference(DateTime.now()) + .inMilliseconds, + 0, + ), + ); +} typedef DataUpdateFunction = TOutput Function(TInput input); diff --git a/packages/fl_query/test/src/core/query_observer_test.dart b/packages/fl_query/test/src/core/query_observer_test.dart index 3cfc52d..6f6518a 100644 --- a/packages/fl_query/test/src/core/query_observer_test.dart +++ b/packages/fl_query/test/src/core/query_observer_test.dart @@ -397,9 +397,6 @@ void main() { }); test('should accept unresolved query config in update function', () async { - // test is failing in [QueryObserver.updateResult] called by - // staleTimeout callback. For some reason _currentResult and - // prevResult is shallow equal final key = queryKey(); ; final observer = QueryObserver, dynamic,