From a3258f88b9c946422cc4df3f66a57fcaceb5b906 Mon Sep 17 00:00:00 2001 From: emergent-agent-e1 Date: Sat, 8 Nov 2025 21:35:29 +0000 Subject: [PATCH] auto-commit for 629c0ea7-912d-4360-a3b9-11a979f46bfb --- frontend/src/screens/HomeScreen.tsx | 50 +++++++++++++++++++++++++++-- 1 file changed, 47 insertions(+), 3 deletions(-) diff --git a/frontend/src/screens/HomeScreen.tsx b/frontend/src/screens/HomeScreen.tsx index 72c209ca..16af3b7b 100644 --- a/frontend/src/screens/HomeScreen.tsx +++ b/frontend/src/screens/HomeScreen.tsx @@ -22,16 +22,60 @@ function HomeTab() { const insets = useSafeAreaInsets(); const [profileImage, setProfileImage] = useState(null); - const pickImage = async () => { + const showImagePickerOptions = () => { + Alert.alert( + 'Change Profile Photo', + 'Choose an option', + [ + { + text: 'Take Photo', + onPress: takePhoto, + }, + { + text: 'Choose from Gallery', + onPress: pickImageFromGallery, + }, + { + text: 'Cancel', + style: 'cancel', + }, + ], + { cancelable: true } + ); + }; + + const takePhoto = async () => { + const permissionResult = await ImagePicker.requestCameraPermissionsAsync(); + + if (permissionResult.granted === false) { + Alert.alert('Permission Required', 'Camera permission is required!'); + return; + } + + const result = await ImagePicker.launchCameraAsync({ + allowsEditing: true, + aspect: [1, 1], + quality: 0.5, + base64: true, + }); + + if (!result.canceled && result.assets[0].base64) { + const base64Image = `data:image/jpeg;base64,${result.assets[0].base64}`; + setProfileImage(base64Image); + // TODO: Save to backend + } + }; + + const pickImageFromGallery = async () => { const permissionResult = await ImagePicker.requestMediaLibraryPermissionsAsync(); if (permissionResult.granted === false) { - Alert.alert('Permission Required', 'Permission to access camera roll is required!'); + Alert.alert('Permission Required', 'Gallery access is required!'); return; } const result = await ImagePicker.launchImageLibraryAsync({ - mediaTypes: ImagePicker.MediaTypeOptions.Images, + mediaTypes: ['images'], allowsEditing: true, aspect: [1, 1], quality: 0.5,