From 687d3aa8813a87dee30b34cfe7c986156aba4ccd Mon Sep 17 00:00:00 2001 From: Abhishek Shroff Date: Tue, 22 Apr 2025 11:04:31 +0530 Subject: [PATCH] [client] Search stub --- client/lib/ui/app/app_layout.dart | 12 +++++++++++- client/lib/ui/app/router.dart | 7 +++++++ client/lib/ui/explorer/page.dart | 22 ++++++++++++++++++++++ 3 files changed, 40 insertions(+), 1 deletion(-) diff --git a/client/lib/ui/app/app_layout.dart b/client/lib/ui/app/app_layout.dart index a603899e..568e7cb7 100644 --- a/client/lib/ui/app/app_layout.dart +++ b/client/lib/ui/app/app_layout.dart @@ -3,8 +3,10 @@ import 'package:flutter_state_notifier/flutter_state_notifier.dart'; import 'package:phylum/ui/app/app_actions.dart'; import 'package:phylum/ui/app/fab_action.dart'; import 'package:phylum/ui/app/nav_list.dart'; +import 'package:phylum/ui/app/router.dart'; import 'package:phylum/ui/explorer/explorer_view.dart'; import 'package:phylum/ui/explorer/explorer_controller.dart'; +import 'package:phylum/ui/explorer/page.dart'; import 'package:phylum/ui/explorer/resource_drop_and_drop.dart'; import 'package:phylum/ui/explorer/resource_info_view.dart'; import 'package:phylum/ui/explorer/selection_mode.dart'; @@ -157,8 +159,16 @@ class ExpandedAppLayout extends StatelessWidget { Expanded( child: TextField( decoration: InputDecoration.collapsed( - hintText: 'Search Files...', hintStyle: TextStyle(fontSize: 18)), + hintText: 'Search Files...', + hintStyle: TextStyle(fontSize: 18), + ), style: TextStyle(fontSize: 18), + onSubmitted: (text) { + final query = text.trim(); + if (query.isNotEmpty) { + context.read().go(ExplorerPageSearch(query: query)); + } + }, ), ), ], diff --git a/client/lib/ui/app/router.dart b/client/lib/ui/app/router.dart index 1fac4f6b..fc867980 100644 --- a/client/lib/ui/app/router.dart +++ b/client/lib/ui/app/router.dart @@ -94,6 +94,13 @@ class PhylumRouteInformationParser extends RouteInformationParser if (segments[0] == 'trash') { return SynchronousFuture(const ExplorerPageTrash()); } + if (segments[0] == 'search') { + final query = uri.queryParameters['q']; + if (query == null || query.trim().isEmpty) { + return SynchronousFuture(const ExplorerPageHome()); + } + return SynchronousFuture(ExplorerPageSearch(query: query)); + } } else if (segments.length == 2 && segments[0] == 'folder') { return SynchronousFuture(ExplorerPageFolder(folderId: segments[1])); } diff --git a/client/lib/ui/explorer/page.dart b/client/lib/ui/explorer/page.dart index 1fbfae74..3ca96300 100644 --- a/client/lib/ui/explorer/page.dart +++ b/client/lib/ui/explorer/page.dart @@ -110,3 +110,25 @@ class ExplorerPageShared extends ExplorerPage { return account.db.selectShared().watch(); } } + +class ExplorerPageSearch extends ExplorerPage { + @override + Uri get uri => Uri(path: '/search', queryParameters: {'q': query}); + + @override + String get title => 'Search'; + + final String query; + + ExplorerPageSearch({required this.query}); + + @override + Future refresh(PhylumAccount account) { + return account.sharedResourcesRepository.refresh().then((result) => result is ApiSuccessResponse); + } + + @override + Stream> items(PhylumAccount account) { + return account.db.selectShared().watch(); + } +}