feat: add camera capture for trip and item images
All checks were successful
Luggage List Build / build-web (push) Successful in 31s
Luggage List Build / build-android (push) Successful in 6m24s
Luggage List Build / release (push) Successful in 14s

This commit is contained in:
2026-04-18 14:19:48 +02:00
parent bd500674a0
commit 2e45261354
5 changed files with 52 additions and 7 deletions

View File

@@ -169,6 +169,23 @@ export default function AppRoot() {
}
}
async function takeImage(onPicked) {
const perm = await ImagePicker.requestCameraPermissionsAsync();
if (!perm.granted) {
Alert.alert('Permission needed', 'Allow camera access to take photos.');
return;
}
const result = await ImagePicker.launchCameraAsync({
allowsEditing: false,
quality: 0.85,
});
if (!result.canceled && result.assets?.[0]?.uri) {
onPicked(result.assets[0].uri);
}
}
function createTrip() {
if (!tripForm.name.trim()) {
Alert.alert('Missing name', 'Trip name is required.');
@@ -526,6 +543,7 @@ export default function AppRoot() {
tripForm={tripForm}
updateTripForm={updateTripForm}
pickTripImage={() => pickImage((uri) => updateTripForm('imageUri', uri))}
takeTripImage={() => takeImage((uri) => updateTripForm('imageUri', uri))}
templateTrip={templateTrip}
createTrip={createTrip}
trips={data.trips}
@@ -587,6 +605,7 @@ export default function AppRoot() {
setItemModalVisible={setItemModalVisible}
updateItemForm={updateItemForm}
pickItemImage={() => pickImage((uri) => updateItemForm('imageUri', uri))}
takeItemImage={() => takeImage((uri) => updateItemForm('imageUri', uri))}
saveItemFromModal={saveItemFromModal}
/>