Commit f15ac091 authored by Jordan Frankfurt's avatar Jordan Frankfurt Committed by GitHub

fix: hover flash (#4998)

parent 6037d74c
...@@ -17,7 +17,7 @@ import { bodySmall } from 'nft/css/common.css' ...@@ -17,7 +17,7 @@ import { bodySmall } from 'nft/css/common.css'
import { loadingBlock } from 'nft/css/loading.css' import { loadingBlock } from 'nft/css/loading.css'
import { GenieAsset, UpdatedGenieAsset } from 'nft/types' import { GenieAsset, UpdatedGenieAsset } from 'nft/types'
import { ethNumberStandardFormatter, formatWeiToDecimal, getAssetHref } from 'nft/utils' import { ethNumberStandardFormatter, formatWeiToDecimal, getAssetHref } from 'nft/utils'
import { MouseEvent, useEffect, useReducer, useRef, useState } from 'react' import { MouseEvent, useCallback, useEffect, useReducer, useState } from 'react'
import { Link } from 'react-router-dom' import { Link } from 'react-router-dom'
import * as styles from './BagRow.css' import * as styles from './BagRow.css'
...@@ -53,14 +53,13 @@ interface BagRowProps { ...@@ -53,14 +53,13 @@ interface BagRowProps {
} }
export const BagRow = ({ asset, usdPrice, removeAsset, showRemove, grayscale, isMobile }: BagRowProps) => { export const BagRow = ({ asset, usdPrice, removeAsset, showRemove, grayscale, isMobile }: BagRowProps) => {
const [cardHovered, setCardHovered] = useState(false)
const [loadedImage, setImageLoaded] = useState(false) const [loadedImage, setImageLoaded] = useState(false)
const [noImageAvailable, setNoImageAvailable] = useState(!asset.smallImageUrl) const [noImageAvailable, setNoImageAvailable] = useState(!asset.smallImageUrl)
const handleCardHover = () => setCardHovered(!cardHovered)
const assetCardRef = useRef<HTMLDivElement>(null)
const showRemoveButton = showRemove && cardHovered
if (cardHovered && assetCardRef.current && assetCardRef.current.matches(':hover') === false) setCardHovered(false) const [cardHovered, setCardHovered] = useState(false)
const handleMouseEnter = useCallback(() => setCardHovered(true), [])
const handleMouseLeave = useCallback(() => setCardHovered(false), [])
const showRemoveButton = showRemove && cardHovered
const assetEthPrice = asset.updatedPriceInfo ? asset.updatedPriceInfo.ETHPrice : asset.priceInfo.ETHPrice const assetEthPrice = asset.updatedPriceInfo ? asset.updatedPriceInfo.ETHPrice : asset.priceInfo.ETHPrice
const assetEthPriceFormatted = formatWeiToDecimal(assetEthPrice) const assetEthPriceFormatted = formatWeiToDecimal(assetEthPrice)
...@@ -71,7 +70,7 @@ export const BagRow = ({ asset, usdPrice, removeAsset, showRemove, grayscale, is ...@@ -71,7 +70,7 @@ export const BagRow = ({ asset, usdPrice, removeAsset, showRemove, grayscale, is
return ( return (
<Link to={getAssetHref(asset)} style={{ textDecoration: 'none' }}> <Link to={getAssetHref(asset)} style={{ textDecoration: 'none' }}>
<Row ref={assetCardRef} className={styles.bagRow} onMouseEnter={handleCardHover} onMouseLeave={handleCardHover}> <Row className={styles.bagRow} onMouseEnter={handleMouseEnter} onMouseLeave={handleMouseLeave}>
<Box position="relative" display="flex"> <Box position="relative" display="flex">
<Box <Box
display={showRemove && isMobile ? 'block' : 'none'} display={showRemove && isMobile ? 'block' : 'none'}
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment