major update
This commit is contained in:
@@ -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,
|
||||
|
||||
Reference in New Issue
Block a user