import React, { useState, useEffect, useCallback } from "react"; import { View, Text, ScrollView, Dimensions, StyleSheet, Pressable, SafeAreaView, StatusBar, LayoutAnimation, KeyboardAvoidingView, 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"; //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 { height } = Dimensions.get("window"); const PriceStatus = ({ name, value, type, theme }) => { return ( {name} {value} تومان ); }; function ShoppingCart({ userId, list, factorInfo, getList, getFactorInfo, loading, payFactor, theme, }) { const navigation = useNavigation(); const [position, setPosition] = useState("100%"); const isEmpty = React.useMemo(() => { return list?.filter((product) => product?.condition < 2)?.length === 0; }, [list]); const hasPhysical = React.useMemo(() => { return ( list?.filter( (product) => product?.condition < 2 && product?.productType === 2 )?.length !== 0 ); }, [list]); useEffect(() => { 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 ? ( ) : null )} جمع کل سبد خرید {isEmpty ? 0 : separate(factorInfo?.payPrice || "")} تومان هزینه ارسال کالا پس از تعیین محل آدرس مشخص می‌شود isEmpty ? asyncAwesomeAlert("خطا", "سبد خرید شما خالی است.", { showCancelButton: false, }) : hasPhysical ? navigation.navigate("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, theme: state.publicApi.theme, }); 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: 120, position: "relative", }, container: { flexDirection: "column", paddingVertical: 5, paddingHorizontal: 16, }, });