import React, { useState, useEffect, useCallback } from "react"; import { View, Text, ScrollView, Dimensions, StyleSheet, Pressable, SafeAreaView, StatusBar, LayoutAnimation, Appearance, } from "react-native"; import { connect } from "react-redux"; import { userProduct, userFactor } from "../../redux/actions"; import { Ionicons } from "@expo/vector-icons"; import { useNavigation } from "@react-navigation/native"; import { asyncAwesomeAlert } from "../../utils/AsyncWrappers"; import separate from "../../utils/separate"; import * as Linking from "expo-linking"; //components import Product from "./components/Product"; import Code from "./components/Code"; import CustomPressable from "../../components/Pressable"; import Navbar from "../../components/Navbar"; import Drawer from "../../components/Drawer"; import Empty from "../../components/Empty"; //style import fontSize from "../../constants/fontSize"; import Colors from "../../constants/Colors"; import tw from "tailwind-rn"; const { width, height } = Dimensions.get("window"); const PriceStatus = ({ name, value, type }) => { const colorScheme = Appearance.getColorScheme(); return ( {name} {value} تومان ); }; function ShoppingCart({ userId, list, factorInfo, getList, getFactorInfo, loading, payFactor, }) { const navigation = useNavigation(); const colorScheme = Appearance.getColorScheme(); const [position, setPosition] = useState("100%"); const isEmpty = list.filter((product) => product.condition < 2).length === 0; const hasPhysical = list.filter((product) => product.condition < 2 && product.productType === 2) .length !== 0; useEffect(() => { if (list.length === 0) { getList(); } getFactorInfo({ userId }); }, []); const setBoxPosition = useCallback(() => { LayoutAnimation.configureNext(LayoutAnimation.Presets.easeInEaseOut); setPosition(position === "100%" ? "0%" : "100%"); }, [userId]); return ( {list?.filter((product) => product?.condition < 2)?.length ? ( {list ?.sort((a, b) => a?.id - b?.id) ?.map( (product, index) => product.condition < 2 && ( ) )} جمع کل سبد خرید {isEmpty ? 0 : separate(factorInfo?.payPrice || '')} تومان هزینه ارسال کالا پس از تعیین محل آدرس مشخص می‌شود isEmpty ? asyncAwesomeAlert("خطا", "سبد خرید شما خالی است.", { showCancelButton: false, }) : hasPhysical ? navigation.push("DeliveryForm") : payFactor({ userId }) } /> ) : ( navigation.navigate("Products")} /> )} ); } const mapStateToProps = (state) => ({ list: state.userProduct.list, payPrice: state.userProduct.sum, factorInfo: state.userFactor.info, userId: state.user.status?.id, hasPhysical: state.userProduct.hasPhysical, loading: state.userProduct.loading, }); const mapDispatchToProps = { getList: userProduct.list, getInfo: userProduct.info, getFactorInfo: userFactor.info, payFactor: userFactor.payment, }; export default connect(mapStateToProps, mapDispatchToProps)(ShoppingCart); const styles = StyleSheet.create({ contentContainerStyle: { paddingBottom: 100, position: "relative", }, container: { backgroundColor: "white", flexDirection: "column", paddingVertical: 5, paddingHorizontal: 16, }, });