import React, { useState } from 'react'; import { StyleSheet, TouchableOpacity, View } from 'react-native'; import { useLanguage, useUtils } from 'ordering-components/native'; import { OrdersContainer, Card, Information, OrderInformation, BusinessInformation, Price, OptionTitle, Status, } from './styles'; import { useTheme } from 'styled-components/native'; import { getTextOrderStatus } from '../../utils'; import { OButton, OText } from '../shared' export const OrderListOption = (props: any) => { const { orders, titleContent, typeStyle, allowedOrderStatus, isLoadingReorder, handleReorder, onNavigationRedirect, } = props; const theme = useTheme(); const [, t] = useLanguage(); const [{ parseDate, parsePrice }] = useUtils(); const [reorderSelected, setReorderSelected] = useState(null); const [isReviewedOrders, setIsReviewedOrders] = useState>([]) const handleClickCard = (uuid: string) => { onNavigationRedirect && onNavigationRedirect('OrderDetails', { orderId: uuid }); }; const handleReviewState = (orderId: any) => { if (!orderId || isReviewedOrders.includes(orderId)) return setIsReviewedOrders([...isReviewedOrders, orderId]) } const handleClickOrderReview = (order: any) => { onNavigationRedirect && onNavigationRedirect('ReviewOrder', { order: { id: order?.id, business_id: order?.business_id, logo: order.business?.logo, driver: order?.driver, products: order?.products, review: order?.review, user_review: order?.user_review }, handleReviewState: handleReviewState }); }; const handleReorderClick = (id: number) => { setReorderSelected(id); handleReorder(id); }; const styles = StyleSheet.create({ reorderbutton: { height: 23, paddingLeft: 10, paddingRight: 10, borderRadius: 23, shadowOpacity: 0, backgroundColor: theme.colors.primaryContrast, borderWidth: 0, width: 80 }, reorderLoading: { width: 80, height: 23, borderRadius: 23, paddingHorizontal: 10, }, reviewButton: { width: 80, height: 23, maxHeight: 23, backgroundColor: theme.colors.white, alignItems: 'center', justifyContent: 'center', paddingHorizontal: 10, borderRadius: 23, borderWidth: 1, borderColor: theme.colors.primaryContrast, }, buttonText: { color: theme.colors.primary, fontSize: 10, marginLeft: 2, marginRight: 2, }, }); const OrderStyleOne = ({ order }: any) => ( handleClickCard(order?.uuid)} > {`${t('ORDER_NO', 'Order No')}.${order.id}`} {order?.delivery_datetime_utc ? parseDate(order?.delivery_datetime_utc) : parseDate(order?.delivery_datetime, { utc: false })} {getTextOrderStatus(order.status, t)?.value} {parsePrice(order?.summary?.total || order?.total)} ); const OrderStyleTwo = ({ order }: any) => ( handleClickCard(order?.uuid)} activeOpacity={1} style={{ flexDirection: 'row' }} > {`${t('ORDER_NO', 'Order No')}.${order.id}`} {order?.delivery_datetime_utc ? parseDate(order?.delivery_datetime_utc) : parseDate(order?.delivery_datetime, { utc: false })} {getTextOrderStatus(order.status, t)?.value} handleReorderClick(order.id)} isLoading={isLoadingReorder && order.id === reorderSelected} /> {allowedOrderStatus.includes(parseInt(order?.status)) && !order.review && !isReviewedOrders.includes(order?.id) && ( handleClickOrderReview(order)} style={styles.reviewButton}> {t('REVIEW', 'Review')} )} ) return ( <> {titleContent} {orders.length > 0 && orders.map((order: any, index: any) => ( {typeStyle === 1 && ( )} {typeStyle === 2 && ( )} ))} ); };