import React,{ useState, useEffect } from 'react' import { StyleSheet, 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, OButton } from '../shared' import { UpsellingProductsParams } from '../../types' import { Container, Item, ItemContent, Details, AddButton, CloseUpselling } from './styles' import { ProductForm } from '../ProductForm'; import { useTheme } from 'styled-components/native' const UpsellingProductsUI = (props: UpsellingProductsParams) => { const { isCustomMode, upsellingProducts, business, handleUpsellingPage, openUpselling, canOpenUpselling, setCanOpenUpselling } = props const theme = useTheme(); const styles = StyleSheet.create({ imageStyle: { width: 60, height: 60, resizeMode: 'cover' }, closeUpsellingButton: { borderRadius: 0, borderColor: theme.colors.primary, backgroundColor: theme.colors.primary, borderWidth: 1, height: 48, marginBottom: 10 }, upsellingModal: { height: '50%', top: 250 } }) const [actualProduct, setActualProduct] = useState(null) const [modalIsOpen, setModalIsOpen] = useState(false) 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) } const UpsellingLayout = () => { return ( {t('WANT_SOMETHING_ELSE', 'Do you want something else?')} { !upsellingProducts.loading && ( <> { !upsellingProducts.error ? upsellingProducts.products.map((product: any) => (
{product.name} {parsePrice(product.price)}
handleFormProduct(product)}> {t('ADD_PRODUCT', 'Add product')}
)) : ( {upsellingProducts.message} ) } ) }
) } return ( <> {isCustomMode ? ( ) : ( <> {!canOpenUpselling || upsellingProducts?.products?.length === 0 ? null : ( <> {!modalIsOpen && ( handleUpsellingPage()} > handleUpsellingPage()} /> )} )} )} setModalIsOpen(false)} entireModal customClose > {actualProduct && ( handleSaveProduct()} onClose={() => setModalIsOpen(false)} /> )} ) } export const UpsellingProducts = (props : UpsellingProductsParams) => { const upsellingProductsProps = { ...props, UIComponent: UpsellingProductsUI } return ( ) }