import React, { FC, useState } from 'react' import { Image, Text, TextInput, TouchableOpacity, View } from 'react-native' import R from '../../res' import Button from '../button/Button' import s from './styles' import { IPromoCodeProps } from './types' const PromoCode: FC = ({ onPressApply, promoCodeValidationMessage, isPromoCodeValid, styles, texts, isAccessCodeEnabled, closeButtonIcon, }) => { const [isActive, setIsActive] = useState(false) const [promoCode, setPromoCode] = useState('') const activate = () => setIsActive(true) const deactivate = (): string => { const code = promoCode setIsActive(false) setPromoCode('') return code } const handleOnPressPromoCode = () => { activate() } const handleOnPressApply = () => { onPressApply(promoCode) } const isCodeValid = () => { if (typeof isPromoCodeValid === 'boolean') { return isPromoCodeValid } else if (typeof isPromoCodeValid === 'number') { return isPromoCodeValid > 0 } } const isApplyButtonDisabled = promoCode.length === 0 const submitButton = texts?.apply ? texts.apply : isAccessCodeEnabled ? 'ENTER' : 'APPLY' const resultMessageValidStyle = [s.validMessage, styles?.validMessage] const resultMessageErrorStyle = [s.errorMessage, styles?.errorMessage] const resultMessageStyle = isCodeValid() ? resultMessageValidStyle : resultMessageErrorStyle const resultMessage = isCodeValid() ? texts?.validMessage || 'Valid promo code' : texts?.errorMessage || promoCodeValidationMessage return ( {isActive || isAccessCodeEnabled ? ( setPromoCode(text)} autoCapitalize="none" underlineColorAndroid={R.colors.transparent} />