import React, { useState, useEffect } from 'react' import { PanResponder, StyleSheet, useWindowDimensions, View } from 'react-native' import MaterialComIcon from 'react-native-vector-icons/MaterialCommunityIcons' import { UpsellingPage as UpsellingPageController, useUtils, useLanguage } from 'ordering-components/native' import { OText, OIcon, OModal, OBottomPopup, OButton } from '../shared' import { UpsellingProductsParams } from '../../types' import { Container, UpsellingContainer, Item, Details, AddButton, CloseUpselling } from './styles' import { ProductForm } from '../ProductForm'; import { useTheme } from 'styled-components/native' import { useSafeAreaInsets } from 'react-native-safe-area-context' import NavBar from '../NavBar' const UpsellingProductsUI = (props: UpsellingProductsParams) => { const { isCustomMode, upsellingProducts, business, handleUpsellingPage, openUpselling, canOpenUpselling, setCanOpenUpselling } = props const { height, width } = useWindowDimensions(); const { bottom, top } = useSafeAreaInsets(); const theme = useTheme(); const styles = StyleSheet.create({ imageStyle: { width: ((width - 80) * 0.5) - 40, height: ((width - 80) * 0.5) - 40, resizeMode: 'cover', borderRadius: 3 }, closeUpsellingButton: { borderRadius: 3, borderColor: theme.colors.primary, backgroundColor: theme.colors.primary, height: 42, } }) const [actualProduct, setActualProduct] = useState(null) const [modalIsOpen, setModalIsOpen] = useState(false) const [productSorts, setSorts] = useState([]); const [{ parsePrice }] = useUtils() const [, t] = useLanguage() useEffect(() => { if (!isCustomMode) { if (upsellingProducts?.products?.length && !upsellingProducts.loading) { setCanOpenUpselling && setCanOpenUpselling(true) } if ((!upsellingProducts?.products?.length && !upsellingProducts.loading && !canOpenUpselling && openUpselling) || (!upsellingProducts?.products?.length && !upsellingProducts.loading && openUpselling)) { handleUpsellingPage && handleUpsellingPage() } } }, [upsellingProducts.loading, upsellingProducts?.products.length]) const handleFormProduct = (product: any) => { setActualProduct(product) setModalIsOpen(true) } const handleSaveProduct = () => { setActualProduct(null) setModalIsOpen(false) } // useEffect(() => { // if (upsellingProducts?.products.length > 0) { // const ary = []; // while (upsellingProducts?.products.length > 0) { // ary.push(upsellingProducts?.products.splice(0, 2)); // } // setSorts(ary); // } // }, [upsellingProducts?.products]); const UpsellingLayout = () => { return ( { !upsellingProducts.loading && ( <> { !upsellingProducts.error ? upsellingProducts.products.map((product: any, idx: number) => ( {idx % 2 == 1 && ( handleFormProduct(upsellingProducts.products[idx - 1])}>
{parsePrice(upsellingProducts.products[idx - 1].price)} {upsellingProducts.products[idx - 1].name} {upsellingProducts.products[idx - 1]?.description}
handleFormProduct(upsellingProducts.products[idx - 1])}>
handleFormProduct(upsellingProducts.products[idx])}>
{parsePrice(upsellingProducts.products[idx].price)} {upsellingProducts.products[idx].name} {upsellingProducts.products[idx]?.description}
handleFormProduct(upsellingProducts.products[idx])}>
)} {upsellingProducts.products.length % 2 == 1 && upsellingProducts.products.length - idx === 1 && ( handleFormProduct(upsellingProducts.products[upsellingProducts.products.length - 1])}>
{parsePrice(upsellingProducts.products[upsellingProducts.products.length - 1].price)} {upsellingProducts.products[upsellingProducts.products.length - 1].name} {upsellingProducts.products[upsellingProducts.products.length - 1]?.description}
handleFormProduct(upsellingProducts.products[upsellingProducts.products.length - 1])}>
)}
)) : ( {upsellingProducts.message} ) } ) }
) } return ( <> {isCustomMode ? ( ) : ( <> {!canOpenUpselling || upsellingProducts?.products?.length === 0 ? null : ( <> {!modalIsOpen && ( handleUpsellingPage()} title={t('WANT_SOMETHING_ELSE', 'Do you want something else?')} > handleUpsellingPage()} textStyle={{ color: theme.colors.white, fontSize: 14, lineHeight: 21, fontWeight: '500' }} /> )} )} )} setModalIsOpen(false)} entireModal customClose > {actualProduct && ( handleSaveProduct()} onClose={() => setModalIsOpen(false)} /> )} ) } export const UpsellingProducts = (props: UpsellingProductsParams) => { const upsellingProductsProps = { ...props, UIComponent: UpsellingProductsUI } return ( ) }