Refactor remove redundant method

This commit is contained in:
laurenspriem
2025-05-30 16:40:02 +05:30
parent 3354416543
commit ba468d32f5
2 changed files with 25 additions and 98 deletions

View File

@@ -4,7 +4,6 @@ import "dart:developer";
import "package:flutter/foundation.dart";
import "package:logging/logging.dart";
import "package:photos/core/event_bus.dart";
import "package:photos/db/files_db.dart";
import "package:photos/db/ml/db.dart";
import "package:photos/events/people_changed_event.dart";
import "package:photos/extensions/stop_watch.dart";
@@ -14,8 +13,6 @@ import 'package:photos/models/ml/face/face.dart';
import "package:photos/models/ml/face/person.dart";
import "package:photos/service_locator.dart";
import "package:photos/services/entity_service.dart";
import "package:photos/services/machine_learning/ml_result.dart";
import "package:photos/services/search_service.dart";
import "package:photos/utils/face/face_box_crop.dart";
import "package:shared_preferences/shared_preferences.dart";
@@ -499,50 +496,4 @@ class PersonService {
rethrow;
}
}
// TODO: lau-face: rework this method using new scores logic
Future<EnteFile?> getThumbnailFileOfPerson(
PersonEntity person,
) async {
try {
if (person.data.hasAvatar()) {
final avatarFileID = tryGetFileIdFromFaceId(person.data.avatarFaceID!);
if (avatarFileID != null) {
final file = (await FilesDB.instance
.getFileIDToFileFromIDs([avatarFileID]))[avatarFileID];
if (file != null) {
return file;
} else {
logger.severe("Avatar File not found for face ${person.data}");
}
}
}
final clustersToFiles =
await SearchService.instance.getClusterFilesForPersonID(
person.remoteID,
);
EnteFile? resultFile;
// iterate over all clusters and get the first file
for (final clusterFiles in clustersToFiles.values) {
for (final file in clusterFiles) {
resultFile ??= file;
if (resultFile.creationTime! < file.creationTime!) {
resultFile = file;
}
}
}
if (resultFile == null) {
logger.warning(
"Person ${kDebugMode ? person.data.name : person.remoteID} has no files",
);
return null;
}
return resultFile;
} catch (e, s) {
logger.severe("Error in getThumbnailFileOfPerson", e, s);
return null;
}
}
}

View File

@@ -7,7 +7,6 @@ import "package:photos/core/event_bus.dart";
import "package:photos/events/people_changed_event.dart";
import "package:photos/generated/l10n.dart";
import "package:photos/l10n/l10n.dart";
import "package:photos/models/file/file.dart";
import "package:photos/models/ml/face/person.dart";
import "package:photos/models/typedefs.dart";
import "package:photos/services/machine_learning/face_ml/person/person_service.dart";
@@ -17,21 +16,10 @@ import "package:photos/ui/components/buttons/button_widget.dart";
import "package:photos/ui/components/dialog_widget.dart";
import "package:photos/ui/components/models/button_type.dart";
import "package:photos/ui/notification/toast.dart";
import "package:photos/ui/viewer/file/no_thumbnail_widget.dart";
import "package:photos/ui/viewer/people/person_face_widget.dart";
import "package:photos/utils/dialog_util.dart";
import "package:photos/utils/person_contact_linking_util.dart";
class PersonEntityWithThumbnailFile {
final PersonEntity person;
final EnteFile? thumbnailFile;
const PersonEntityWithThumbnailFile(
this.person,
this.thumbnailFile,
);
}
class LinkContactToPersonSelectionPage extends StatefulWidget {
final String? emailToLink;
const LinkContactToPersonSelectionPage({
@@ -46,25 +34,21 @@ class LinkContactToPersonSelectionPage extends StatefulWidget {
class _LinkContactToPersonSelectionPageState
extends State<LinkContactToPersonSelectionPage> {
late Future<List<PersonEntityWithThumbnailFile>>
_personEntitiesWithThumnailFile;
late Future<List<PersonEntity>> _personEntities;
final _logger = Logger('LinkContactToPersonSelectionPage');
@override
void initState() {
super.initState();
_personEntitiesWithThumnailFile =
PersonService.instance.getPersons().then((persons) async {
final List<PersonEntityWithThumbnailFile> result = [];
_personEntities = PersonService.instance.getPersons().then((persons) async {
final List<PersonEntity> result = [];
for (final person in persons) {
if ((person.data.email != null && person.data.email!.isNotEmpty) ||
(person.data.isHidden || person.data.isIgnored)) {
continue;
}
final file =
await PersonService.instance.getThumbnailFileOfPerson(person);
result.add(PersonEntityWithThumbnailFile(person, file));
result.add(person);
}
return result;
});
@@ -85,14 +69,14 @@ class _LinkContactToPersonSelectionPageState
),
centerTitle: false,
),
body: FutureBuilder<List<PersonEntityWithThumbnailFile>>(
future: _personEntitiesWithThumnailFile,
body: FutureBuilder<List<PersonEntity>>(
future: _personEntities,
builder: (context, snapshot) {
if (snapshot.connectionState == ConnectionState.waiting) {
return const Center(child: EnteLoadingWidget());
} else if (snapshot.hasError) {
_logger.severe(
"Failed to load _personEntitiesWithThumnailFile",
"Failed to load _personEntities",
snapshot.error,
snapshot.stackTrace,
);
@@ -131,7 +115,7 @@ class _LinkContactToPersonSelectionPageState
final updatedPerson = await linkPersonToContact(
context,
emailToLink: widget.emailToLink!,
personEntity: results[index].person,
personEntity: results[index],
);
if (updatedPerson != null) {
@@ -143,7 +127,7 @@ class _LinkContactToPersonSelectionPageState
}
},
itemSize: itemSize,
personEntitiesWithThumbnailFile: results[index],
personEntity: results[index],
);
},
);
@@ -221,25 +205,21 @@ class ReassignMeSelectionPage extends StatefulWidget {
}
class _ReassignMeSelectionPageState extends State<ReassignMeSelectionPage> {
late Future<List<PersonEntityWithThumbnailFile>>
_personEntitiesWithThumnailFile;
late Future<List<PersonEntity>> _personEntities;
final _logger = Logger('ReassignMeSelectionPage');
@override
void initState() {
super.initState();
_personEntitiesWithThumnailFile =
PersonService.instance.getPersons().then((persons) async {
final List<PersonEntityWithThumbnailFile> result = [];
_personEntities = PersonService.instance.getPersons().then((persons) async {
final List<PersonEntity> result = [];
for (final person in persons) {
if ((person.data.email != null && person.data.email!.isNotEmpty) ||
(person.data.isHidden || person.data.isIgnored)) {
continue;
}
final file =
await PersonService.instance.getThumbnailFileOfPerson(person);
result.add(PersonEntityWithThumbnailFile(person, file));
result.add(person);
}
return result;
});
@@ -260,8 +240,8 @@ class _ReassignMeSelectionPageState extends State<ReassignMeSelectionPage> {
),
centerTitle: false,
),
body: FutureBuilder<List<PersonEntityWithThumbnailFile>>(
future: _personEntitiesWithThumnailFile,
body: FutureBuilder<List<PersonEntity>>(
future: _personEntities,
builder: (context, snapshot) {
if (snapshot.connectionState == ConnectionState.waiting) {
return const Center(child: EnteLoadingWidget());
@@ -310,12 +290,11 @@ class _ReassignMeSelectionPageState extends State<ReassignMeSelectionPage> {
try {
await reassignMe(
currentPersonID: widget.currentMeId,
newPersonID: results[index].person.remoteID,
newPersonID: results[index].remoteID,
);
showToast(
context,
context.l10n
.reassignedToName(results[index].person.data.name),
context.l10n.reassignedToName(results[index].data.name),
);
await Future.delayed(const Duration(milliseconds: 1250));
unawaited(dialog.hide());
@@ -328,7 +307,7 @@ class _ReassignMeSelectionPageState extends State<ReassignMeSelectionPage> {
}
},
itemSize: itemSize,
personEntitiesWithThumbnailFile: results[index],
personEntity: results[index],
);
},
);
@@ -374,12 +353,12 @@ class _ReassignMeSelectionPageState extends State<ReassignMeSelectionPage> {
class _RoundedPersonFaceWidget extends StatelessWidget {
final FutureVoidCallback onTap;
final double itemSize;
final PersonEntityWithThumbnailFile personEntitiesWithThumbnailFile;
final PersonEntity personEntity;
const _RoundedPersonFaceWidget({
required this.onTap,
required this.itemSize,
required this.personEntitiesWithThumbnailFile,
required this.personEntity,
});
double get borderRadius => 82 * (itemSize / 102);
@@ -425,13 +404,10 @@ class _RoundedPersonFaceWidget extends StatelessWidget {
),
),
),
child: personEntitiesWithThumbnailFile.thumbnailFile == null
? const NoThumbnailWidget(addBorder: false)
: PersonFaceWidget(
personId:
personEntitiesWithThumbnailFile.person.remoteID,
useFullFile: true,
),
child: PersonFaceWidget(
personId: personEntity.remoteID,
useFullFile: true,
),
),
),
),
@@ -440,7 +416,7 @@ class _RoundedPersonFaceWidget extends StatelessWidget {
Padding(
padding: const EdgeInsets.only(top: 6, bottom: 0),
child: Text(
personEntitiesWithThumbnailFile.person.data.name,
personEntity.data.name,
maxLines: 1,
textAlign: TextAlign.center,
overflow: TextOverflow.ellipsis,