import React, { useState } from 'react'; import { StyleSheet, TouchableOpacity, FlatList, RefreshControl } from 'react-native'; import FastImage from 'react-native-fast-image'; import { useTheme } from 'styled-components/native'; import { useLanguage, useUtils } from 'ordering-components/native'; import { Card, Logo, Information, Header, Badge } from './styles'; import { OIcon, OText } from '../shared'; import { PreviousMessagesParams } from '../../types'; import { FooterComponent } from './FooterMessageComponent'; export const PreviousMessages = (props: PreviousMessagesParams) => { const { orders, onNavigationRedirect, setOrders, getOrders, pagination, loading, reload, tabs, loadMore, tabsFilter, error } = props; const [, t] = useLanguage(); const theme = useTheme(); const [{ parseDate, optimizeImage }] = useUtils(); const [refreshing] = useState(false); const handlePressOrder = (order: any) => { const uuid = order?.id; onNavigationRedirect && onNavigationRedirect('OrderMessage', { orderId: uuid, setOrders }); }; const getOrderStatus = (s: string) => { const status = parseInt(s); const orderStatus = [ { key: 0, value: t('PENDING', 'Pending'), slug: 'PENDING', percentage: 0.25, }, { key: 1, value: t('COMPLETED', 'Completed'), slug: 'COMPLETED', percentage: 1, }, { key: 2, value: t('REJECTED', 'Rejected'), slug: 'REJECTED', percentage: 0, }, { key: 3, value: t('DRIVER_IN_BUSINESS', 'Driver in business'), slug: 'DRIVER_IN_BUSINESS', percentage: 0.6, }, { key: 4, value: t('PREPARATION_COMPLETED', 'Preparation Completed'), slug: 'PREPARATION_COMPLETED', percentage: 0.7, }, { key: 5, value: t('REJECTED', 'Rejected'), slug: 'REJECTED_BY_BUSINESS', percentage: 0, }, { key: 6, value: t('REJECTED_BY_DRIVER', 'Rejected by Driver'), slug: 'REJECTED_BY_DRIVER', percentage: 0, }, { key: 7, value: t('ACCEPTED_BY_BUSINESS', 'Accepted by business'), slug: 'ACCEPTED_BY_BUSINESS', percentage: 0.35, }, { key: 8, value: t('ACCEPTED_BY_DRIVER', 'Accepted by driver'), slug: 'ACCEPTED_BY_DRIVER', percentage: 0.45, }, { key: 9, value: t('PICK_UP_COMPLETED_BY_DRIVER', 'Pick up completed by driver'), slug: 'PICK_UP_COMPLETED_BY_DRIVER', percentage: 0.8, }, { key: 10, value: t('PICK_UP_FAILED_BY_DRIVER', 'Pick up Failed by driver'), slug: 'PICK_UP_FAILED_BY_DRIVER', percentage: 0, }, { key: 11, value: t( 'DELIVERY_COMPLETED_BY_DRIVER', 'Delivery completed by driver', ), slug: 'DELIVERY_COMPLETED_BY_DRIVER', percentage: 1, }, { key: 12, value: t('DELIVERY_FAILED_BY_DRIVER', 'Delivery Failed by driver'), slug: 'DELIVERY_FAILED_BY_DRIVER', percentage: 0, }, { key: 13, value: t('PREORDER', 'PreOrder'), slug: 'PREORDER', percentage: 0, }, { key: 14, value: t('ORDER_NOT_READY', 'Order not ready'), slug: 'ORDER_NOT_READY', percentage: 0, }, { key: 15, value: t( 'ORDER_PICKEDUP_COMPLETED_BY_CUSTOMER', 'Order picked up completed by customer', ), slug: 'ORDER_PICKEDUP_COMPLETED_BY_CUSTOMER', percentage: 100, }, { key: 16, value: t('CANCELLED_BY_CUSTOMER', 'Cancelled by customer'), slug: 'CANCELLED_BY_CUSTOMER', percentage: 0, }, { key: 17, value: t( 'ORDER_NOT_PICKEDUP_BY_CUSTOMER', 'Order not picked up by customer', ), slug: 'ORDER_NOT_PICKEDUP_BY_CUSTOMER', percentage: 0, }, { key: 18, value: t( 'DRIVER_ALMOST_ARRIVED_TO_BUSINESS', 'Driver almost arrived to business', ), slug: 'DRIVER_ALMOST_ARRIVED_TO_BUSINESS', percentage: 0.15, }, { key: 19, value: t( 'DRIVER_ALMOST_ARRIVED_TO_CUSTOMER', 'Driver almost arrived to customer', ), slug: 'DRIVER_ALMOST_ARRIVED_TO_CUSTOMER', percentage: 0.9, }, { key: 20, value: t( 'ORDER_CUSTOMER_ALMOST_ARRIVED_BUSINESS', 'Customer almost arrived to business', ), slug: 'ORDER_CUSTOMER_ALMOST_ARRIVED_BUSINESS', percentage: 90, }, { key: 21, value: t( 'ORDER_CUSTOMER_ARRIVED_BUSINESS', 'Customer arrived to business', ), slug: 'ORDER_CUSTOMER_ARRIVED_BUSINESS', percentage: 95, }, { key: 22, value: t('ORDER_LOOKING_FOR_DRIVER', 'Looking for driver'), slug: 'ORDER_LOOKING_FOR_DRIVER', percentage: 35 }, { key: 23, value: t('ORDER_DRIVER_ON_WAY', 'Driver on way'), slug: 'ORDER_DRIVER_ON_WAY', percentage: 45 }, { key: 24, value: t('ORDER_DRIVER_WAITING_FOR_ORDER', 'Driver waiting for order'), slug: 'ORDER_DRIVER_WAITING_FOR_ORDER', percentage: 25 }, { key: 25, value: t('ORDER_ACCEPTED_BY_DRIVER_COMPANY', 'Accepted by driver company'), slug: 'ORDER_ACCEPTED_BY_DRIVER_COMPANY', percentage: 25 }, { key: 26, value: t('ORDER_DRIVER_ARRIVED_CUSTOMER', 'Driver arrived to customer'), slug: 'ORDER_DRIVER_ARRIVED_CUSTOMER', percentage: 80 } ]; const objectStatus = orderStatus.find(o => o.key === status); return objectStatus && objectStatus; }; const styles = StyleSheet.create({ cardButton: { flex: 1, minHeight: 64, marginBottom: 30, marginLeft: 3, }, icon: { borderRadius: 7.6, width: 75, height: 75, }, logo: { width: 78, height: 78, borderRadius: 25, shadowColor: 'rgba(0.0, 0.0, 0.0, 0.5)', shadowOffset: { width: 0, height: 1.5, }, shadowOpacity: 0.21, shadowRadius: 5, elevation: 7, justifyContent: 'center', alignItems: 'center', marginLeft: 3, }, title: { marginBottom: 6, fontFamily: 'Poppins', fontStyle: 'normal', fontWeight: '600', fontSize: 16, color: theme.colors.textGray, width: '85%' }, badge: { marginBottom: 6, fontFamily: 'Poppins', fontStyle: 'normal', fontWeight: 'normal', fontSize: 14, color: theme.colors.primary, }, date: { marginBottom: 6, fontFamily: 'Poppins', fontStyle: 'normal', fontWeight: 'normal', fontSize: 15, color: theme.colors.unselectText, }, orderType: { fontFamily: 'Poppins', fontStyle: 'normal', fontWeight: 'normal', color: theme.colors.orderTypeColor, } }); const MessageComponent = (props : any) => { const order = props.item return ( <> {!reload && !error && JSON.stringify(tabsFilter) === JSON.stringify(tabs[0].tags) && ( handlePressOrder(order)} style={styles.cardButton} activeOpacity={1}>
{order?.business?.name} {order?.unread_count > 0 && ( {order?.unread_count} )}
{t('INVOICE_ORDER_NO', 'Order No.') + order.id + ' ยท '} {order?.delivery_datetime_utc ? parseDate(order?.delivery_datetime_utc) : parseDate(order?.delivery_datetime, { utc: false })} {getOrderStatus(order?.status)?.value}
)} ) } return ( <> order?.id} showsVerticalScrollIndicator={false} style={{ flex: 1 }} refreshControl={ getOrders?.()} />} ListFooterComponent={} /> ); };