refactor: stale logic to separate mixin
This commit is contained in:
@@ -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<DataType, PageType> = PageType? Function(
|
||||
List<DataType> pages,
|
||||
);
|
||||
|
||||
class InfiniteQueryPage<DataType, ErrorType, PageType> {
|
||||
class InfiniteQueryPage<DataType, ErrorType, PageType> with Invalidation {
|
||||
final PageType page;
|
||||
final DataType? data;
|
||||
final ErrorType? error;
|
||||
@@ -34,8 +35,6 @@ class InfiniteQueryPage<DataType, ErrorType, PageType> {
|
||||
required this.staleDuration,
|
||||
});
|
||||
|
||||
bool get isStale => DateTime.now().difference(updatedAt) > staleDuration;
|
||||
|
||||
InfiniteQueryPage<DataType, ErrorType, PageType> copyWith({
|
||||
DataType? data,
|
||||
ErrorType? error,
|
||||
|
||||
@@ -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<DataType> = FutureOr<DataType?> Function();
|
||||
|
||||
class QueryState<DataType, ErrorType> {
|
||||
class QueryState<DataType, ErrorType> with Invalidation {
|
||||
final DataType? data;
|
||||
final ErrorType? error;
|
||||
final QueryFn<DataType> queryFn;
|
||||
@@ -28,10 +29,6 @@ class QueryState<DataType, ErrorType> {
|
||||
required this.staleDuration,
|
||||
});
|
||||
|
||||
bool get isStale {
|
||||
return DateTime.now().difference(updatedAt) > staleDuration;
|
||||
}
|
||||
|
||||
QueryState<DataType, ErrorType> copyWith({
|
||||
DataType? data,
|
||||
ErrorType? error,
|
||||
|
||||
@@ -0,0 +1,6 @@
|
||||
mixin Invalidation {
|
||||
DateTime get updatedAt;
|
||||
Duration get staleDuration;
|
||||
|
||||
bool get isStale => DateTime.now().difference(updatedAt) > staleDuration;
|
||||
}
|
||||
Reference in New Issue
Block a user