Compare commits
2 commits
c7842fd96c
...
d3a8a401c4
Author | SHA1 | Date | |
---|---|---|---|
d3a8a401c4 | |||
64ed6ae1ac |
2 changed files with 9 additions and 5 deletions
|
@ -68,16 +68,18 @@ class ImagesService {
|
|||
/// There are lots of optimizations possible for new inputs, for example reducing search frontier
|
||||
/// by using set-cover/subsetting optimizations on backspace, and so on, but again, not the point,
|
||||
/// I think.
|
||||
Future<List<ImageModel>> searchImages({
|
||||
required SearchOption searchOption,
|
||||
required String imageNamePart,
|
||||
}) async {
|
||||
Future<List<ImageModel>> searchImages(
|
||||
{required SearchOption searchOption,
|
||||
required String imageNamePart,
|
||||
bool treatAsInSequence = false}) async {
|
||||
return await _searchMutex.lockAndRun(run: (final unlock) async {
|
||||
try {
|
||||
switch (searchOption) {
|
||||
case SearchOption.local:
|
||||
final rankedKeys = _imageModels.keys
|
||||
.where((final imageName) => imageName.contains(imageNamePart))
|
||||
//todo(mehul): Implement atleast-matching-all-parts
|
||||
.where(
|
||||
(final imageName) => imageName.contains(treatAsInSequence ? imageNamePart : ''))
|
||||
.toList(growable: false)
|
||||
..sort((final a, final b) =>
|
||||
ConstSorters.stringsSimilarityTarget(targetWord: imageNamePart, a, b));
|
||||
|
|
|
@ -64,6 +64,8 @@ class GalleryViewModel extends BaseViewModel {
|
|||
.searchImages(
|
||||
imageNamePart: searchTerm,
|
||||
searchOption: searchOptionListenable.value,
|
||||
// todo(mehul): When implemented, remove this
|
||||
treatAsInSequence: true,
|
||||
)
|
||||
.then(
|
||||
(final fetchedImageModels) => _imageSearchResultsNotifier.value = fetchedImageModels),
|
||||
|
|
Loading…
Reference in a new issue