-
Notifications
You must be signed in to change notification settings - Fork 0
Expo Image Picker
andreiradchenko edited this page Feb 28, 2024
·
2 revisions
I've used expo-image-picker and @expo/react-native-action-sheet to take photo or pick image for avatar on Registration screen, Profile screen and CreatePost screen.
To implement image-picker on CreatePost screen you need to do next steps:
- Import dependencies:
import { NoPermissionView } from '../../../../components/NoPermissionView';
import {
useActionSheetMenu,
usePermissions,
useImagePickerActions,
} from '../../../../hooks';- To get permissions for Camera, Location and MediaLibrary I'v used
<NoPermissionView/>component. Return it if no permission allowed.
if (
(requiredPermission === 'Camera' && !cameraPermission.granted) ||
(requiredPermission === 'Location' && !locationPermission.granted) ||
(requiredPermission === 'Media Library' && !mediaLibraryPermission.granted)
) {
return (
<NoPermissionView
requiredPermission={requiredPermission}
permission={permissionsList[requiredPermission].permission}
requestPermission={permissionsList[requiredPermission].request}
/>
);
}- Implement action sheet functionality and tailor it with photo and location state of screen component
const [photo, setPhoto] = useState(null);
const [location, setLocation] = useState(null);
const {
cameraPermission,
mediaLibraryPermission,
locationPermission,
permissionsList,
} = usePermissions();
const { takePhoto, pickImage, requiredPermission, isLocationLoading } =
useImagePickerActions({
setPhoto,
setLocation,
cameraPermission,
mediaLibraryPermission,
locationPermission,
});
const showActionSheetMenu = useActionSheetMenu(takePhoto, pickImage);- Hook up
showActionSheetMenuto the button in form
<Styled.UploadImageButton
activeOpacity={0.6}
isImageSelected={!!photo}
onPress={showActionSheetMenu}
>
<PhotoSvg isImageSelected={!!photo} />
</Styled.UploadImageButton>