major update

This commit is contained in:
Fabian Freund
2025-03-03 15:15:05 +01:00
parent 200c82a442
commit 20bdc4df3e
103 changed files with 2664 additions and 783 deletions
+1 -1
View File
@@ -71,7 +71,7 @@ class Bang with FastEquatable implements Insertable<Bang> {
: input;
}
Uri getUrl(String? query) {
Uri getTemplateUrl(String? query) {
final url =
(query != null)
? urlTemplate.replaceAll(
@@ -22,7 +22,7 @@ class BangSearch extends _$BangSearch {
maxEntryCount: 3,
); //TODO: make count dynamic
return bang.getUrl(searchQuery);
return bang.getTemplateUrl(searchQuery);
}
Future<void> search(String input) async {
@@ -50,7 +50,7 @@ class BangSearch extends _$BangSearch {
}
@Riverpod()
class SeamlessBangProvider extends _$SeamlessBangProvider {
class SeamlessBang extends _$SeamlessBang {
bool _hasSearch = false;
void search(String input) {
@@ -60,6 +60,7 @@ class SeamlessBangProvider extends _$SeamlessBangProvider {
ref.invalidateSelf();
}
//Don't block
unawaited(ref.read(bangSearchProvider.notifier).search(input));
} else if (_hasSearch) {
_hasSearch = false;
@@ -6,7 +6,7 @@ part of 'search.dart';
// RiverpodGenerator
// **************************************************************************
String _$bangSearchHash() => r'ff7035d269041c6415f2a2afb0a71ef67d3b9841';
String _$bangSearchHash() => r'6b7452d48698c01870c5c75f0c10cadaafc481c8';
/// See also [BangSearch].
@ProviderFor(BangSearch)
@@ -23,26 +23,22 @@ final bangSearchProvider =
);
typedef _$BangSearch = AutoDisposeStreamNotifier<List<BangData>>;
String _$seamlessBangProviderHash() =>
r'c4c0b452c94ba447be5b02dfef5bc16148cc3dc7';
String _$seamlessBangHash() => r'8bd7a2cbe4c302ae08f85167290666a7437f8b9b';
/// See also [SeamlessBangProvider].
@ProviderFor(SeamlessBangProvider)
final seamlessBangProviderProvider = AutoDisposeNotifierProvider<
SeamlessBangProvider,
/// See also [SeamlessBang].
@ProviderFor(SeamlessBang)
final seamlessBangProvider = AutoDisposeNotifierProvider<
SeamlessBang,
AsyncValue<List<BangData>>
>.internal(
SeamlessBangProvider.new,
name: r'seamlessBangProviderProvider',
SeamlessBang.new,
name: r'seamlessBangProvider',
debugGetCreateSourceHash:
const bool.fromEnvironment('dart.vm.product')
? null
: _$seamlessBangProviderHash,
const bool.fromEnvironment('dart.vm.product') ? null : _$seamlessBangHash,
dependencies: null,
allTransitiveDependencies: null,
);
typedef _$SeamlessBangProvider =
AutoDisposeNotifier<AsyncValue<List<BangData>>>;
typedef _$SeamlessBang = AutoDisposeNotifier<AsyncValue<List<BangData>>>;
// 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
@@ -1,7 +1,6 @@
import 'package:fading_scroll/fading_scroll.dart';
import 'package:flutter/material.dart';
import 'package:flutter_hooks/flutter_hooks.dart';
import 'package:go_router/go_router.dart';
import 'package:hooks_riverpod/hooks_riverpod.dart';
import 'package:lensai/core/routing/routes.dart';
import 'package:lensai/features/bangs/domain/providers/bangs.dart';
@@ -19,13 +18,14 @@ class BangCategoriesScreen extends HookConsumerWidget {
actions: [
IconButton(
onPressed: () async {
await context.push(const BangSearchRoute().location);
await const BangSearchRoute().push(context);
},
icon: const Icon(Icons.search),
),
],
),
body: categoriesAsync.when(
skipLoadingOnReload: true,
data: (categories) {
return FadingScroll(
fadingSize: 25,
@@ -66,13 +66,10 @@ class BangCategoriesScreen extends HookConsumerWidget {
(subCategory) => ListTile(
title: Text(subCategory),
onTap: () async {
await context.push(
BangSubCategoryRoute(
category: category.key,
subCategory:
subCategory,
).location,
);
await BangSubCategoryRoute(
category: category.key,
subCategory: subCategory,
).push(context);
},
),
)
@@ -1,5 +1,4 @@
import 'package:flutter/material.dart';
import 'package:go_router/go_router.dart';
import 'package:hooks_riverpod/hooks_riverpod.dart';
import 'package:lensai/core/routing/routes.dart';
import 'package:lensai/extensions/nullable.dart';
@@ -29,6 +28,7 @@ class BangListScreen extends HookConsumerWidget {
slivers: [
SliverAppBar.medium(title: Text('$category: $subCategory')),
bangsAsync.when(
skipLoadingOnReload: true,
data: (bangs) {
return SliverList.builder(
itemCount: bangs.length,
@@ -41,7 +41,7 @@ class BangListScreen extends HookConsumerWidget {
.read(selectedBangTriggerProvider().notifier)
.setTrigger(bang.trigger);
context.go(const SearchRoute().location);
const SearchRoute().go(context);
},
);
},
@@ -1,5 +1,4 @@
import 'package:flutter/material.dart';
import 'package:go_router/go_router.dart';
import 'package:hooks_riverpod/hooks_riverpod.dart';
import 'package:lensai/core/routing/routes.dart';
import 'package:lensai/features/bangs/data/models/bang_data.dart';
@@ -38,7 +37,7 @@ class BangDetails extends HookConsumerWidget {
children: [
Row(
children: [
UrlIcon(bangData.getUrl(''), iconSize: 34.0),
UrlIcon([bangData.getTemplateUrl('')], iconSize: 34.0),
const SizedBox(width: 12.0),
Expanded(
child: Column(
@@ -67,14 +66,14 @@ class BangDetails extends HookConsumerWidget {
visualDensity: VisualDensity.compact,
),
onPressed: () async {
final url = Uri.parse(bangData.getUrl('').origin);
final url = Uri.parse(bangData.getTemplateUrl('').origin);
await ref
.read(tabRepositoryProvider.notifier)
.addTab(url: url);
if (context.mounted) {
context.go(BrowserRoute().location);
BrowserRoute().go(context);
}
},
label: Text(bangData.domain),
@@ -73,7 +73,8 @@ class SiteSearch extends HookConsumerWidget {
width: double.maxFinite,
child: SelectableChips(
itemId: (bang) => bang.trigger,
itemAvatar: (bang) => UrlIcon(bang.getUrl(''), iconSize: 20),
itemAvatar:
(bang) => UrlIcon([bang.getTemplateUrl('')], iconSize: 20),
itemLabel: (bang) => Text(bang.websiteName),
availableItems: availableBangs,
selectedItem: selectedBang,