import React, { useRef, useEffect, memo } from 'react' import classNames from 'classnames' import { Product } from '@dollarshaveclub/types' type Props = Readonly<{ product: Product onClickAdd: (product: Product) => void price: string dataTestId?: string isLoading?: boolean isAdded?: boolean isSoldOut?: boolean showAddAnimation?: boolean onClickRemove?: (sku: string) => void additionalButtonClasses?: string shouldRefocusButton?: boolean disabled?: boolean }> const PriceAddButtonBase: React.FunctionComponent = ({ disabled = false, product, onClickAdd, price, dataTestId = 'price-add-btn', isLoading = false, isAdded = false, isSoldOut = false, showAddAnimation = false, onClickRemove, additionalButtonClasses, shouldRefocusButton, }) => { const addedButtonRef = useRef(null) useEffect(() => { if (shouldRefocusButton && addedButtonRef.current) { addedButtonRef.current.focus() } }, [shouldRefocusButton]) if (isSoldOut) { return ( ) } else if (isLoading) { return ( ) } else if (isAdded) { if (onClickRemove) { return ( ) } else { return ( ) } } else { return ( ) } } export const PriceAddButton = memo(PriceAddButtonBase)