fluffychat/lib/pages/chat_search/chat_search_view.dart
2024-05-05 14:17:12 +02:00

102 lines
3.4 KiB
Dart

import 'package:flutter/material.dart';
import 'package:flutter_gen/gen_l10n/l10n.dart';
import 'package:fluffychat/config/themes.dart';
import 'package:fluffychat/pages/chat_search/chat_search_files_tab.dart';
import 'package:fluffychat/pages/chat_search/chat_search_images_tab.dart';
import 'package:fluffychat/pages/chat_search/chat_search_message_tab.dart';
import 'package:fluffychat/pages/chat_search/chat_search_page.dart';
import 'package:fluffychat/utils/matrix_sdk_extensions/matrix_locals.dart';
import 'package:fluffychat/widgets/layouts/max_width_body.dart';
class ChatSearchView extends StatelessWidget {
final ChatSearchController controller;
const ChatSearchView(this.controller, {super.key});
@override
Widget build(BuildContext context) {
final room = controller.room;
if (room == null) {
return Scaffold(
appBar: AppBar(title: Text(L10n.of(context)!.oopsSomethingWentWrong)),
body: Center(
child: Padding(
padding: const EdgeInsets.all(16),
child:
Text(L10n.of(context)!.youAreNoLongerParticipatingInThisChat),
),
),
);
}
return Scaffold(
appBar: AppBar(
leading: const Center(child: BackButton()),
titleSpacing: 0,
title: Text(
L10n.of(context)!.searchIn(
room.getLocalizedDisplayname(MatrixLocals(L10n.of(context)!)),
),
),
),
body: MaxWidthBody(
withScrolling: false,
child: Column(
children: [
if (FluffyThemes.isThreeColumnMode(context))
const SizedBox(height: 16),
Padding(
padding: const EdgeInsets.symmetric(
horizontal: 16,
),
child: TextField(
controller: controller.searchController,
onSubmitted: (_) => controller.restartSearch(),
autofocus: true,
enabled: controller.tabController.index == 0,
decoration: InputDecoration(
hintText: L10n.of(context)!.search,
suffixIcon: const Icon(Icons.search_outlined),
),
),
),
TabBar(
controller: controller.tabController,
tabs: [
Tab(child: Text(L10n.of(context)!.messages)),
Tab(child: Text(L10n.of(context)!.gallery)),
Tab(child: Text(L10n.of(context)!.files)),
],
),
Expanded(
child: TabBarView(
controller: controller.tabController,
children: [
ChatSearchMessageTab(
searchQuery: controller.searchController.text,
room: room,
startSearch: controller.startMessageSearch,
searchStream: controller.searchStream,
),
ChatSearchImagesTab(
room: room,
startSearch: controller.startGallerySearch,
searchStream: controller.galleryStream,
),
ChatSearchFilesTab(
room: room,
startSearch: controller.startFileSearch,
searchStream: controller.fileStream,
),
],
),
),
],
),
),
);
}
}