refactor: stale logic to separate mixin

This commit is contained in:
Kingkor Roy Tirtho
2023-02-21 13:01:51 +06:00
parent 783a2737b1
commit 83df0ba576
3 changed files with 10 additions and 8 deletions
@@ -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,
+2 -5
View File
@@ -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;
}