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/refresh_config.dart';
|
||||||
import 'package:fl_query/src/collections/retry_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/retryer.dart';
|
||||||
|
import 'package:fl_query/src/core/validation.dart';
|
||||||
import 'package:flutter/material.dart' hide Listener;
|
import 'package:flutter/material.dart' hide Listener;
|
||||||
import 'package:hive_flutter/adapters.dart';
|
import 'package:hive_flutter/adapters.dart';
|
||||||
import 'package:mutex/mutex.dart';
|
import 'package:mutex/mutex.dart';
|
||||||
@@ -18,7 +19,7 @@ typedef InfiniteQueryNextPage<DataType, PageType> = PageType? Function(
|
|||||||
List<DataType> pages,
|
List<DataType> pages,
|
||||||
);
|
);
|
||||||
|
|
||||||
class InfiniteQueryPage<DataType, ErrorType, PageType> {
|
class InfiniteQueryPage<DataType, ErrorType, PageType> with Invalidation {
|
||||||
final PageType page;
|
final PageType page;
|
||||||
final DataType? data;
|
final DataType? data;
|
||||||
final ErrorType? error;
|
final ErrorType? error;
|
||||||
@@ -34,8 +35,6 @@ class InfiniteQueryPage<DataType, ErrorType, PageType> {
|
|||||||
required this.staleDuration,
|
required this.staleDuration,
|
||||||
});
|
});
|
||||||
|
|
||||||
bool get isStale => DateTime.now().difference(updatedAt) > staleDuration;
|
|
||||||
|
|
||||||
InfiniteQueryPage<DataType, ErrorType, PageType> copyWith({
|
InfiniteQueryPage<DataType, ErrorType, PageType> copyWith({
|
||||||
DataType? data,
|
DataType? data,
|
||||||
ErrorType? error,
|
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/refresh_config.dart';
|
||||||
import 'package:fl_query/src/collections/retry_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/retryer.dart';
|
||||||
|
import 'package:fl_query/src/core/validation.dart';
|
||||||
import 'package:flutter/material.dart' hide Listener;
|
import 'package:flutter/material.dart' hide Listener;
|
||||||
import 'package:hive_flutter/adapters.dart';
|
import 'package:hive_flutter/adapters.dart';
|
||||||
import 'package:mutex/mutex.dart';
|
import 'package:mutex/mutex.dart';
|
||||||
@@ -12,7 +13,7 @@ import 'package:state_notifier/state_notifier.dart';
|
|||||||
|
|
||||||
typedef QueryFn<DataType> = FutureOr<DataType?> Function();
|
typedef QueryFn<DataType> = FutureOr<DataType?> Function();
|
||||||
|
|
||||||
class QueryState<DataType, ErrorType> {
|
class QueryState<DataType, ErrorType> with Invalidation {
|
||||||
final DataType? data;
|
final DataType? data;
|
||||||
final ErrorType? error;
|
final ErrorType? error;
|
||||||
final QueryFn<DataType> queryFn;
|
final QueryFn<DataType> queryFn;
|
||||||
@@ -28,10 +29,6 @@ class QueryState<DataType, ErrorType> {
|
|||||||
required this.staleDuration,
|
required this.staleDuration,
|
||||||
});
|
});
|
||||||
|
|
||||||
bool get isStale {
|
|
||||||
return DateTime.now().difference(updatedAt) > staleDuration;
|
|
||||||
}
|
|
||||||
|
|
||||||
QueryState<DataType, ErrorType> copyWith({
|
QueryState<DataType, ErrorType> copyWith({
|
||||||
DataType? data,
|
DataType? data,
|
||||||
ErrorType? error,
|
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