fix: don't depend on FaceFilter for fetching personId

This commit is contained in:
Prateek Sunal
2025-06-03 09:43:06 +05:30
parent 1d7baf9dd6
commit 9ee52b5dee
3 changed files with 8 additions and 12 deletions

View File

@@ -7,7 +7,7 @@ import 'package:logging/logging.dart';
import 'package:photos/db/files_db.dart';
import 'package:photos/models/file/file.dart';
import "package:photos/models/search/generic_search_result.dart";
import "package:photos/models/search/hierarchical/face_filter.dart";
import "package:photos/models/search/search_constants.dart";
import "package:photos/models/search/search_types.dart";
import 'package:photos/service_locator.dart';
import 'package:photos/services/home_widget_service.dart';
@@ -292,16 +292,14 @@ class PeopleHomeWidgetService {
// Search Filter with face and pick top two faces
final searchFilter = await SectionType.face.getData(null).then(
(value) => List<GenericSearchResult>.from(value).where(
(element) =>
(element.hierarchicalSearchFilter as FaceFilter).personId !=
null,
(element) => (element.params[kPersonParamID] as String?) != null,
),
);
if (searchFilter.isNotEmpty) {
peopleIds = searchFilter
.take(2)
.map((e) => (e.hierarchicalSearchFilter as FaceFilter).personId!)
.map((e) => e.params[kPersonParamID] as String)
.toList();
} else {
_logger.warning("No selected people found");

View File

@@ -5,7 +5,7 @@ import "package:flutter_animate/flutter_animate.dart";
import "package:photos/events/event.dart";
import "package:photos/generated/l10n.dart";
import "package:photos/models/search/generic_search_result.dart";
import "package:photos/models/search/hierarchical/face_filter.dart";
import "package:photos/models/search/search_constants.dart";
import "package:photos/models/search/search_types.dart";
import "package:photos/models/selected_people.dart";
import "package:photos/theme/ente_theme.dart";
@@ -70,14 +70,13 @@ class _PeopleSectionAllWidgetState extends State<PeopleSectionAllWidget> {
if (widget.namedOnly) {
results.removeWhere(
(element) =>
(element.hierarchicalSearchFilter as FaceFilter).personId == null,
(element) => element.params[kPersonParamID] == null,
);
if (widget.selectedPeople?.personIds.isEmpty ?? false) {
widget.selectedPeople!.select(
results
.take(2)
.map((e) => (e.hierarchicalSearchFilter as FaceFilter).personId!)
.map((e) => e.params[kPersonParamID] as String)
.toSet(),
);
}

View File

@@ -203,9 +203,8 @@ class PersonSearchExample extends StatelessWidget {
});
void toggleSelection() {
selectedPeople?.toggleSelection(
(searchResult.hierarchicalSearchFilter as FaceFilter).personId!,
);
selectedPeople
?.toggleSelection(searchResult.params[kPersonParamID]! as String);
}
@override