import { useWallet } from '@solana/wallet-adapter-react' import { ModalProps } from '../../types/modal' import Modal from '../shared/Modal' import { useAuctionHouse, useBids, useLoadBids, } from 'hooks/market/useAuctionHouse' import { toUiDecimals } from '@blockworks-foundation/mango-v4' import { MANGO_MINT_DECIMALS } from 'utils/governance/constants' import { ImgWithLoader } from '@components/ImgWithLoader' import metaplexStore from '@store/metaplexStore' import { Bid } from '@metaplex-foundation/js' import { useTranslation } from 'next-i18next' import NftMarketButton from './NftMarketButton' import { useState } from 'react' import Loading from '@components/shared/Loading' import EmptyState from './EmptyState' import { notify } from 'utils/notifications' const MyBidsModal = ({ isOpen, onClose }: ModalProps) => { const { publicKey } = useWallet() const [cancelling, setCancelling] = useState('') const metaplex = metaplexStore((s) => s.metaplex) const { t } = useTranslation(['nft-market']) const { data: auctionHouse } = useAuctionHouse() const { data: lazyBids, refetch } = useBids() const myBids = lazyBids && publicKey ? lazyBids.filter((x) => x.buyerAddress.equals(publicKey)) : [] const { data: bids } = useLoadBids(myBids) const cancelBid = async (bid: Bid) => { setCancelling(bid.asset.mint.address.toString()) try { const { response } = await metaplex!.auctionHouse().cancelBid({ auctionHouse: auctionHouse!, bid, }) refetch() if (response) { notify({ title: 'Transaction confirmed', type: 'success', txid: response.signature, }) } } catch (e) { console.log('error cancelling offer', e) } finally { setCancelling('') } } return (

Your Offers

{bids && bids.length ? ( bids .sort((a, b) => b.createdAt.toNumber() - a.createdAt.toNumber()) .map((x) => (
{x.asset?.json?.image ? ( ) : null}

{x.asset?.json?.name || 'Unknown'}

{x.asset?.json?.collection?.family || 'Unknown'}

{toUiDecimals(x.price.basisPoints, MANGO_MINT_DECIMALS)}{' '} MNGO
) : ( t('cancel') ) } colorClass="error" onClick={() => cancelBid(x)} />
)) ) : ( )}
) } export default MyBidsModal