intermediate

This commit is contained in:
Fabian Freund
2025-01-07 00:06:31 +01:00
parent ea0880b97a
commit 4a2191b01d
84 changed files with 2655 additions and 1383 deletions
+12 -14
View File
@@ -1,9 +1,5 @@
import 'dart:convert';
import 'package:exceptions/exceptions.dart';
import 'package:http/http.dart' as http;
import 'package:lensai/core/http_error_handler.dart';
import 'package:lensai/features/settings/data/repositories/settings_repository.dart';
import 'package:riverpod_annotation/riverpod_annotation.dart';
part 'chat.g.dart';
@@ -18,17 +14,19 @@ class KagiChatService extends _$KagiChatService {
}
Future<Result<String>> downloadChat(Uri url) {
final kagiSession =
ref.read(settingsRepositoryProvider).valueOrNull?.kagiSession;
throw Exception('Not implemented !');
return Result.fromAsync(
() async {
final response = await _client
.get(url.replace(queryParameters: {'token': kagiSession}));
// final kagiSession =
// ref.read(settingsRepositoryProvider).valueOrNull?.kagiSession;
return utf8.decode(response.bodyBytes);
},
exceptionHandler: handleHttpError,
);
// return Result.fromAsync(
// () async {
// final response = await _client
// .get(url.replace(queryParameters: {'token': kagiSession}));
// return utf8.decode(response.bodyBytes);
// },
// exceptionHandler: handleHttpError,
// );
}
}
@@ -6,7 +6,7 @@ part of 'chat.dart';
// RiverpodGenerator
// **************************************************************************
String _$kagiChatServiceHash() => r'fda3874c955812fa62d555afaca352a3776dd692';
String _$kagiChatServiceHash() => r'a112b70b42fe9d650c9d4dc643bf965ddce7bfa6';
/// See also [KagiChatService].
@ProviderFor(KagiChatService)
@@ -8,9 +8,8 @@ import 'package:lensai/features/geckoview/features/browser/presentation/widgets/
import 'package:lensai/features/geckoview/features/browser/presentation/widgets/speech_to_text_button.dart';
import 'package:lensai/features/kagi/data/entities/modes.dart';
import 'package:lensai/features/kagi/utils/url_builder.dart' as uri_builder;
import 'package:lensai/features/settings/data/models/settings.dart';
import 'package:lensai/features/settings/data/repositories/settings_repository.dart';
import 'package:lensai/features/share_intent/domain/entities/shared_content.dart';
import 'package:lensai/features/user/domain/repositories/settings.dart';
import 'package:lensai/presentation/hooks/sync_page_tab.dart';
class AssistantTab extends HookConsumerWidget {
@@ -26,9 +25,7 @@ class AssistantTab extends HookConsumerWidget {
@override
Widget build(BuildContext context, WidgetRef ref) {
final incognitoEnabled = ref.watch(
settingsRepositoryProvider.select(
(value) => (value.valueOrNull ?? Settings.withDefaults()).incognitoMode,
),
settingsRepositoryProvider.select((value) => value.incognitoMode),
);
final researchVariant = ref.watch(activeResearchVariantProvider);
@@ -5,6 +5,7 @@ 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';
import 'package:lensai/features/bangs/domain/providers/search.dart';
import 'package:lensai/features/bangs/domain/repositories/data.dart';
import 'package:lensai/features/bangs/presentation/widgets/bang_icon.dart';
import 'package:lensai/features/bangs/presentation/widgets/search_field.dart';
@@ -33,7 +34,8 @@ class SearchTab extends HookConsumerWidget {
final selectedBang = ref
.watch(selectedBangDataProvider().select((value) => value.valueOrNull));
final defaultSearchBang = ref.watch(
defaultSearchBangDataProvider.select((value) => value.valueOrNull));
defaultSearchBangDataProvider.select((value) => value.valueOrNull),
);
final activeBang = selectedBang ?? defaultSearchBang;
@@ -42,11 +44,11 @@ class SearchTab extends HookConsumerWidget {
Future<void> submitSearch() async {
if (activeBang != null && (formKey.currentState?.validate() == true)) {
await ref
.read(bangDataRepositoryProvider.notifier)
.increaseFrequency(activeBang.trigger);
final searchUri = await ref.read(
triggerBangSearchProvider(activeBang, textController.text).future,
);
onSubmit(activeBang.getUrl(textController.text));
onSubmit(searchUri);
}
}
@@ -9,9 +9,8 @@ import 'package:hooks_riverpod/hooks_riverpod.dart';
import 'package:lensai/features/geckoview/features/browser/presentation/widgets/sheets/create_tab.dart';
import 'package:lensai/features/kagi/data/entities/modes.dart';
import 'package:lensai/features/kagi/utils/url_builder.dart' as uri_builder;
import 'package:lensai/features/settings/data/models/settings.dart';
import 'package:lensai/features/settings/data/repositories/settings_repository.dart';
import 'package:lensai/features/share_intent/domain/entities/shared_content.dart';
import 'package:lensai/features/user/domain/repositories/settings.dart';
import 'package:lensai/presentation/widgets/website_title_tile.dart';
import 'package:lensai/utils/uri_parser.dart' as uri_parser;
@@ -24,7 +23,7 @@ class _InputField extends ConsumerWidget {
Widget build(BuildContext context, WidgetRef ref) {
final incognitoEnabled = ref.watch(
settingsRepositoryProvider.select(
(value) => (value.valueOrNull ?? Settings.withDefaults()).incognitoMode,
(value) => value.incognitoMode,
),
);