import React, { useState, useEffect } from "react"; import { View, Text, Image, ScrollView, TouchableHighlight, Dimensions, Appearance, Platform, } from "react-native"; import { useNavigation } from "@react-navigation/native"; import { product, userProduct } from "../../../redux/actions"; import { asyncAwesomeAlert } from "../../../utils/AsyncWrappers"; import { connect } from "react-redux"; import { Entypo } from "@expo/vector-icons"; import separate from "../../../utils/separate"; //components import Description from "./Description"; import LinkBox from "./LinkBox"; import Comments from "./Comments"; import ProductSpecifications from "../../../components/BottomSheetComponents/ProductSpecifications"; import ProductReview from "../../../components/BottomSheetComponents/ProductReview"; import ProductQuestion from "../../../components/BottomSheetComponents/ProductQuestion"; import Blur from "../../../components/Blur"; import ImageSlider from "../../../components/ImageSlider"; import Rates from "./Rates"; //style import tw from "tailwind-rn"; import fontSize from "../../../constants/fontSize"; import Colors from "../../../constants/Colors"; const { height, width } = Dimensions.get("window"); const ios = Platform.OS === "ios"; function Book({ book, grades, pushToCart, userId, userProductsLoading, userFavoriteLoading, mobile, userProducts, }) { const colorScheme = Appearance.getColorScheme(); const navigation = useNavigation(); const [type, setType] = useState(1); const [pageLoading, setPageLoading] = useState(false); const [imageSlider, setImageSlider] = useState(false); useEffect(() => { setPageLoading(true); setTimeout(() => { setPageLoading(false); }, 500); }, [type]); const physicalAvailabileInCart = React.useMemo(() => { return userProducts?.filter( (product) => product?.productId === book?.product[1]?.id )[0]; }, [userProducts, book]); const digitalAvailabileInCart = React.useMemo(() => { return userProducts?.filter( (product) => product?.productId === book?.product[0]?.id )[0]; }, [userProducts, book]); return ( {!mobile && } {(!book || userFavoriteLoading) && ( )} {imageSlider && } {book?.name} {"پایه" + " " + grades[book?.gradeId]} {book?.text} {" "} {book?.pagesNum + "\n" + "صفحه"} {" "} {"فیزیکی- دیجیتالی - ویدئو" + "\n" + "در دسترس"} {" "} {4.8 + "\n" + "امتیاز"} نسخه محصول را انتخاب کنید physicalAvailabileInCart ? asyncAwesomeAlert( "نتیجه", "این محصول قبلا به سبد خرید اضافه شده است.", { showCancelButton: false, } ) : pushToCart({ productId: book?.product[1]?.id, userId: userId, count: 1, }) } > <> خرید نسخه فیزیکی کتاب {separate(book?.product[1]?.price) + " " + "تومان"} digitalAvailabileInCart ? asyncAwesomeAlert( "خطا", "این محصول قبلا به سبد خرید اضافه شده است.", { showCancelButton: false, } ) : pushToCart({ productId: book?.product[0]?.id, userId: userId, count: 1, }) } > <> خرید نسخه دیجیتال کتاب {separate(book?.product[0]?.price) + " " + "تومان"} navigation.push("Sample", { id: book?.sampleFileId })} > مشاهده نمونه pushToCart({ productId: book?.product[2]?.id, userId: userId, count: 1, }) } > <> خرید دوره ویدئویی کتاب {separate(book?.product[2]?.price) + " " + "تومان"} navigation.navigate("Video", { id: book?.id })} > پیش نمایش {book?.product[type]?.description && ( )} } height={height / 2} /> } height={height / 2} /> } height={height / 2} /> {(product.rate || 4) && ( <> امتیازات و نظرات )} ); } const mapStateToProps = (state) => ({ userProducts: state.userProduct.list, userId: state.user.status?.id, userProductsLoading: state.userProduct.loading, userFavoriteLoading: state.userFavorite.loading, mobile: state.publicApi.mobile, }); const mapDispatchToProps = { pushToCart: userProduct.add, }; export default connect(mapStateToProps, mapDispatchToProps)(Book);