import React, { useState } from 'react'; import { TouchableOpacity, StyleSheet, ActivityIndicator } from 'react-native'; import MaterialCommunityIcon from 'react-native-vector-icons/MaterialCommunityIcons'; import { DriverTips as DriverTipsController, useUtils, useLanguage, useConfig, useOrder } from 'ordering-components/native'; import { OButton, OInput, OText } from '../shared'; import { DTContainer, DTCard, DTWrapperTips, DTForm, DTLabel, DTWrapperInput } from './styles' import { useTheme } from 'styled-components/native'; const DriverTipsUI = (props: any) => { const { driverTip, driverTipsOptions, optionSelected, isFixedPrice, isDriverTipUseCustom, handlerChangeOption } = props; const theme = useTheme(); const style = StyleSheet.create({ inputStyle: { flex: 1, borderWidth: 1, borderRadius: 0, borderColor: theme.colors.disabled, marginRight: 10 } }) const [{ parsePrice }] = useUtils(); const [, t] = useLanguage(); const [{ configs }] = useConfig(); const [{loading}] = useOrder() const [value, setvalue] = useState(0); const [valueOption,setValueOption] = useState(0) const placeholderCurrency = (configs?.currency_position?.value || 'left') === 'left' ? `${configs?.format_number_currency?.value}0` : `0${configs?.format_number_currency?.value}` const handleChangeDriverTip = (val: any) => { let tip = parseFloat(val) tip = isNaN(tip) ? 0 : tip setvalue(tip) } const handleChangeOptionCustom = (val : any) => { setValueOption(val) handlerChangeOption(val) } return ( {!isDriverTipUseCustom ? ( <> {driverTipsOptions.map((option: any, i: number) => ( handleChangeOptionCustom(option)} > {loading && valueOption === option ? ( ) : ( {`${isFixedPrice ? parsePrice(option) : `${option}%`}`} )} {option === optionSelected ? ( ) : ( )} ))} {!driverTipsOptions.includes(driverTip) && driverTip > 0 && ( {t('CUSTOM_DRIVER_TIP_AMOUNT', 'The driver\'s current tip comes from a custom option')} )} ) : ( {t('CUSTOM_DRIVER_TIP_MESSAGE', '100% of these tips go directly to your driver')} 0 && value !== driverTip) || !value} style={{ borderRadius: 0 }} onClick={() => { handlerChangeOption(value) setvalue(0) }} /> {parseFloat(driverTip || 0) > 0 && ( {t('CURRENT_DRIVER_TIP_AMOUNT', 'Current driver tip amount')}: {parsePrice(driverTip)} )} )} ) } export const DriverTips = (props: any) => { const driverTipsProps = { ...props, UIComponent: DriverTipsUI } return }