import React, { useEffect, useRef } from 'react'; import { useTranslation } from 'react-i18next'; import { ActivityIndicator, Animated, Dimensions, StyleSheet, Text, TouchableOpacity, TouchableWithoutFeedback, View, } from 'react-native'; import { useSafeAreaInsets } from 'react-native-safe-area-context'; import Check from 'svg/Check'; import CreditCard from 'svg/CreditCard'; import Usd from 'svg/Dollar'; import { PaymentStyle } from '../../payment/ui/style'; const SCREEN_HEIGHT = Dimensions.get('window').height; interface ModalPayProps { isModalVisible: boolean; setModalVisible: React.Dispatch>; selectedId: 'card' | 'pay' | null; setSelectedId: React.Dispatch>; cardModal: boolean; setCardModal: React.Dispatch>; payModal: boolean; setPayModal: React.Dispatch>; success: boolean; setSuccess: React.Dispatch>; } const ModalPay = ({ isModalVisible, setModalVisible, selectedId, setSelectedId, setCardModal, setPayModal, }: ModalPayProps) => { const translateY = useRef(new Animated.Value(SCREEN_HEIGHT)).current; const opacity = useRef(new Animated.Value(0)).current; const { bottom } = useSafeAreaInsets(); const [load, setLoad] = React.useState(false); const { t } = useTranslation(); useEffect(() => { if (isModalVisible) { Animated.parallel([ Animated.timing(translateY, { toValue: 0, duration: 300, useNativeDriver: true, }), Animated.timing(opacity, { toValue: 1, duration: 300, useNativeDriver: true, }), ]).start(); } else { Animated.parallel([ Animated.timing(translateY, { toValue: SCREEN_HEIGHT, duration: 300, useNativeDriver: true, }), Animated.timing(opacity, { toValue: 0, duration: 200, useNativeDriver: true, }), ]).start(); } }, [isModalVisible]); const handleBackdropPress = () => { setModalVisible(false); setSelectedId(null); }; const handlePayment = () => { setLoad(true); setTimeout(() => { if (selectedId === 'pay') setPayModal(true); if (selectedId === 'card') setCardModal(true); setModalVisible(false); setSelectedId(null); setLoad(false); }, 200); }; if (!isModalVisible) return null; return ( {/* CARD OPTION */} setSelectedId('card')} > {t('Bank kartasi')} {selectedId === 'card' && ( )} {/* CASH OPTION */} setSelectedId('pay')} > {t('Naqt pul')} {selectedId === 'pay' && ( )} {/* BUTTON */} {load ? ( ) : ( {t("To'lash")} )} ); }; export default ModalPay; const styles = StyleSheet.create({ overlay: { position: 'absolute', top: 0, left: 0, right: 0, backgroundColor: 'rgba(0,0,0,0.4)', justifyContent: 'flex-end', zIndex: 30, }, modalContent: { backgroundColor: '#F3FAFF', padding: 20, borderTopLeftRadius: 20, borderTopRightRadius: 20, minHeight: 250, gap: 10, }, option: { flexDirection: 'row', justifyContent: 'space-between', borderRadius: 10, gap: 10, alignItems: 'center', padding: 20, }, });