import { useState, useRef } from 'react'; import { StatusBar } from 'expo-status-bar'; import { StyleSheet, View } from 'react-native'; import * as ImagePicker from 'expo-image-picker'; import { GestureHandlerRootView } from 'react-native-gesture-handler'; import * as MediaLibrary from 'expo-media-library'; import { captureRef } from 'react-native-view-shot'; import Button from './components/Button'; import ImageViewer from './components/ImageViewer'; import CircleButton from './components/CircleButton'; import IconButton from './components/IconButton'; import EmojiPicker from './components/EmojiPicker'; import EmojiList from './components/EmojiList'; import EmojiSticker from './components/EmojiSticker'; const PlaceholderImage = require('./assets/images/background-image.png'); export default function App() { const [isModalVisible, setIsModalVisible] = useState(false); const [showAppOptions, setShowAppOptions] = useState(false); const [pickedEmoji, setPickedEmoji] = useState(null); const [selectedImage, setSelectedImage] = useState(null); const [status, requestPermission] = MediaLibrary.usePermissions(); const imageRef = useRef(); if (status === null) { requestPermission(); } const pickImageAsync = async () => { let result = await ImagePicker.launchImageLibraryAsync({ allowsEditing: true, quality: 1, }); if (!result.canceled) { setSelectedImage(result.assets[0].uri); setShowAppOptions(true); } else { alert('You did not select any image.'); } }; const onReset = () => { setShowAppOptions(false); }; const onAddSticker = () => { setIsModalVisible(true); }; const onModalClose = () => { setIsModalVisible(false); }; const onSaveImageAsync = async () => { try { const localUri = await captureRef(imageRef, { height: 440, quality: 1, }); await MediaLibrary.saveToLibraryAsync(localUri); if (localUri) { alert("Saved!"); } } catch (e) { console.log(e); } }; return ( {pickedEmoji !== null ? ( ) : null} {showAppOptions ? ( ) : (