minor refactor

This commit is contained in:
Neeraj Gupta 2022-07-28 10:25:54 +05:30
parent 834209ef80
commit b2cf52c31a
No known key found for this signature in database
GPG key ID: 3C5A1684DC1729E1
2 changed files with 30 additions and 42 deletions

View file

@ -171,43 +171,44 @@ class CollectionsService {
.toList();
}
// getCollectionsWithThumbnailForSearch removes deleted or archived or collections which don't have a file from search result
// getFilteredCollectionsWithThumbnail removes deleted or archived or
// collections which don't have a file from search result
Future<List<CollectionWithThumbnail>> getFilteredCollectionsWithThumbnail(
String query,
) async {
// identify collections which have at least one file as we don't display
// empty collection
Future<List<CollectionWithThumbnail>>
getCollectionsWithThumbnailForSearch() async {
List<File> latestCollectionFiles = await getLatestCollectionFiles();
Map<int, File> collectionIDtoFileForCollectionWithAtleastOneFile = {
Map<int, File> collectionIDToLatestFileMap = {
for (File file in latestCollectionFiles) file.collectionID: file
};
var collectionIDToCollectionsForSearch = _collectionIDToCollections;
/* Identify collections whose name matches the search query
and is not archived
and is not deleted
and has at-least one file
*/
collectionIDToCollectionsForSearch.removeWhere(
(key, value) =>
value.isDeleted ||
value.isArchived() ||
!collectionIDtoFileForCollectionWithAtleastOneFile
.containsKey(value.id),
);
List<int> collectionIDsForSearch = collectionIDToCollectionsForSearch.keys
.toSet()
.intersection(
collectionIDtoFileForCollectionWithAtleastOneFile.keys.toSet(),
List<Collection> matchedCollection = _collectionIDToCollections.values
.where(
(c) =>
!c.isDeleted && // not deleted
!c.isArchived() // not archived
&&
collectionIDToLatestFileMap.containsKey(c.id) && // the
// collection is not empty
c.name.contains(RegExp(query, caseSensitive: false)),
)
.toList();
List<CollectionWithThumbnail> collectionWithThumbnailForSerach = [];
for (int collectionID in collectionIDsForSearch) {
CollectionWithThumbnail c = CollectionWithThumbnail(
collectionIDToCollectionsForSearch[collectionID],
collectionIDtoFileForCollectionWithAtleastOneFile[collectionID],
);
collectionWithThumbnailForSerach.add(c);
List<CollectionWithThumbnail> result = [];
for (Collection collection in matchedCollection) {
result.add(CollectionWithThumbnail(
collection,
collectionIDToLatestFileMap[collection.id],
));
}
return collectionWithThumbnailForSerach;
return result;
}
Future<List<User>> getSharees(int collectionID) {
@ -903,19 +904,6 @@ class CollectionsService {
}
}
}
Future<List<CollectionWithThumbnail>> getSearchedCollections(
String query,
) async {
List<CollectionWithThumbnail> collectionsWithThumbnailToSearch =
await getCollectionsWithThumbnailForSearch();
return collectionsWithThumbnailToSearch
.where(
(element) => element.collection.name
.contains(RegExp(query, caseSensitive: false)),
)
.toList();
}
}
class AddFilesRequest {

View file

@ -71,7 +71,7 @@ class _SearchwidgetState extends State<Searchwidget> {
),
onChanged: (value) async {
matchedCollections = await CollectionsService.instance
.getSearchedCollections(value);
.getFilteredCollectionsWithThumbnail(value);
_searchQ.value = value;
},
autofocus: true,