fix: sort checked first

This commit is contained in:
Prateek Sunal
2025-07-26 15:07:04 +05:30
parent 701f42fa74
commit 17632a07e8

View File

@@ -357,7 +357,7 @@ class _PeopleSectionAllWidgetState extends State<PeopleSectionAllWidget> {
@override
void initState() {
super.initState();
sectionData = getResults();
sectionData = getResults(init: true);
final streamsToListenTo = SectionType.face.viewAllUpdateEvents();
for (Stream<Event> stream in streamsToListenTo) {
@@ -386,7 +386,7 @@ class _PeopleSectionAllWidgetState extends State<PeopleSectionAllWidget> {
}
}
Future<List<GenericSearchResult>> getResults() async {
Future<List<GenericSearchResult>> getResults({bool init = false}) async {
final allFaces = await SearchService.instance
.getAllFace(null, minClusterSize: kMinimumClusterSizeAllFaces);
normalFaces.clear();
@@ -410,6 +410,21 @@ class _PeopleSectionAllWidgetState extends State<PeopleSectionAllWidget> {
results.removeWhere(
(element) => element.params[kPersonParamID] == null,
);
if (init) {
// sort widget.selectedPeople first
results.sort((a, b) {
final aIndex = widget.selectedPeople?.personIds
.contains(a.params[kPersonParamID]) ??
false;
final bIndex = widget.selectedPeople?.personIds
.contains(b.params[kPersonParamID]) ??
false;
if (aIndex && !bIndex) return -1;
if (!aIndex && bIndex) return 1;
return a.name().compareTo(b.name());
});
}
}
_isLoaded = true;
return results;