Show people search section examples (people as in people who have shared items)
This commit is contained in:
parent
f7b32ec9bb
commit
40cc0ed70f
|
@ -12,7 +12,8 @@ enum ResultType {
|
|||
fileType,
|
||||
fileExtension,
|
||||
fileCaption,
|
||||
event
|
||||
event,
|
||||
shared,
|
||||
}
|
||||
|
||||
enum SectionType {
|
||||
|
@ -178,7 +179,7 @@ extension SectionTypeExtensions on SectionType {
|
|||
return SearchService.instance.getAllLocationTags(limit);
|
||||
|
||||
case SectionType.people:
|
||||
return SearchService.instance.getAllLocationTags(limit);
|
||||
return SearchService.instance.getPeopleSearchResults(limit);
|
||||
|
||||
case SectionType.album:
|
||||
return SearchService.instance.getAllCollectionSearchResults(limit);
|
||||
|
|
|
@ -7,8 +7,10 @@ import 'package:photos/data/years.dart';
|
|||
import 'package:photos/db/files_db.dart';
|
||||
import 'package:photos/events/local_photos_updated_event.dart';
|
||||
import "package:photos/extensions/string_ext.dart";
|
||||
import "package:photos/models/api/collection/user.dart";
|
||||
import 'package:photos/models/collection/collection.dart';
|
||||
import 'package:photos/models/collection/collection_items.dart';
|
||||
import "package:photos/models/file/extensions/file_props.dart";
|
||||
import 'package:photos/models/file/file.dart';
|
||||
import 'package:photos/models/file/file_type.dart';
|
||||
import "package:photos/models/local_entity_data.dart";
|
||||
|
@ -673,6 +675,38 @@ class SearchService {
|
|||
return searchResults;
|
||||
}
|
||||
|
||||
Future<List<GenericSearchResult>> getPeopleSearchResults(int? limit) async {
|
||||
final searchResults = <GenericSearchResult>[];
|
||||
final allFiles = await getAllFiles();
|
||||
final peopleToSharedFiles = <User, List<EnteFile>>{};
|
||||
int peopleCount = 0;
|
||||
for (EnteFile file in allFiles) {
|
||||
if (file.isOwner) continue;
|
||||
|
||||
final fileOwner = CollectionsService.instance
|
||||
.getFileOwner(file.ownerID!, file.collectionID);
|
||||
if (peopleToSharedFiles.containsKey(fileOwner)) {
|
||||
peopleToSharedFiles[fileOwner]!.add(file);
|
||||
} else {
|
||||
if (limit != null && limit <= peopleCount) continue;
|
||||
peopleToSharedFiles[fileOwner] = [file];
|
||||
peopleCount++;
|
||||
}
|
||||
}
|
||||
|
||||
peopleToSharedFiles.forEach((key, value) {
|
||||
searchResults.add(
|
||||
GenericSearchResult(
|
||||
ResultType.shared,
|
||||
key.name != null && key.name!.isNotEmpty ? key.name! : key.email,
|
||||
value,
|
||||
),
|
||||
);
|
||||
});
|
||||
|
||||
return searchResults;
|
||||
}
|
||||
|
||||
List<MonthData> _getMatchingMonths(BuildContext context, String query) {
|
||||
return getMonthData(context)
|
||||
.where(
|
||||
|
|
|
@ -128,6 +128,8 @@ class SearchResultWidget extends StatelessWidget {
|
|||
return "File extension";
|
||||
case ResultType.fileCaption:
|
||||
return "Description";
|
||||
case ResultType.shared:
|
||||
return "Shared";
|
||||
default:
|
||||
return type.name.toUpperCase();
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue