Skip to content

Commit

Permalink
Fix: track nft send only when enabled (#1626)
Browse files Browse the repository at this point in the history
* Fix: track nft send only when enabled

* Join imports
  • Loading branch information
katspaugh authored Feb 1, 2023
1 parent aad18d9 commit eb09108
Show file tree
Hide file tree
Showing 2 changed files with 32 additions and 25 deletions.
31 changes: 21 additions & 10 deletions src/components/nfts/NftCollections/index.tsx
Original file line number Diff line number Diff line change
@@ -1,5 +1,4 @@
import type { SyntheticEvent } from 'react'
import { useEffect, useState } from 'react'
import { type SyntheticEvent, type ReactElement, useCallback, useEffect, useState } from 'react'
import { type SafeCollectibleResponse } from '@safe-global/safe-gateway-typescript-sdk'
import { Box, CircularProgress } from '@mui/material'
import ErrorMessage from '@/components/tx/ErrorMessage'
Expand All @@ -8,10 +7,12 @@ import NftIcon from '@/public/images/common/nft.svg'
import NftBatchModal from '@/components/tx/modals/NftBatchModal'
import useCollectibles from '@/hooks/useCollectibles'
import InfiniteScroll from '@/components/common/InfiniteScroll'
import { NFT_EVENTS } from '@/services/analytics/events/nfts'
import { trackEvent } from '@/services/analytics'
import NftGrid from '../NftGrid'
import NftSendForm from '../NftSendForm'

const NftCollections = () => {
const NftCollections = (): ReactElement => {
// Track the current NFT page url
const [pageUrl, setPageUrl] = useState<string>()
// Load NFTs from the backend
Expand All @@ -24,9 +25,24 @@ const NftCollections = () => {
const [showSendModal, setShowSendModal] = useState<boolean>(false)

// Add or remove NFT from the selected list on row click
const onSelect = (token: SafeCollectibleResponse) => {
const onSelect = useCallback((token: SafeCollectibleResponse) => {
setSelectedNfts((prev) => (prev.includes(token) ? prev.filter((t) => t !== token) : prev.concat(token)))
}
}, [])

const onSendSubmit = useCallback(
(e: SyntheticEvent) => {
e.preventDefault()

if (selectedNfts.length) {
// Show the NFT transfer modal
setShowSendModal(true)

// Track how many NFTs are being sent
trackEvent({ ...NFT_EVENTS.SEND, label: selectedNfts.length })
}
},
[selectedNfts.length],
)

// Add new NFTs to the accumulated list
useEffect(() => {
Expand All @@ -49,11 +65,6 @@ const NftCollections = () => {
return <PagePlaceholder img={<NftIcon />} text="No NFTs available or none detected" />
}

const onSendSubmit = (e: SyntheticEvent) => {
e.preventDefault()
setShowSendModal(true)
}

return (
<>
{allNfts?.length > 0 && (
Expand Down
26 changes: 11 additions & 15 deletions src/components/nfts/NftSendForm/index.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,6 @@ import type { ReactElement } from 'react'
import { Box, Button, Grid, SvgIcon, Typography } from '@mui/material'
import ArrowIcon from '@/public/images/common/arrow-nw.svg'
import type { SafeCollectibleResponse } from '@safe-global/safe-gateway-typescript-sdk'
import Track from '@/components/common/Track'
import { NFT_EVENTS } from '@/services/analytics/events/nfts'
import useIsGranted from '@/hooks/useIsGranted'

type NftSendFormProps = {
Expand Down Expand Up @@ -54,19 +52,17 @@ const NftSendForm = ({ selectedNfts, onSelectAll }: NftSendFormProps): ReactElem
</Grid>

<Grid item>
<Track {...NFT_EVENTS.SEND} label={selectedNfts.length}>
<Button
type="submit"
variant="contained"
size="small"
disabled={!isGranted || noSelected}
sx={{
minWidth: '10em',
}}
>
{noSelected ? 'Send' : `Send ${selectedNfts.length} ${nftsText}`}
</Button>
</Track>
<Button
type="submit"
variant="contained"
size="small"
disabled={!isGranted || noSelected}
sx={{
minWidth: '10em',
}}
>
{noSelected ? 'Send' : `Send ${selectedNfts.length} ${nftsText}`}
</Button>
</Grid>
</Grid>
</Sticky>
Expand Down

0 comments on commit eb09108

Please sign in to comment.