good state

This commit is contained in:
Fabian Freund
2025-03-07 20:35:35 +01:00
parent 70d1c1b50e
commit 25c9faa3ff
50 changed files with 993 additions and 439 deletions
@@ -0,0 +1,43 @@
import 'package:lensai/core/logger.dart';
import 'package:lensai/extensions/nullable.dart';
import 'package:riverpod_annotation/riverpod_annotation.dart';
part 'add_dialog_blocking.g.dart';
@Riverpod(keepAlive: true)
class AddFeedDialogBlocking extends _$AddFeedDialogBlocking {
DateTime? _lastIgnore;
final _ignoredUrls = <Uri, DateTime>{};
void ignore(Uri url) {
final date = DateTime.now();
_lastIgnore = date;
_ignoredUrls[url] = date;
}
bool canPush(Uri url) {
if (_lastIgnore.mapNotNull(
(last) =>
DateTime.now().difference(last) <= const Duration(seconds: 30),
) ??
false) {
logger.i('Blocking add feed default timeout for $url');
return false;
}
if (_ignoredUrls[url].mapNotNull(
(last) =>
DateTime.now().difference(last) <= const Duration(minutes: 5),
) ??
false) {
logger.i('Blocking add feed url specific for $url');
return false;
}
return true;
}
@override
void build() {}
}
@@ -0,0 +1,28 @@
// GENERATED CODE - DO NOT MODIFY BY HAND
part of 'add_dialog_blocking.dart';
// **************************************************************************
// RiverpodGenerator
// **************************************************************************
String _$addFeedDialogBlockingHash() =>
r'513071d5e507dd292df6b4a3ee3ef7d2217db5bb';
/// See also [AddFeedDialogBlocking].
@ProviderFor(AddFeedDialogBlocking)
final addFeedDialogBlockingProvider =
NotifierProvider<AddFeedDialogBlocking, void>.internal(
AddFeedDialogBlocking.new,
name: r'addFeedDialogBlockingProvider',
debugGetCreateSourceHash:
const bool.fromEnvironment('dart.vm.product')
? null
: _$addFeedDialogBlockingHash,
dependencies: null,
allTransitiveDependencies: null,
);
typedef _$AddFeedDialogBlocking = Notifier<void>;
// ignore_for_file: type=lint
// ignore_for_file: subtype_of_sealed_class, invalid_use_of_internal_member, invalid_use_of_visible_for_testing_member, deprecated_member_use_from_same_package