From 14f13d9dde6576bf135a48e4fbf5b77feee3aaea Mon Sep 17 00:00:00 2001 From: laurenspriem Date: Wed, 29 Jan 2025 13:48:39 +0530 Subject: [PATCH 1/2] [mob][photos] Better logging of person issues --- .../file_selection_actions_widget.dart | 70 ++++++++++--------- .../search/result/person_face_widget.dart | 14 ++-- 2 files changed, 46 insertions(+), 38 deletions(-) diff --git a/mobile/lib/ui/viewer/actions/file_selection_actions_widget.dart b/mobile/lib/ui/viewer/actions/file_selection_actions_widget.dart index c902b8f140..ab6cbf315a 100644 --- a/mobile/lib/ui/viewer/actions/file_selection_actions_widget.dart +++ b/mobile/lib/ui/viewer/actions/file_selection_actions_widget.dart @@ -714,40 +714,44 @@ class _FileSelectionActionsWidgetState } Future _onNotpersonClicked() async { - final actionResult = await showActionSheet( - context: context, - buttons: [ - ButtonWidget( - labelText: S.of(context).yesRemove, - buttonType: ButtonType.neutral, - buttonSize: ButtonSize.large, - shouldStickToDarkTheme: true, - buttonAction: ButtonAction.first, - isInAlert: true, - ), - ButtonWidget( - labelText: S.of(context).cancel, - buttonType: ButtonType.secondary, - buttonSize: ButtonSize.large, - buttonAction: ButtonAction.second, - shouldStickToDarkTheme: true, - isInAlert: true, - ), - ], - title: "Remove these photos for ${widget.person!.data.name}?", - actionSheetType: ActionSheetType.defaultActionSheet, - ); - if (actionResult?.action != null) { - if (actionResult!.action == ButtonAction.first) { - await ClusterFeedbackService.instance.removeFilesFromPerson( - widget.selectedFiles.files.toList(), - widget.person!, - ); + try { + final actionResult = await showActionSheet( + context: context, + buttons: [ + ButtonWidget( + labelText: S.of(context).yesRemove, + buttonType: ButtonType.neutral, + buttonSize: ButtonSize.large, + shouldStickToDarkTheme: true, + buttonAction: ButtonAction.first, + isInAlert: true, + ), + ButtonWidget( + labelText: S.of(context).cancel, + buttonType: ButtonType.secondary, + buttonSize: ButtonSize.large, + buttonAction: ButtonAction.second, + shouldStickToDarkTheme: true, + isInAlert: true, + ), + ], + title: "Remove these photos for ${widget.person!.data.name}?", + actionSheetType: ActionSheetType.defaultActionSheet, + ); + if (actionResult?.action != null) { + if (actionResult!.action == ButtonAction.first) { + await ClusterFeedbackService.instance.removeFilesFromPerson( + widget.selectedFiles.files.toList(), + widget.person!, + ); + } } - } - widget.selectedFiles.clearAll(); - if (mounted) { - setState(() => {}); + widget.selectedFiles.clearAll(); + if (mounted) { + setState(() => {}); + } + } catch (e, s) { + _logger.severe("Failed to initiate `notPersonLabel`", e, s); } } diff --git a/mobile/lib/ui/viewer/search/result/person_face_widget.dart b/mobile/lib/ui/viewer/search/result/person_face_widget.dart index 053b29bf4b..e5a01cac1f 100644 --- a/mobile/lib/ui/viewer/search/result/person_face_widget.dart +++ b/mobile/lib/ui/viewer/search/result/person_face_widget.dart @@ -1,7 +1,7 @@ -import "dart:developer"; import "dart:typed_data"; import 'package:flutter/widgets.dart'; +import "package:logging/logging.dart"; import "package:photos/db/files_db.dart"; import "package:photos/db/ml/db.dart"; import 'package:photos/models/file/file.dart'; @@ -15,6 +15,8 @@ import "package:photos/ui/common/loading_widget.dart"; import "package:photos/ui/viewer/file/thumbnail_widget.dart"; import "package:photos/utils/face/face_box_crop.dart"; +final _logger = Logger("PersonFaceWidget"); + class PersonFaceWidget extends StatefulWidget { final EnteFile file; final String? personId; @@ -73,7 +75,9 @@ class _PersonFaceWidgetState extends State { ); } else { if (snapshot.hasError) { - log('Error getting cover face for person: ${snapshot.error}'); + _logger.severe( + "Error getting cover face for person: ${snapshot.error}", + ); } return widget.thumbnailFallback ? ThumbnailWidget(widget.file) @@ -160,10 +164,10 @@ class _PersonFaceWidgetState extends State { ); return cropMap?[face.faceID]; } catch (e, s) { - log( + _logger.severe( "Error getting cover face for person: ${widget.personId} and cluster ${widget.clusterID}", - error: e, - stackTrace: s, + e, + s, ); return null; } From 05fc91576a034a9813bb332223b2155b8f193bcc Mon Sep 17 00:00:00 2001 From: laurenspriem Date: Wed, 29 Jan 2025 14:02:35 +0530 Subject: [PATCH 2/2] [mob][photos] More logs --- mobile/lib/ui/viewer/file_details/face_widget.dart | 11 +++++++++-- mobile/lib/ui/viewer/people/people_page.dart | 4 +--- mobile/lib/ui/viewer/people/save_or_edit_person.dart | 3 +-- .../ui/viewer/search/result/person_face_widget.dart | 2 +- 4 files changed, 12 insertions(+), 8 deletions(-) diff --git a/mobile/lib/ui/viewer/file_details/face_widget.dart b/mobile/lib/ui/viewer/file_details/face_widget.dart index 06784105e8..0b55f30628 100644 --- a/mobile/lib/ui/viewer/file_details/face_widget.dart +++ b/mobile/lib/ui/viewer/file_details/face_widget.dart @@ -5,6 +5,7 @@ import "dart:typed_data"; import "package:flutter/cupertino.dart"; import "package:flutter/foundation.dart" show kDebugMode; import "package:flutter/material.dart"; +import "package:logging/logging.dart"; import "package:photos/db/ml/db.dart"; import "package:photos/generated/l10n.dart"; import "package:photos/models/base/id.dart"; @@ -50,6 +51,8 @@ class FaceWidget extends StatefulWidget { class _FaceWidgetState extends State { bool isJustRemoved = false; + final _logger = Logger("FaceWidget"); + @override Widget build(BuildContext context) { final bool givenFaces = widget.faceCrops != null; @@ -266,7 +269,9 @@ class _FaceWidgetState extends State { ); } if (snapshot.hasError) { - log('Error getting face: ${snapshot.error}'); + _logger.severe( + 'Error getting face: ${snapshot.error} ${snapshot.stackTrace}', + ); } return const ClipRRect( borderRadius: BorderRadius.all(Radius.elliptical(16, 12)), @@ -296,7 +301,9 @@ class _FaceWidgetState extends State { isJustRemoved = !isJustRemoved; }); } catch (e, s) { - log("removing face/file from cluster from file info widget failed: $e, \n $s"); + _logger.severe( + "removing face/file from cluster from file info widget failed: $e, \n $s", + ); } } } diff --git a/mobile/lib/ui/viewer/people/people_page.dart b/mobile/lib/ui/viewer/people/people_page.dart index 73c2a2cfa5..044dd280b7 100644 --- a/mobile/lib/ui/viewer/people/people_page.dart +++ b/mobile/lib/ui/viewer/people/people_page.dart @@ -1,5 +1,4 @@ import "dart:async"; -import "dart:developer"; import 'package:flutter/material.dart'; import "package:logging/logging.dart"; @@ -102,7 +101,6 @@ class _PeoplePageState extends State { } Future> loadPersonFiles() async { - log("loadPersonFiles"); final result = await SearchService.instance .getClusterFilesForPersonID(_person.remoteID); if (result.isEmpty) { @@ -243,7 +241,7 @@ class _PeoplePageState extends State { ], ); } else if (snapshot.hasError) { - log("Error: ${snapshot.error} ${snapshot.stackTrace}}"); + _logger.severe("Error: ${snapshot.error} ${snapshot.stackTrace}}"); //Need to show an error on the UI here return const SizedBox.shrink(); } else { diff --git a/mobile/lib/ui/viewer/people/save_or_edit_person.dart b/mobile/lib/ui/viewer/people/save_or_edit_person.dart index a3563a6b4c..18c651c8bd 100644 --- a/mobile/lib/ui/viewer/people/save_or_edit_person.dart +++ b/mobile/lib/ui/viewer/people/save_or_edit_person.dart @@ -1,5 +1,4 @@ import 'dart:async'; -import "dart:developer" as dev; import "dart:io"; import "dart:math" show max; @@ -444,7 +443,7 @@ class _SaveOrEditPersonState extends State { stream: _getPersonsWithRecentFileStream(), builder: (context, snapshot) { if (snapshot.hasError) { - dev.log("Error: ${snapshot.error} ${snapshot.stackTrace}}"); + _logger.severe("Error in _getPersonItems: ${snapshot.error} ${snapshot.stackTrace}}"); if (kDebugMode) { return Column( mainAxisSize: MainAxisSize.min, diff --git a/mobile/lib/ui/viewer/search/result/person_face_widget.dart b/mobile/lib/ui/viewer/search/result/person_face_widget.dart index e5a01cac1f..4b0c7760a7 100644 --- a/mobile/lib/ui/viewer/search/result/person_face_widget.dart +++ b/mobile/lib/ui/viewer/search/result/person_face_widget.dart @@ -76,7 +76,7 @@ class _PersonFaceWidgetState extends State { } else { if (snapshot.hasError) { _logger.severe( - "Error getting cover face for person: ${snapshot.error}", + "Error getting cover face for person: ${snapshot.error} ${snapshot.stackTrace}}", ); } return widget.thumbnailFallback