pretty good

This commit is contained in:
Fabian Freund
2025-02-07 20:45:47 +01:00
parent 025ecaf2e3
commit a12ef8244f
68 changed files with 2359 additions and 1015 deletions
@@ -57,17 +57,6 @@ Stream<List<SearchHistoryEntry>> searchHistory(Ref ref) {
return repository.watchSearchHistory(limit: 3); //TODO: make count dynamic
}
@Riverpod()
Future<BangData> bangDataEnsureIcon(
Ref ref,
BangData bang,
) {
final repository = ref.watch(bangDataRepositoryProvider.notifier);
return repository.ensureIconAvailable(bang).then(
(value) => value.value,
);
}
@Riverpod()
Stream<DateTime?> lastSyncOfGroup(
Ref ref,
@@ -387,138 +387,6 @@ final searchHistoryProvider =
// ignore: unused_element
typedef SearchHistoryRef
= AutoDisposeStreamProviderRef<List<SearchHistoryEntry>>;
String _$bangDataEnsureIconHash() =>
r'423b8e92fd89ec328c2fcc8f9e55365c30633fd2';
/// See also [bangDataEnsureIcon].
@ProviderFor(bangDataEnsureIcon)
const bangDataEnsureIconProvider = BangDataEnsureIconFamily();
/// See also [bangDataEnsureIcon].
class BangDataEnsureIconFamily extends Family<AsyncValue<BangData>> {
/// See also [bangDataEnsureIcon].
const BangDataEnsureIconFamily();
/// See also [bangDataEnsureIcon].
BangDataEnsureIconProvider call(
BangData bang,
) {
return BangDataEnsureIconProvider(
bang,
);
}
@override
BangDataEnsureIconProvider getProviderOverride(
covariant BangDataEnsureIconProvider provider,
) {
return call(
provider.bang,
);
}
static const Iterable<ProviderOrFamily>? _dependencies = null;
@override
Iterable<ProviderOrFamily>? get dependencies => _dependencies;
static const Iterable<ProviderOrFamily>? _allTransitiveDependencies = null;
@override
Iterable<ProviderOrFamily>? get allTransitiveDependencies =>
_allTransitiveDependencies;
@override
String? get name => r'bangDataEnsureIconProvider';
}
/// See also [bangDataEnsureIcon].
class BangDataEnsureIconProvider extends AutoDisposeFutureProvider<BangData> {
/// See also [bangDataEnsureIcon].
BangDataEnsureIconProvider(
BangData bang,
) : this._internal(
(ref) => bangDataEnsureIcon(
ref as BangDataEnsureIconRef,
bang,
),
from: bangDataEnsureIconProvider,
name: r'bangDataEnsureIconProvider',
debugGetCreateSourceHash:
const bool.fromEnvironment('dart.vm.product')
? null
: _$bangDataEnsureIconHash,
dependencies: BangDataEnsureIconFamily._dependencies,
allTransitiveDependencies:
BangDataEnsureIconFamily._allTransitiveDependencies,
bang: bang,
);
BangDataEnsureIconProvider._internal(
super._createNotifier, {
required super.name,
required super.dependencies,
required super.allTransitiveDependencies,
required super.debugGetCreateSourceHash,
required super.from,
required this.bang,
}) : super.internal();
final BangData bang;
@override
Override overrideWith(
FutureOr<BangData> Function(BangDataEnsureIconRef provider) create,
) {
return ProviderOverride(
origin: this,
override: BangDataEnsureIconProvider._internal(
(ref) => create(ref as BangDataEnsureIconRef),
from: from,
name: null,
dependencies: null,
allTransitiveDependencies: null,
debugGetCreateSourceHash: null,
bang: bang,
),
);
}
@override
AutoDisposeFutureProviderElement<BangData> createElement() {
return _BangDataEnsureIconProviderElement(this);
}
@override
bool operator ==(Object other) {
return other is BangDataEnsureIconProvider && other.bang == bang;
}
@override
int get hashCode {
var hash = _SystemHash.combine(0, runtimeType.hashCode);
hash = _SystemHash.combine(hash, bang.hashCode);
return _SystemHash.finish(hash);
}
}
@Deprecated('Will be removed in 3.0. Use Ref instead')
// ignore: unused_element
mixin BangDataEnsureIconRef on AutoDisposeFutureProviderRef<BangData> {
/// The parameter `bang` of this provider.
BangData get bang;
}
class _BangDataEnsureIconProviderElement
extends AutoDisposeFutureProviderElement<BangData>
with BangDataEnsureIconRef {
_BangDataEnsureIconProviderElement(super.provider);
@override
BangData get bang => (origin as BangDataEnsureIconProvider).bang;
}
String _$lastSyncOfGroupHash() => r'23d07f3132ba9bb35a31f74e3a69698d31d4c569';
/// See also [lastSyncOfGroup].
@@ -111,26 +111,6 @@ class BangDataRepository extends _$BangDataRepository {
.removeSearchEntry(searchQuery);
}
Future<Result<BangData>> ensureIconAvailable(BangData bang) async {
if (bang.icon != null) {
return Result.success(bang);
}
final url = bang.getUrl('');
final websiteProvider = ref.read(genericWebsiteServiceProvider.notifier);
final cachedIcon = await websiteProvider.getCachedIcon(url);
if (cachedIcon != null) {
return Result.success(bang.copyWith.icon(cachedIcon));
}
return websiteProvider.fetchPageInfo(url).then(
(result) => result
.flatMap((pageInfo) => bang.copyWith.icon(pageInfo.favicon)),
);
}
Future<int> resetFrequencies() {
return ref.read(bangDatabaseProvider).bangFrequency.deleteAll();
}
@@ -7,7 +7,7 @@ part of 'data.dart';
// **************************************************************************
String _$bangDataRepositoryHash() =>
r'2c009519cf02df4d3cbb6768dbe55e9eb696e126';
r'de89d7089ce6a92015bee233f08d920981518793';
/// See also [BangDataRepository].
@ProviderFor(BangDataRepository)
@@ -13,12 +13,13 @@ class BangSearch extends _$BangSearch {
Future<void> search(String input) async {
if (input.isNotEmpty) {
await ref
.read(bangDatabaseProvider)
.bangDao
.queryBangs(input)
.get()
.then(_streamController.add);
await ref.read(bangDatabaseProvider).bangDao.queryBangs(input).get().then(
(value) {
if (!_streamController.isClosed) {
_streamController.add(value);
}
},
);
}
}
@@ -6,7 +6,7 @@ part of 'search.dart';
// RiverpodGenerator
// **************************************************************************
String _$bangSearchHash() => r'632ddd09a1198394884cb5c27a2bde7850c0515b';
String _$bangSearchHash() => r'abf9ff5badf2ecfbcbde148fd2c849beac83bec4';
/// See also [BangSearch].
@ProviderFor(BangSearch)