83 lines
3.1 KiB
Dart
83 lines
3.1 KiB
Dart
import 'package:bang_navigator/core/routing/routes.dart';
|
|
import 'package:bang_navigator/features/search_browser/domain/entities/modes.dart';
|
|
import 'package:bang_navigator/features/search_browser/domain/entities/sheet.dart';
|
|
import 'package:bang_navigator/features/search_browser/domain/services/create_tab.dart';
|
|
import 'package:bang_navigator/features/search_browser/presentation/widgets/error_container.dart';
|
|
import 'package:bang_navigator/features/settings/data/models/settings.dart';
|
|
import 'package:bang_navigator/features/settings/data/repositories/settings_repository.dart';
|
|
import 'package:flutter/material.dart';
|
|
import 'package:flutter_markdown/flutter_markdown.dart';
|
|
import 'package:flutter_material_design_icons/flutter_material_design_icons.dart';
|
|
import 'package:go_router/go_router.dart';
|
|
import 'package:hooks_riverpod/hooks_riverpod.dart';
|
|
|
|
class LandingAction extends HookConsumerWidget {
|
|
const LandingAction({super.key});
|
|
@override
|
|
Widget build(BuildContext context, WidgetRef ref) {
|
|
final sessionTokenAvailable = ref.watch(
|
|
settingsRepositoryProvider.select(
|
|
(value) => value.valueOrNull?.kagiSession?.isNotEmpty ?? false,
|
|
),
|
|
);
|
|
|
|
final showEarlyAccessFeatures = ref.watch(
|
|
settingsRepositoryProvider.select(
|
|
(value) => (value.valueOrNull ?? Settings.withDefaults())
|
|
.showEarlyAccessFeatures,
|
|
),
|
|
);
|
|
|
|
return Visibility(
|
|
visible: sessionTokenAvailable,
|
|
replacement: ErrorContainer(
|
|
content: Markdown(
|
|
shrinkWrap: true,
|
|
onTapLink: (text, href, title) async {
|
|
if (href == 'settings') {
|
|
await context.push(SettingsRoute().location);
|
|
}
|
|
},
|
|
data: '## No Kagi Session Provided\n'
|
|
'Please navigate to [Settings](settings) and enter your Kagi Session Token.\n'
|
|
"You must provide a valid session in order to use Kagi's features.",
|
|
),
|
|
),
|
|
child: Wrap(
|
|
spacing: 8.0,
|
|
alignment: WrapAlignment.spaceEvenly,
|
|
children: [
|
|
OutlinedButton.icon(
|
|
onPressed: () {
|
|
ref.read(createTabStreamProvider.notifier).createTab(
|
|
CreateTab(preferredTool: KagiTool.search),
|
|
);
|
|
},
|
|
icon: const Icon(MdiIcons.searchWeb),
|
|
label: const Text('Search'),
|
|
),
|
|
OutlinedButton.icon(
|
|
onPressed: () {
|
|
ref.read(createTabStreamProvider.notifier).createTab(
|
|
CreateTab(preferredTool: KagiTool.summarizer),
|
|
);
|
|
},
|
|
icon: const Icon(MdiIcons.text),
|
|
label: const Text('Summarizer'),
|
|
),
|
|
if (showEarlyAccessFeatures)
|
|
OutlinedButton.icon(
|
|
onPressed: () {
|
|
ref.read(createTabStreamProvider.notifier).createTab(
|
|
CreateTab(preferredTool: KagiTool.assistant),
|
|
);
|
|
},
|
|
icon: const Icon(MdiIcons.brain),
|
|
label: const Text('Assistant'),
|
|
),
|
|
],
|
|
),
|
|
);
|
|
}
|
|
}
|