import React, { useState } from 'react'; import { TouchableOpacity, StyleSheet } from 'react-native'; import { DriverTips as DriverTipsController, useUtils, useLanguage, useConfig, } from 'ordering-components/native'; import { useTheme } from 'styled-components/native'; import { OButton, OInput, OText } from '../shared'; import { DTContainer, DTCard, DTWrapperTips, DTForm, DTLabel, DTWrapperInput } from './styles' const DriverTipsUI = (props: any) => { const { driverTip, driverTipsOptions, isMulti, isLoading, cart, carts, isDriverTipUseCustom, handlerChangeOption, isFixedPrice } = props; const [{ parsePrice }] = useUtils(); const theme = useTheme(); const [, t] = useLanguage(); const [{ configs }] = useConfig(); const [customTip, setCustomTip] = useState((!isMulti && isDriverTipUseCustom && !driverTipsOptions.includes(driverTip)) ?? false) const currentTip = customTip ? parseFloat(driverTip || 0) > 0 : (!customTip && !driverTipsOptions.includes(driverTip) && parseFloat(driverTip || 0)) > 0 const [value, setvalue] = useState(''); const style = StyleSheet.create({ semicircle: { borderRadius: 8 }, inputStyle: { flex: 1, borderRadius: 5, borderWidth: 1, borderColor: theme.colors.inputDisabled, marginRight: 10, height: 50 } }) const placeholderCurrency = !isFixedPrice ? `0%` : (configs?.currency_position?.value || 'left') === 'left' ? `${configs?.format_number_currency?.value}0` : `0${configs?.format_number_currency?.value}` const handleChangeDriverTip = (val: any) => { const tip = Number(val) if ((isNaN(tip) || tip < 0)) { setvalue(value) return } setvalue(val) } const multiCartTipsAmmout = carts?.reduce((total: any, cart: any) => { return total + parseFloat(cart?.driver_tip || 0) }, 0) return ( {t('CUSTOM_DRIVER_TIP_MESSAGE', '100% of these tips go directly to your driver')} {driverTipsOptions.map((option: any, i: number) => ( { if (!isLoading) { handlerChangeOption(option) setCustomTip(false) } }} > {`${isFixedPrice ? parsePrice(option) : `${option}%`}`} ))} {isDriverTipUseCustom && ( { !isLoading && setCustomTip(true) }} > {t('CUSTOM_TIP', 'Custom')} )} {customTip && ( { handlerChangeOption(value) setvalue('') }} /> )} {currentTip && ( {t('CURRENT_DRIVER_TIP_AMOUNT', 'Current driver tip amount')}{!isFixedPrice && ` (${driverTip}%)`}: {isFixedPrice ? parsePrice(multiCartTipsAmmout ?? driverTip) : parsePrice(multiCartTipsAmmout ?? cart?.driver_tip)} )} ) } export const DriverTips = (props: any) => { const driverTipsProps = { ...props, UIComponent: DriverTipsUI } return }