diff --git a/packages/fl_query/lib/src/core/infinite_query.dart b/packages/fl_query/lib/src/core/infinite_query.dart index 54c5ab1..30b2085 100644 --- a/packages/fl_query/lib/src/core/infinite_query.dart +++ b/packages/fl_query/lib/src/core/infinite_query.dart @@ -6,6 +6,7 @@ import 'package:fl_query/src/collections/json_config.dart'; import 'package:fl_query/src/collections/refresh_config.dart'; import 'package:fl_query/src/collections/retry_config.dart'; import 'package:fl_query/src/core/retryer.dart'; +import 'package:fl_query/src/core/validation.dart'; import 'package:flutter/material.dart' hide Listener; import 'package:hive_flutter/adapters.dart'; import 'package:mutex/mutex.dart'; @@ -18,7 +19,7 @@ typedef InfiniteQueryNextPage = PageType? Function( List pages, ); -class InfiniteQueryPage { +class InfiniteQueryPage with Invalidation { final PageType page; final DataType? data; final ErrorType? error; @@ -34,8 +35,6 @@ class InfiniteQueryPage { required this.staleDuration, }); - bool get isStale => DateTime.now().difference(updatedAt) > staleDuration; - InfiniteQueryPage copyWith({ DataType? data, ErrorType? error, diff --git a/packages/fl_query/lib/src/core/query.dart b/packages/fl_query/lib/src/core/query.dart index 6f2fda4..56b0dbe 100644 --- a/packages/fl_query/lib/src/core/query.dart +++ b/packages/fl_query/lib/src/core/query.dart @@ -5,6 +5,7 @@ import 'package:fl_query/src/collections/json_config.dart'; import 'package:fl_query/src/collections/refresh_config.dart'; import 'package:fl_query/src/collections/retry_config.dart'; import 'package:fl_query/src/core/retryer.dart'; +import 'package:fl_query/src/core/validation.dart'; import 'package:flutter/material.dart' hide Listener; import 'package:hive_flutter/adapters.dart'; import 'package:mutex/mutex.dart'; @@ -12,7 +13,7 @@ import 'package:state_notifier/state_notifier.dart'; typedef QueryFn = FutureOr Function(); -class QueryState { +class QueryState with Invalidation { final DataType? data; final ErrorType? error; final QueryFn queryFn; @@ -28,10 +29,6 @@ class QueryState { required this.staleDuration, }); - bool get isStale { - return DateTime.now().difference(updatedAt) > staleDuration; - } - QueryState copyWith({ DataType? data, ErrorType? error, diff --git a/packages/fl_query/lib/src/core/validation.dart b/packages/fl_query/lib/src/core/validation.dart new file mode 100644 index 0000000..253aa17 --- /dev/null +++ b/packages/fl_query/lib/src/core/validation.dart @@ -0,0 +1,6 @@ +mixin Invalidation { + DateTime get updatedAt; + Duration get staleDuration; + + bool get isStale => DateTime.now().difference(updatedAt) > staleDuration; +}