UNPKG

@mojito-inc/secondary-market

Version:

Mojito secondary market is the platform to purchase NFT.

2 lines (1 loc) 14.5 kB
import{jsxs as i,Fragment as e,jsx as o}from"react/jsx-runtime";import{useState as t,useMemo as l,useEffect as n,useCallback as r}from"react";import{useAuth as a,useNFT as d}from"@mojito-inc/core-service";import{useTokenDetails as m}from"../hooks/useTokenDetails.js";import{Currency as s}from"../interface/index.js";import"@mui/material/Stack";import"@mui/material/Modal";import"@mui/material/Divider";import"@mui/material/Grid";import"@mui/material/Button";import"@mui/material/Typography";import"@mui/material/Box";import"@mui/material/styles";import"html-react-parser";import"../component/VideoWithImageCard.js";import"@mui/material/Tooltip";import"@mui/icons-material/InfoOutlined";import"@mui/icons-material/KeyboardArrowDown";import"@mui/material/Select";import"@mui/material/TextField";import"@mui/material/MenuItem";import"@mui/icons-material/ImportExport";import"@mui/icons-material/Warning";import"@mui/icons-material/CheckCircleOutline";import"@mui/icons-material/ErrorOutline";import"@mui/material/Checkbox";import"@mui/icons-material/ContentCopy";import"@mui/icons-material/KeyboardArrowUp";import"@mui/icons-material/HelpOutline";import"@mui/material/IconButton";import"@mui/icons-material/FavoriteBorder";import"@mui/icons-material/Favorite";import"@mui/icons-material/FileCopyOutlined";import"moment";import"@mui/material/Pagination";import"@mui/material/PaginationItem";import"@mui/material";import"@mui/material/Table";import"@mui/material/TableCell";import"@mui/material/TableHead";import"@mui/material/TableBody";import"@mui/material/TableRow";import"@mui/material/TableContainer";import"@mui/icons-material/OpenInNew";import"@mui/material/Skeleton";import"@mui/material/CardActions";import"@mui/material/Card";import"@mui/material/CardContent";import"@mui/icons-material/RemoveCircleOutline";import"@mui/icons-material/SellOutlined";import"@mui/icons-material/AttachMoneyOutlined";import"@mui/icons-material/Send";import"@mui/icons-material/NewReleases";import"@mui/icons-material/CancelScheduleSend";import"@mui/icons-material/HourglassDisabledOutlined";import"@mui/icons-material/CallMissedOutlined";import"@mui/icons-material/MoveToInboxOutlined";import"@mui/icons-material/CheckCircleOutlineOutlined";import"@mui/icons-material/BorderColorOutlined";import"@mui/icons-material/Twitter";import"@mui/icons-material/MoreVert";import{ButtonType as u}from"../constant/index.js";import"@mui/material/useMediaQuery";import"@mui/material/CircularProgress";import"react-player";import"@mui/icons-material/Pause";import"@mui/icons-material/PlayArrow";import"../_virtual/_tslib.js";import"@mui/material/Tab";import"@mui/material/Tabs";import"@mui/material/Menu";import"@mui/material/ListItem";import"@mui/material/List";import"@mui/icons-material/Close";import"@mui/material/ListItemText";import"@mui/icons-material/CheckRounded";import"@mui/icons-material/FiberManualRecord";import"@mui/icons-material/Refresh";import"../component/RenderIf.js";import"@mui/icons-material/AccountBalanceWallet";import"@mui/material/Breadcrumbs";import"@mui/icons-material/ArrowForward";import c from"../layout/ProductDetailPageLayout.js";import"@mui/material/InputAdornment";import"@mui/icons-material/Search";import"@mui/icons-material/FilterList";import"../provider/CollectionFilterProvider.js";import"@mui/material/Accordion";import"@mui/material/AccordionSummary";import"@mui/material/AccordionDetails";import"@mui/material/FormControlLabel";import"@mui/icons-material/ExitToAppOutlined";import{useProvenance as v}from"../hooks/useProvenance.js";import p from"./ListItemContainer.js";import f from"./AcceptAndRejectOffer.js";import C from"./BuyNow.js";import I from"./MakeOfferContainer.js";import{getPrice as k}from"../utils/getPrice.utils.js";import{useTokenOffer as g}from"../hooks/useTokenOffer.js";const A=({config:A,tokenDetails:w,Image:O,walletDetails:D,priceInputRange:T,showSpecialTraits:y=!1,videoAttributes:h,mediaCardAttributes:R,onConnectWallet:L,onClickDisconnectWallet:E,onRefetchBalance:b,onViewItem:P,onBackToMarketplace:S,onHandleApiSessionExpired:N})=>{var j,M,U,B,F;const{sessionStatus:_}=a(),[x,W]=t(!1),[H,V]=t(!1),[G,K]=t(!1),[Q,$]=t(!1),[Y,q]=t(!1),[z,J]=t(!1),[X,Z]=t(),[ii,ei]=t(""),[oi,ti]=t(!1),li=l((()=>10),[]),[ni,ri]=t(0),ai=l((()=>3),[]),[di,mi]=t(0),[si,ui]=t(!1),[ci,vi]=t({orderId:"",isCancelOffer:!1}),pi=l((()=>"solana"===(null==D?void 0:D.walletType)),[D.walletType]),fi=l((()=>{var i;return null===(i=null==D?void 0:D.networkDetails)||void 0===i?void 0:i.chainID}),[null===(j=null==D?void 0:D.networkDetails)||void 0===j?void 0:j.chainID]),Ci=l((()=>{var i;return{orgId:A.orgId,contractAddress:w.contractAddress,onChainTokenID:w.onChainTokenID,cryptoCurrencyCode:A.cryptoCurrency,currency:null!==(i=A.fiatCurrency)&&void 0!==i?i:s.USD}}),[A.cryptoCurrency,A.fiatCurrency,A.orgId,w.contractAddress,w.onChainTokenID]),{tokenData:Ii,networkData:ki,detailsLoading:gi,isNetworkLoading:Ai,isPriceLoading:wi,isError:Oi,reFetchAPI:Di}=m(Ci,!0),Ti=l((()=>{var i,e,o,t;return{orgId:A.orgId,contractAddress:w.contractAddress,itemId:null!==(i=null==Ii?void 0:Ii.nftTokenId)&&void 0!==i?i:"",onChainTokenID:w.onChainTokenID,networkId:null!==(e=null==Ii?void 0:Ii.networkID)&&void 0!==e?e:"",ownerAddress:null!==(o=null==Ii?void 0:Ii.tokenOwnerAddress)&&void 0!==o?o:"",limit:li,offset:ni,currency:null!==(t=A.fiatCurrency)&&void 0!==t?t:s.USD,showSpecialTraits:y&&pi,connectedChainId:fi,customRPCUrl:A.customRPCUrl}}),[A,w,fi,Ii,pi,li,ni,y]),{provenanceData:yi,traitsData:hi,totalProvenanceData:Ri,provenanceLoading:Li,traitsLoading:Ei,provenanceRefetch:bi,traitsRefetch:Pi}=v(Ti),{offerData:Si,offerLoading:Ni,offerRefetch:ji}=g(null==A?void 0:A.orgId,null!==(M=null==Ii?void 0:Ii.nftTokenId)&&void 0!==M?M:"",!!(null==D?void 0:D.walletAddress),null==A?void 0:A.fiatCurrency),{addNFTToFavorite:Mi,removeNFTFromFavorite:Ui}=d(),Bi=l((()=>null==w?void 0:w.contractAddress),[w]),Fi=l((()=>null==w?void 0:w.onChainTokenID),[w]),_i=l((()=>A.fiatCurrency),[A.fiatCurrency]);n((()=>{(Bi&&Fi||_i)&&(Di(),ji(),Pi(),bi())}),[Bi,Fi,_i,ji,Di,Pi,bi]),n((()=>{(null==D?void 0:D.walletAddress)&&ji()}),[null==D?void 0:D.walletAddress,ji]),n((()=>{si&&(ui(!1),bi())}),[si,bi]),n((()=>{"Expired"===_&&(W(!1),$(!1),W(!1),K(!1),null==N||N())}),[N,_]);const xi=l((()=>{const i=null==ki?void 0:ki.filter((i=>i.id===(null==Ii?void 0:Ii.networkID)));return null==i?void 0:i[0]}),[ki,Ii]),Wi=l((()=>{var i,e;return(null===(i=null==Ii?void 0:Ii.tokenOwnerAddress)||void 0===i?void 0:i.toLowerCase())===(null===(e=null==D?void 0:D.walletAddress)||void 0===e?void 0:e.toLowerCase())}),[Ii,null==D?void 0:D.walletAddress]),Hi=l((()=>(null==Si?void 0:Si.filter((i=>"PENDING"===(null==i?void 0:i.offerStatus)&&(null==D?void 0:D.walletAddress))))||[]),[Si,D.walletAddress]),Vi=l((()=>(null==Ii?void 0:Ii.status)&&Wi?"OPEN_FOR_SALE"===(null==Ii?void 0:Ii.status)?u.LIST_ITEM:"SALE_PENDING"===(null==Ii?void 0:Ii.status)?u.EDIT_LIST_ITEM:u.ENQUIRE:"OPEN_FOR_SALE"!==(null==Ii?void 0:Ii.status)&&"SALE_PENDING"!==(null==Ii?void 0:Ii.status)||Wi?u.ENQUIRE:0===(null==Hi?void 0:Hi.length)&&(null==Ii?void 0:Ii.isMakeOfferEnabled)?u.MAKE_OFFER:u.CANCEL),[Ii,Wi,Hi]),Gi=l((()=>"SALE_PENDING"===(null==Ii?void 0:Ii.status)&&!Wi&&(null==Ii?void 0:Ii.isBuyNowEnabled)?u.BUY_NOW:u.ENQUIRE),[Ii,Wi]),Ki=l((()=>Gi===u.BUY_NOW?"Buy Now":Vi===u.EDIT_LIST_ITEM?"Edit Listing":Vi===u.MAKE_OFFER?"Make Offer":"List Item"),[Gi,Vi]),Qi=l((()=>{var i;if(null==Ii?void 0:Ii.price){const{price:e}=k(Ki,null==Ii?void 0:Ii.price,null===(i=null==Ii?void 0:Ii.listedOrderInfo)||void 0===i?void 0:i.price);return e}return[]}),[Ii,Ki]),$i=l((()=>{var i,e,o,t,l,n,r,a,d,m,s,u,c,v,p,f,C,I,k,g,w,O,D;return{url:(null==Ii?void 0:Ii.mediaSourceURL)||(null===(i=null==Ii?void 0:Ii.metadata)||void 0===i?void 0:i.image)||"",thumbnail:null!==(o=null===(e=null==Ii?void 0:Ii.metadata)||void 0===e?void 0:e.image)&&void 0!==o?o:"",collectionName:null!==(l=null===(t=null==Ii?void 0:Ii.artist)||void 0===t?void 0:t.artistName)&&void 0!==l?l:"",tokenName:null!==(r=null===(n=null==Ii?void 0:Ii.metadata)||void 0===n?void 0:n.name)&&void 0!==r?r:"",owner:null!==(a=null==Ii?void 0:Ii.tokenOwnerAddress)&&void 0!==a?a:"",cryptoPrice:(null===(d=null==Qi?void 0:Qi[1])||void 0===d?void 0:d.value)?`${null===(m=null==Qi?void 0:Qi[1])||void 0===m?void 0:m.value} ${null===(s=null==Qi?void 0:Qi[1])||void 0===s?void 0:s.unit}`:"",usdPrice:(null===(u=null==Qi?void 0:Qi[0])||void 0===u?void 0:u.value)?`${null===(c=null==Qi?void 0:Qi[0])||void 0===c?void 0:c.value} ${null!==(v=A.fiatCurrency)&&void 0!==v?v:"USD"}`:"",networkName:null!==(p=null==Ii?void 0:Ii.network)&&void 0!==p?p:"",tokenType:null!==(f=null==Ii?void 0:Ii.tokenType)&&void 0!==f?f:"",contractAddress:null!==(C=null==Ii?void 0:Ii.contractAddress)&&void 0!==C?C:"",tokenId:null!==(k=null===(I=null==Ii?void 0:Ii.tokenId)||void 0===I?void 0:I.toString())&&void 0!==k?k:"",chainId:Number(null==xi?void 0:xi.chainID),metaDataURL:null!==(g=null==Ii?void 0:Ii.tokenURI)&&void 0!==g?g:"",description:null!==(O=null===(w=null==Ii?void 0:Ii.metadata)||void 0===w?void 0:w.description)&&void 0!==O?O:"",edition:null!==(D=null==Ii?void 0:Ii.editions)&&void 0!==D?D:0}}),[Ii,Qi,xi,A.fiatCurrency]),Yi=l((()=>{if(pi){const i=null==hi?void 0:hi.find((i=>{var e;return"winery"===(null===(e=i.title)||void 0===e?void 0:e.toLowerCase())}));return Object.assign(Object.assign({},$i),{collectionName:(null==i?void 0:i.description)?null==i?void 0:i.description:""})}return $i}),[$i,pi,hi]),qi=r((i=>{Z(i),K(!0),J(!1)}),[]),zi=r((async i=>{(null==D?void 0:D.walletAddress)?(vi({orderId:i,isCancelOffer:!0}),V(!0)):L()}),[null==D?void 0:D.walletAddress,L]),Ji=r((i=>{(null==D?void 0:D.walletAddress)?(Z(i),K(!0),J(!0)):L()}),[null==D?void 0:D.walletAddress,L]),Xi=r((i=>{(null==D?void 0:D.walletAddress)?"Buy Now"===i?$(!0):("List Item"===i||"Edit Listing"===i)&&(q(!1),W(!0)):L()}),[null==D?void 0:D.walletAddress,L]),Zi=r(((i,e)=>{(null==D?void 0:D.walletAddress)?"Make Offer"===i?(vi({orderId:"",isCancelOffer:!1}),V(!0)):"Remove Listing"===i?(q(!0),W(!0)):"Cancel Offer"===i&&zi(e):L()}),[null==D?void 0:D.walletAddress,L,zi]),ie=r((async()=>{try{Ii&&(null==Ii?void 0:Ii.isFavorite)?(ti(!0),await Ui({orgID:A.orgId,tokenId:Ii.nftTokenId}),Di(),ti(!1)):Ii&&(ti(!0),await Mi({orgID:A.orgId,tokenId:Ii.nftTokenId}),Di(),ti(!1))}catch(i){ti(!1),ei((null==i?void 0:i.message)||"Something went wrong! try again later")}}),[A,Ii,Ui,Mi,Di]),ee=r((()=>{W(!1)}),[]),oe=r((()=>{K(!1)}),[]),te=r((()=>{V(!1)}),[]),le=r((()=>{$(!1)}),[]),ne=r((()=>{L(),$(!1)}),[L]),re=r((()=>{mi(0),ri(0),te(),ee(),oe(),le(),Di(),ji(),bi()}),[bi,te,ee,oe,le,Di,ji]),ae=r((()=>{re(),P&&P()}),[re,P]),de=r((()=>{re(),S&&S()}),[re,S]),me=r((i=>{ui(!0),ri(i-1)}),[ri]),se=r((i=>{mi(i-1)}),[]),ue=r((()=>{re()}),[re]),ce=l((()=>{var i;return null!==(i=null==Si?void 0:Si.slice(di*ai,di*ai+ai))&&void 0!==i?i:[]}),[Si,di,ai]),ve=l((()=>{var i,e;const o=(null!==(i=null==Si?void 0:Si.length)&&void 0!==i?i:0)/ai,t=Math.floor(o);return 0===(null!==(e=null==Si?void 0:Si.length)&&void 0!==e?e:0)%ai?t:t+1}),[Si,ai]);return i(e,{children:[o(c,{tokenData:Yi,isError:Oi,provenanceLoading:Li,provenanceData:null!=yi?yi:[],totalProvenanceData:Ri,provenanceOffset:ni,onHandleProvenancePagination:me,offersOffset:di,totalOffersPage:ve,totalOffers:null!==(U=null==Hi?void 0:Hi.length)&&void 0!==U?U:0,onHandleOffersPagination:se,traitsList:null!=hi?hi:[],offerList:(null==D?void 0:D.walletAddress)&&(null==ce?void 0:ce.length)>0?ce:[],fiatCurrency:A.fiatCurrency,button:{isBuyNow:Gi===u.BUY_NOW,isEditListing:Vi===u.EDIT_LIST_ITEM,isListItem:Vi===u.LIST_ITEM,isMakeOffer:Vi===u.MAKE_OFFER},walletAddress:null==D?void 0:D.walletAddress,walletType:null==D?void 0:D.walletType,isFavorite:(null==Ii?void 0:Ii.isFavorite)||!1,favoriteLoading:oi,loaderImage:O.loader,placeHolderImage:O.placeHolderImage,error:ii,isLoading:gi||Ni||Ei||Ai||wi,showFavorite:null===(B=null==A?void 0:A.showFavorite)||void 0===B||B,videoAttributes:h,onClickAcceptOffer:qi,onClickCancelOffer:zi,onClickRejectOffer:Ji,onClickPrimary:Xi,onClickSecondary:Zi,onClickFavorite:ie}),Ii&&i(e,{children:[o(p,{open:x,image:O,customRPCUrl:null==A?void 0:A.customRPCUrl,config:Object.assign(Object.assign({},A),{currency:A.fiatCurrency}),tokenDetails:{onChainTokenID:String(null==Ii?void 0:Ii.tokenId),contractAddress:null==Ii?void 0:Ii.contractAddress,itemId:null==Ii?void 0:Ii.nftTokenId},isRemoveListing:Y,tokenDetailsData:Ii,walletDetails:D,priceInputRange:T,mediaCardAttributes:R,onClickViewItem:ae,onClickBackToMarketPlace:ue,onCloseModal:ee,onConnectWallet:L,onHandleApiSessionExpired:N,onRefetchBalance:b}),o(f,{open:G,customRPCUrl:null==A?void 0:A.customRPCUrl,config:Object.assign(Object.assign({},A),{currency:A.fiatCurrency}),image:O,tokenDetails:{onChainTokenID:String(null==Ii?void 0:Ii.tokenId),contractAddress:null==Ii?void 0:Ii.contractAddress,itemId:null==Ii?void 0:Ii.nftTokenId},orderId:(null==X?void 0:X.id)||"",isRejectOffer:z,tokenDetailsData:Ii,mediaCardAttributes:R,walletDetails:D,isPDP:!0,onClickViewItem:ae,onClickBackToMarketPlace:de,onConnectWallet:L,onCloseModal:oe,onHandleApiSessionExpired:N,onRefetchBalance:b}),o(I,{open:H,config:Object.assign(Object.assign({},A),{currency:A.fiatCurrency}),customRPCUrl:null==A?void 0:A.customRPCUrl,image:O,tokenDetails:{onChainTokenID:String(null==Ii?void 0:Ii.tokenId),contractAddress:null==Ii?void 0:Ii.contractAddress,itemId:null==Ii?void 0:Ii.nftTokenId},tokenDetailsData:Ii,mediaCardAttributes:R,isCancelOffer:ci.isCancelOffer,walletDetails:D,priceInputRange:T,onClickViewItem:ae,onClickBackToMarketPlace:de,onRefetchBalance:b,onConnectWallet:L,onCloseModal:te,onHandleApiSessionExpired:N,termsURL:A.termsURL,conditionOfBusinessURL:A.conditionOfBusinessURL}),o(C,{open:Q,config:Object.assign(Object.assign({},A),{currency:A.fiatCurrency,customRPCUrl:null==A?void 0:A.customRPCUrl}),image:O,tokenDetails:{onChainTokenID:String(null==Ii?void 0:Ii.tokenId),contractAddress:null==Ii?void 0:Ii.contractAddress,itemId:null==Ii?void 0:Ii.nftTokenId},mediaCardAttributes:Object.assign(Object.assign({},R),{customThumbnail:(null==R?void 0:R.customThumbnail)||(null===(F=null==Ii?void 0:Ii.metadata)||void 0===F?void 0:F.image)}),tokenDetailsData:Ii,walletDetails:D,termsURL:A.termsURL,conditionOfBusinessURL:A.conditionOfBusinessURL,onClickViewItem:ae,onClickBackToMarketPlace:de,onClickConnectWallet:ne,onClickDisconnectWallet:E,onCloseModal:le,onHandleApiSessionExpired:N,onRefetchBalance:b})]})]})};export{A as default};