auto-claude: subtask-2-3 - Create PhotoCaptureDialog component for photo confirmation

Add PhotoCaptureDialog widget component that:
- Shows captured photo preview with proper constraints
- Displays confirmation message using delivery name
- Provides Cancel and Upload action buttons
- Uses theme-aware styling with colorScheme
- Handles image loading errors gracefully
- Includes proper i18n support (EN/FR)

Added localization keys:
- confirmPhoto
- uploadPhotoConfirmation (with name placeholder)
- uploadingPhoto
- photoUploadSuccess
- photoUploadFailed
- cameraError
- uploadError
- serverError
- retake

Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
2026-01-20 11:30:49 -05:00
parent bcc938fde1
commit e5f267b4f7
6 changed files with 317 additions and 2 deletions
+30 -1
View File
@@ -117,5 +117,34 @@
}
},
"noNotesMessage": "No notes attached to this delivery",
"close": "Close"
"close": "Close",
"confirmPhoto": "Confirm Photo",
"uploadPhotoConfirmation": "Upload this photo for {name}?",
"@uploadPhotoConfirmation": {
"placeholders": {
"name": {"type": "String"}
}
},
"uploadingPhoto": "Uploading photo...",
"photoUploadSuccess": "Photo uploaded successfully",
"photoUploadFailed": "Upload failed: {statusCode}",
"@photoUploadFailed": {
"placeholders": {
"statusCode": {"type": "int"}
}
},
"cameraError": "Camera error: {message}",
"@cameraError": {
"placeholders": {
"message": {"type": "String"}
}
},
"uploadError": "Upload error: {message}",
"@uploadError": {
"placeholders": {
"message": {"type": "String"}
}
},
"serverError": "Server error - Please contact support",
"retake": "Retake"
}
+30 -1
View File
@@ -117,5 +117,34 @@
}
},
"noNotesMessage": "Aucune note associée à cette livraison",
"close": "Fermer"
"close": "Fermer",
"confirmPhoto": "Confirmer la photo",
"uploadPhotoConfirmation": "Telecharger cette photo pour {name}?",
"@uploadPhotoConfirmation": {
"placeholders": {
"name": {"type": "String"}
}
},
"uploadingPhoto": "Telechargement de la photo...",
"photoUploadSuccess": "Photo telechargee avec succes",
"photoUploadFailed": "Echec du telechargement: {statusCode}",
"@photoUploadFailed": {
"placeholders": {
"statusCode": {"type": "int"}
}
},
"cameraError": "Erreur de camera: {message}",
"@cameraError": {
"placeholders": {
"message": {"type": "String"}
}
},
"uploadError": "Erreur de telechargement: {message}",
"@uploadError": {
"placeholders": {
"message": {"type": "String"}
}
},
"serverError": "Erreur serveur - Veuillez contacter le support",
"retake": "Reprendre"
}
+54
View File
@@ -577,6 +577,60 @@ abstract class AppLocalizations {
/// In en, this message translates to:
/// **'Close'**
String get close;
/// No description provided for @confirmPhoto.
///
/// In en, this message translates to:
/// **'Confirm Photo'**
String get confirmPhoto;
/// No description provided for @uploadPhotoConfirmation.
///
/// In en, this message translates to:
/// **'Upload this photo for {name}?'**
String uploadPhotoConfirmation(String name);
/// No description provided for @uploadingPhoto.
///
/// In en, this message translates to:
/// **'Uploading photo...'**
String get uploadingPhoto;
/// No description provided for @photoUploadSuccess.
///
/// In en, this message translates to:
/// **'Photo uploaded successfully'**
String get photoUploadSuccess;
/// No description provided for @photoUploadFailed.
///
/// In en, this message translates to:
/// **'Upload failed: {statusCode}'**
String photoUploadFailed(int statusCode);
/// No description provided for @cameraError.
///
/// In en, this message translates to:
/// **'Camera error: {message}'**
String cameraError(String message);
/// No description provided for @uploadError.
///
/// In en, this message translates to:
/// **'Upload error: {message}'**
String uploadError(String message);
/// No description provided for @serverError.
///
/// In en, this message translates to:
/// **'Server error - Please contact support'**
String get serverError;
/// No description provided for @retake.
///
/// In en, this message translates to:
/// **'Retake'**
String get retake;
}
class _AppLocalizationsDelegate
+35
View File
@@ -267,4 +267,39 @@ class AppLocalizationsEn extends AppLocalizations {
@override
String get close => 'Close';
@override
String get confirmPhoto => 'Confirm Photo';
@override
String uploadPhotoConfirmation(String name) {
return 'Upload this photo for $name?';
}
@override
String get uploadingPhoto => 'Uploading photo...';
@override
String get photoUploadSuccess => 'Photo uploaded successfully';
@override
String photoUploadFailed(int statusCode) {
return 'Upload failed: $statusCode';
}
@override
String cameraError(String message) {
return 'Camera error: $message';
}
@override
String uploadError(String message) {
return 'Upload error: $message';
}
@override
String get serverError => 'Server error - Please contact support';
@override
String get retake => 'Retake';
}
+35
View File
@@ -267,4 +267,39 @@ class AppLocalizationsFr extends AppLocalizations {
@override
String get close => 'Fermer';
@override
String get confirmPhoto => 'Confirmer la photo';
@override
String uploadPhotoConfirmation(String name) {
return 'Telecharger cette photo pour $name?';
}
@override
String get uploadingPhoto => 'Telechargement de la photo...';
@override
String get photoUploadSuccess => 'Photo telechargee avec succes';
@override
String photoUploadFailed(int statusCode) {
return 'Echec du telechargement: $statusCode';
}
@override
String cameraError(String message) {
return 'Erreur de camera: $message';
}
@override
String uploadError(String message) {
return 'Erreur de telechargement: $message';
}
@override
String get serverError => 'Erreur serveur - Veuillez contacter le support';
@override
String get retake => 'Reprendre';
}