import { useNavigation } from '@react-navigation/native'; import { NativeStackNavigationProp } from '@react-navigation/native-stack'; import { PacketsData } from 'api/packets'; import AppText from 'components/AppText'; import React, { useCallback, useMemo } from 'react'; import { useTranslation } from 'react-i18next'; import { TouchableOpacity, View } from 'react-native'; import { PaymentStyle } from './style'; type WalletStackParamList = { PaymentMethod: { packets: PacketsData }; PaymentQrCode: { packets: PacketsData }; }; type LoginScreenNavigationProp = NativeStackNavigationProp; interface Props { packets: PacketsData; } const Payment = ({ packets }: Props) => { const navigation = useNavigation(); const { t } = useTranslation(); const handlePaymentPress = useCallback( (item: any) => { const isPaid = item.paymentStatus === 'PAYED' || item.paymentStatus === 'PENDING'; navigation.navigate(isPaid ? 'PaymentQrCode' : 'PaymentMethod', { packets: item, }); }, [navigation], ); const cardContainerStyle = useMemo( () => ({ flexDirection: 'row' as const, gap: 10, justifyContent: 'center' as const, alignItems: 'center' as const, }), [], ); const badgeStyle = useMemo( () => [PaymentStyle.badge, { backgroundColor: '#D32F2F' }], [], ); const renderPaymentCard = useCallback( (item: any) => { const isPaid = item.paymentStatus === 'PAYED' || item.paymentStatus === 'PENDING'; const cardStyle = [ PaymentStyle.card, { borderColor: isPaid ? '#4CAF50' : '#D32F2F', borderWidth: 1.5 }, ]; return ( handlePaymentPress(item)} key={item.id} > {item.packetName} {isPaid ? ( {t("To'langan")} ) : ( {t("To'lanmagan")} )} {t('Reys raqami')} {item.packetName} {t("Mahsulotlar og'irligi")} {item.weight} {t('Mahsulotlar soni')} {item.items.length} {t('Umumiy narxi')} {item.totalPrice} ); }, [handlePaymentPress, cardContainerStyle, badgeStyle, t], ); return ( {packets?.data.map(renderPaymentCard)} ); }; export default Payment;