import React, { useState } from 'react'; import { useLanguage, useUtils } from 'ordering-components/native'; import { useTheme } from 'styled-components/native'; import { StyleSheet, TouchableOpacity, ScrollView, View } from 'react-native'; import { OButton, OIcon, OText } from '../shared'; import { Card, Logo, Information, MyOrderOptions, Status, WrappButton, } from './styles'; import { PreviousOrdersParams } from '../../types'; import moment from 'moment'; export const PreviousOrders = (props: PreviousOrdersParams) => { const { orders, pagination, onNavigationRedirect, loadMoreOrders, getOrderStatus, handleReorder, reorderLoading, orderID, } = props; const theme = useTheme(); const styles = StyleSheet.create({ logo: { borderRadius: 10, width: 64, height: 64, }, reorderbutton: { height: 23, paddingLeft: 10, paddingRight: 10, borderRadius: 23, shadowOpacity: 0, backgroundColor: theme.colors.primaryContrast, borderWidth: 0, }, reorderLoading: { width: 80, height: 40, borderRadius: 10, }, reviewButton: { 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 [, t] = useLanguage(); const [reorderSelected, setReorderSelected] = useState(null); const [{ parseDate, optimizeImage }] = useUtils(); const allowedOrderStatus = [1, 2, 5, 6, 10, 11, 12]; const [isReviewedOrders, setIsReviewedOrders] = useState>([]) const handleClickViewOrder = (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 formatDate = (date: string, option?: any) => { return option?.utc ? moment.utc(date).format('DD/MM/YY \u2022 h:m a') : moment(date).format('DD/MM/YY \u2022 h:m a'); }; const handleReorderClick = (id: number) => { setReorderSelected(id); handleReorder(id); }; return ( orders.length === 0 ? null : ( {orders.map((order: any) => ( handleClickViewOrder(order?.uuid)} activeOpacity={0.7} style={{ flexDirection: 'row' }} key={order.id}> {/* {!!order.business?.logo && ( )} */} {`${t('ORDER_NO', 'Order No')}.${order.id}`} {order?.delivery_datetime_utc ? formatDate(order?.delivery_datetime_utc) : formatDate(order?.delivery_datetime, { utc: false })} {getOrderStatus(order.status)?.value} handleReorderClick(order.id)} isLoading={reorderLoading && order.id === reorderSelected} /> {allowedOrderStatus.includes(parseInt(order?.status)) && !order.review && !isReviewedOrders.includes(order?.id) && ( handleClickOrderReview(order)} style={styles.reviewButton}> {t('REVIEW', 'Review')} )} ))} {pagination.totalPages && pagination.currentPage < pagination.totalPages && ( )} ) ); };