renamed file + collection search service now returns an object with results marked with levels of relevance
This commit is contained in:
parent
c281c3dc73
commit
fd2f89e1b9
|
@ -864,7 +864,7 @@ class CollectionsService {
|
|||
}
|
||||
}
|
||||
|
||||
Set<int> getSearchedCollectionsId(String query) {
|
||||
Map<String, Set> getSearchedCollectionsId(String query) {
|
||||
Set stringStartsWithQuery = _collectionIDToCollections.values
|
||||
.toList()
|
||||
.where(
|
||||
|
@ -892,10 +892,13 @@ class CollectionsService {
|
|||
.map((e) => e.id)
|
||||
.toSet();
|
||||
|
||||
containesQuery = containesQuery
|
||||
.difference({...stringStartsWithQuery, ...wordStartsWithQuery});
|
||||
|
||||
return {
|
||||
...stringStartsWithQuery,
|
||||
...wordStartsWithQuery,
|
||||
...containesQuery
|
||||
'p1': stringStartsWithQuery,
|
||||
'p2': wordStartsWithQuery,
|
||||
'p3': containesQuery,
|
||||
};
|
||||
}
|
||||
}
|
||||
|
|
20
lib/ui/viewer/search/SearchResultsSuggestions.dart
Normal file
20
lib/ui/viewer/search/SearchResultsSuggestions.dart
Normal file
|
@ -0,0 +1,20 @@
|
|||
import 'package:flutter/src/foundation/key.dart';
|
||||
import 'package:flutter/src/widgets/framework.dart';
|
||||
import 'package:flutter/widgets.dart';
|
||||
|
||||
class SearchResultsSuggestions extends StatefulWidget {
|
||||
final Set collectionIds;
|
||||
const SearchResultsSuggestions({Key key, this.collectionIds})
|
||||
: super(key: key);
|
||||
|
||||
@override
|
||||
State<SearchResultsSuggestions> createState() =>
|
||||
_SearchResultsSuggestionsState();
|
||||
}
|
||||
|
||||
class _SearchResultsSuggestionsState extends State<SearchResultsSuggestions> {
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
return Text('Test');
|
||||
}
|
||||
}
|
|
@ -3,6 +3,7 @@ import 'package:flutter/src/foundation/key.dart';
|
|||
import 'package:flutter/src/widgets/framework.dart';
|
||||
import 'package:photos/ente_theme_data.dart';
|
||||
import 'package:photos/services/collections_service.dart';
|
||||
import 'package:photos/ui/viewer/search/SearchResultsSuggestions.dart';
|
||||
|
||||
class SearchIconWidget extends StatefulWidget {
|
||||
bool openSearch;
|
||||
|
@ -32,6 +33,7 @@ class _SearchIconWidgetState extends State<SearchIconWidget> {
|
|||
|
||||
class Searchwidget extends StatefulWidget {
|
||||
bool openSearch;
|
||||
String searchQuery = '';
|
||||
Searchwidget(this.openSearch, {Key key}) : super(key: key);
|
||||
|
||||
@override
|
||||
|
@ -39,48 +41,58 @@ class Searchwidget extends StatefulWidget {
|
|||
}
|
||||
|
||||
class _SearchwidgetState extends State<Searchwidget> {
|
||||
TextEditingController searchController = TextEditingController();
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
Map<String, Set> collectionIDs;
|
||||
return widget.openSearch
|
||||
? Row(
|
||||
? Column(
|
||||
children: [
|
||||
const SizedBox(width: 12),
|
||||
Flexible(
|
||||
child: Container(
|
||||
color: Theme.of(context).colorScheme.defaultBackgroundColor,
|
||||
child: TextFormField(
|
||||
style: Theme.of(context).textTheme.subtitle1,
|
||||
controller: searchController,
|
||||
decoration: InputDecoration(
|
||||
filled: true,
|
||||
contentPadding: const EdgeInsets.symmetric(
|
||||
horizontal: 16,
|
||||
vertical: 14,
|
||||
Row(
|
||||
children: [
|
||||
const SizedBox(width: 12),
|
||||
Flexible(
|
||||
child: Container(
|
||||
color:
|
||||
Theme.of(context).colorScheme.defaultBackgroundColor,
|
||||
child: TextFormField(
|
||||
style: Theme.of(context).textTheme.subtitle1,
|
||||
decoration: InputDecoration(
|
||||
filled: true,
|
||||
contentPadding: const EdgeInsets.symmetric(
|
||||
horizontal: 16,
|
||||
vertical: 14,
|
||||
),
|
||||
border: UnderlineInputBorder(
|
||||
borderSide: BorderSide.none,
|
||||
borderRadius: BorderRadius.circular(8),
|
||||
),
|
||||
prefixIcon: const Icon(Icons.search),
|
||||
),
|
||||
onChanged: (value) {
|
||||
collectionIDs = CollectionsService.instance
|
||||
.getSearchedCollectionsId(value);
|
||||
debugPrint(collectionIDs.toString());
|
||||
setState(() {
|
||||
widget.searchQuery = value;
|
||||
});
|
||||
},
|
||||
),
|
||||
border: UnderlineInputBorder(
|
||||
borderSide: BorderSide.none,
|
||||
borderRadius: BorderRadius.circular(8),
|
||||
),
|
||||
prefixIcon: const Icon(Icons.search),
|
||||
),
|
||||
onChanged: (value) {
|
||||
Set ids = CollectionsService.instance
|
||||
.getSearchedCollectionsId(value);
|
||||
debugPrint(ids.toString());
|
||||
},
|
||||
),
|
||||
),
|
||||
),
|
||||
IconButton(
|
||||
onPressed: () {
|
||||
setState(() {
|
||||
widget.openSearch = !widget.openSearch;
|
||||
});
|
||||
},
|
||||
icon: const Icon(Icons.close),
|
||||
IconButton(
|
||||
onPressed: () {
|
||||
setState(() {
|
||||
widget.openSearch = !widget.openSearch;
|
||||
});
|
||||
},
|
||||
icon: const Icon(Icons.close),
|
||||
),
|
||||
],
|
||||
),
|
||||
const SizedBox(height: 20),
|
||||
widget.searchQuery != ''
|
||||
? SearchResultsSuggestions()
|
||||
: const SizedBox.shrink(),
|
||||
],
|
||||
)
|
||||
: SearchIconWidget();
|
||||
|
|
Loading…
Reference in a new issue