UNPKG

@mojito-inc/secondary-market

Version:

Mojito secondary market is the platform to purchase NFT.

2 lines (1 loc) 12.4 kB
import{useState as l,useCallback as i,useEffect as o}from"react";import{useConnectWallet as d,useNFT as e}from"@mojito-inc/core-service";import n from"moment";import{getValidURL as t}from"../utils/getValidURL.utils.js";import{getPrice as v}from"../utils/getPrice.utils.js";import{truncateDecimal as u}from"../utils/truncateDecimal.utils.js";import{getTransferedStatusName as a}from"../utils/getTransferredStatus.utils.js";import{getActivityStatus as r}from"../utils/getActivityStatus.utils.js";import{getEventTypeName as s}from"../utils/getEventType.utils.js";import{truncateAddress as c}from"../utils/truncateAddress.utils.js";import m from"../utils/getParseAddresses.js";const I=(I,p,y)=>{var f,g;const{getActiveWalletsContent:w,getSupportedNetworks:A}=d(),{getAllInvoices:h,generateSecondaryInvoice:D,generatePrimaryInvoice:T,getFileSignedUrl:k,getMyInvoices:S}=e(),[C,N]=l(!1),[L,E]=l(!1),[P,R]=l([]),[W,b]=l([]),[M,O]=l(0),[j,U]=l(0),[V,Y]=l(!1),[H,_]=l(!1),[F,$]=l([]),[q,x]=l(!1),B=i((l=>null==F?void 0:F.filter((i=>i.name===l))),[F]),G=i(((l,i)=>{var o;const d=(null==l?void 0:l.toLowerCase())===(null===(o=null==I?void 0:I.walletAddress)||void 0===o?void 0:o.toLowerCase());if(i&&d){if("OPEN_FOR_SALE"===i)return"List Item";if("SALE_PENDING"===i)return"Edit Listing"}return""}),[null==I?void 0:I.walletAddress]),z=i((async()=>{var l;try{const i=null===(l=(await A({includeTestnets:!0,orgId:I.orgID})).data)||void 0===l?void 0:l.getSupportedNetworks;return $(i),i}catch(l){return $(null),[]}}),[I,A]),J=i((async()=>{var l,i,o,d,e,n,u,a,r;try{R(null),O(0),N(!0),Y(!1);const s=await w({orgID:I.orgID,filters:{search:null===(l=I.filters)||void 0===l?void 0:l.search,sort:null===(i=I.filters)||void 0===i?void 0:i.sort},refreshCache:I.refreshCache,walletAddress:null==I?void 0:I.walletAddress,networkId:null==I?void 0:I.networkId,nftContractAddress:(null==I?void 0:I.contractAddress)?m(null==I?void 0:I.contractAddress):void 0,currency:null==I?void 0:I.currency,itemFilter:null==I?void 0:I.itemFilter},{fetchPolicy:"no-cache"}),y=null===(d=null===(o=s.data)||void 0===o?void 0:o.getActiveWalletsContent)||void 0===d?void 0:d.tokens,f=null==y?void 0:y.map((l=>{var i,o,d,e,n,u,a,r,s,m,y,f,g,w,A,h,D,T,k,S,C,N,L,E,P,R,W,b,M,O,j;const U=G(null!==(i=l.owner)&&void 0!==i?i:"",null!==(o=l.status)&&void 0!==o?o:""),V=v(U,null==l?void 0:l.price,null===(d=null==l?void 0:l.listedOrderInfo)||void 0===d?void 0:d.price),Y=B(l.network);return{cardDetail:{networkId:null!==(n=null===(e=null==Y?void 0:Y[0])||void 0===e?void 0:e.id)&&void 0!==n?n:"",networkChainId:null!==(a=null===(u=null==Y?void 0:Y[0])||void 0===u?void 0:u.chainID)&&void 0!==a?a:0,tokenImage:t((null===(r=null==l?void 0:l.metadata)||void 0===r?void 0:r.image)||(null===(s=null==l?void 0:l.metadata)||void 0===s?void 0:s.animationURL)||(null==p?void 0:p.placeholderImage)),tokenName:null!==(y=null===(m=null==l?void 0:l.metadata)||void 0===m?void 0:m.name)&&void 0!==y?y:"",placeholderImage:null==p?void 0:p.placeholderImage,tokenSubtitle:null!==(g=null===(f=null==l?void 0:l.metadata)||void 0===f?void 0:f.description)&&void 0!==g?g:"",tokenId:"ethereum"===I.walletType?parseInt(null!==(w=null==l?void 0:l.id)&&void 0!==w?w:"0",10):l.id,contractAddress:null==l?void 0:l.contractAddress,id:null!==(A=null==l?void 0:l.nftTokenId)&&void 0!==A?A:"",buttonName:U,animationURL:null===(h=null==l?void 0:l.metadata)||void 0===h?void 0:h.animationURL,collectionName:(null==l?void 0:l.contractName)||`Collection ${c(null==l?void 0:l.contractAddress)}`||"",collectionType:"ethereum"===I.walletType?"ERC721"===l.tokenType?"ERC-721":"ERC-1155":"SOLANA",cryptoPrice:null!==(k=null===(T=null===(D=null==V?void 0:V.price)||void 0===D?void 0:D[1])||void 0===T?void 0:T.value)&&void 0!==k?k:0,usdPrice:null!==(N=null===(C=null===(S=null==V?void 0:V.price)||void 0===S?void 0:S[0])||void 0===C?void 0:C.value)&&void 0!==N?N:0,priceLabel:null!==(E=null===(L=null==V?void 0:V.label)||void 0===L?void 0:L.toUpperCase())&&void 0!==E?E:"",cryptoLabel:"ethereum"===I.walletType?null!==(W=null===(R=null===(P=null==V?void 0:V.price)||void 0===P?void 0:P[1])||void 0===R?void 0:R.unit)&&void 0!==W?W:"ETH":"VIN",tokenOwnerAddress:null!==(b=null==l?void 0:l.owner)&&void 0!==b?b:"",downloadVideo:null===(M=null==l?void 0:l.metadata)||void 0===M?void 0:M.downloadVideo,video:null!==(j=null===(O=null==l?void 0:l.metadata)||void 0===O?void 0:O.video)&&void 0!==j?j:""}}}));return R(null!==(e=f)&&void 0!==e?e:[]),O(null!==(r=null===(a=null===(u=null===(n=null==s?void 0:s.data)||void 0===n?void 0:n.getActiveWalletsContent)||void 0===u?void 0:u.requestObj)||void 0===a?void 0:a.totalCount)&&void 0!==r?r:0),N(!1),f}catch(l){return N(!1),R(null),null}}),[null==p?void 0:p.placeholderImage,null==I?void 0:I.refreshCache,null===(f=I.filters)||void 0===f?void 0:f.search,null===(g=I.filters)||void 0===g?void 0:g.sort,null==I?void 0:I.networkId,null==I?void 0:I.currency,null==I?void 0:I.itemFilter,I.orgID,null==I?void 0:I.walletAddress,null==I?void 0:I.contractAddress,I.walletType,w,G,B]),K=i(((l,i,o="base64")=>{if(!l)return;let d=document.createElement("a");d.href="pdf"===o?`${l}?alt=media`:`data:application/pdf;base64,${l}`,"base64"===o&&(d.download=i),document.body.appendChild(d),d.click(),document.body.removeChild(d),d=null}),[]),Q=i((async()=>{var l,i,o,d,e,n,t,v;try{if(null==y?void 0:y.isSecondary){const n=null===(e=(await D({invoiceID:null!==(l=null==y?void 0:y.invoiceID)&&void 0!==l?l:"",orderID:null!==(i=null==y?void 0:y.orderID)&&void 0!==i?i:"",activityName:null!==(o=null==y?void 0:y.activityName)&&void 0!==o?o:"",invoiceResType:null!==(d=null==y?void 0:y.invoiceResType)&&void 0!==d?d:""})).data)||void 0===e?void 0:e.generateSecondaryInvoice;return n&&K(n,`invoice-${null==y?void 0:y.activityName}.pdf`,"pdf"),n}const u=null===(v=(await T({invoiceID:null!==(n=null==y?void 0:y.invoiceID)&&void 0!==n?n:"",invoiceResType:null!==(t=null==y?void 0:y.invoiceResType)&&void 0!==t?t:""})).data)||void 0===v?void 0:v.generatePrimaryInvoice;return u&&K(u,`invoice-${null==y?void 0:y.activityName}.pdf`,"pdf"),u}catch(l){return[]}}),[y,K,D,T]),X=i((async()=>{var l,i,o,d,e,v,c,m,y,f,g;try{if(b(null),E(!0),_(!1),z(),"MY_INVOICES"===(null==p?void 0:p.invoiceType)){const u=await S({limit:null==p?void 0:p.limit,offset:null==p?void 0:p.offset,returnAllStatuses:null==p?void 0:p.returnAllStatuses,filter:{listingID:null==p?void 0:p.listingId,dropID:null==p?void 0:p.dropId}},{fetchPolicy:"no-cache"}),a=null===(i=null===(l=null==u?void 0:u.data)||void 0===l?void 0:l.getMyInvoicesData)||void 0===i?void 0:i.data,s=null==a?void 0:a.map((l=>{var i,o,d,e,v,u,a,s,c,m,y,f,g,w,A,h,D,T,k,S,C,N,L,E,P,R,W,b,M,O,j,U,V,Y,H,_,F,$;return{date:n(null==l?void 0:l.invoiceCreatedAt).format("MM/DD/YYYY | hh:mm A"),activityName:(null===(v=null===(e=null===(d=null===(o=null===(i=null==l?void 0:l.items)||void 0===i?void 0:i[0])||void 0===o?void 0:o.nftDetails)||void 0===d?void 0:d[0])||void 0===e?void 0:e.tokenMetadata)||void 0===v?void 0:v.name)||(null===(u=null==l?void 0:l.items)||void 0===u?void 0:u[0].collectionItemTitle),OrderID:null==l?void 0:l.invoiceID,InvoiceID:null==l?void 0:l.invoiceID,TransactionHash:null===(s=null===(a=null==l?void 0:l.items)||void 0===a?void 0:a[0])||void 0===s?void 0:s.transactionHash,NetworkId:null===(y=null===(m=null===(c=null==l?void 0:l.items)||void 0===c?void 0:c[0].nftDetails)||void 0===m?void 0:m[0])||void 0===y?void 0:y.networkId,itemName:"Purchased",tokenId:"",placeholderImage:null==p?void 0:p.placeholderImage,listingImage:null===(g=null===(f=null==l?void 0:l.items)||void 0===f?void 0:f[0])||void 0===g?void 0:g.collectionItemImage,nftTokenId:null!==(T=null===(D=null===(h=null===(A=null===(w=null==l?void 0:l.items)||void 0===w?void 0:w[0])||void 0===A?void 0:A.nftDetails)||void 0===h?void 0:h[0])||void 0===D?void 0:D.nftTokenID)&&void 0!==T?T:"",contractAddress:null!==(L=null===(N=null===(C=null===(S=null===(k=null==l?void 0:l.items)||void 0===k?void 0:k[0])||void 0===S?void 0:S.nftDetails)||void 0===C?void 0:C[0])||void 0===N?void 0:N.contractAddress)&&void 0!==L?L:"",status:(null===(P=null===(E=null==l?void 0:l.items)||void 0===E?void 0:E[0])||void 0===P?void 0:P.transactionStatus)?r(null===(b=null===(W=null===(R=null==l?void 0:l.items)||void 0===R?void 0:R[0])||void 0===W?void 0:W.transactionStatus)||void 0===b?void 0:b.toString()):"",tokenImage:(null===(V=null===(U=null===(j=null===(O=null===(M=null==l?void 0:l.items)||void 0===M?void 0:M[0])||void 0===O?void 0:O.nftDetails)||void 0===j?void 0:j[0])||void 0===U?void 0:U.tokenMetadata)||void 0===V?void 0:V.image)?t(null===($=null===(F=null===(_=null===(H=null===(Y=null==l?void 0:l.items)||void 0===Y?void 0:Y[0])||void 0===H?void 0:H.nftDetails)||void 0===_?void 0:_[0])||void 0===F?void 0:F.tokenMetadata)||void 0===$?void 0:$.image):null==p?void 0:p.placeholderImage,price:{value:0,unit:"ethereum"===I.walletType?"ETH":"VIN",usdValue:"0"},activity:""}}));return b(null!==(o=s)&&void 0!==o?o:[]),U(null!==(v=null===(e=null===(d=null==u?void 0:u.data)||void 0===d?void 0:d.getMyInvoicesData)||void 0===e?void 0:e.TotalCount)&&void 0!==v?v:0),E(!1),s}const w=await h({orgID:null==p?void 0:p.orgId,filter:"LATEST_TO_OLDEST",limit:null==p?void 0:p.limit,offset:null==p?void 0:p.offset,status:null==p?void 0:p.filterByStatus,fiatCurrency:null==I?void 0:I.currency},{fetchPolicy:"no-cache"}),A=null===(m=null===(c=null==w?void 0:w.data)||void 0===c?void 0:c.getAllInvoices)||void 0===m?void 0:m.data,D=null==A?void 0:A.map((l=>{var i,o,d,e,v,c,m,y,f,g,w;const A=(null===(i=l.fromWalletAddress)||void 0===i?void 0:i.toLowerCase())===(null===(o=null==I?void 0:I.walletAddress)||void 0===o?void 0:o.toLowerCase()),h=(null===(d=l.toWalletAddress)||void 0===d?void 0:d.toLowerCase())===(null===(e=null==I?void 0:I.walletAddress)||void 0===e?void 0:e.toLowerCase());return{date:n(null==l?void 0:l.createdAt).format("MM/DD/YYYY | hh:mm A"),activityName:(null==l?void 0:l.tokenName)||(null==l?void 0:l.itemName),OrderID:null==l?void 0:l.id,InvoiceID:null==l?void 0:l.invoiceID,TransactionHash:null==l?void 0:l.transactionHash,NetworkId:null==l?void 0:l.networkID,itemName:(null==l?void 0:l.eventType)?a(null===(v=null==l?void 0:l.eventType)||void 0===v?void 0:v.toString()):"Purchased",tokenId:null==l?void 0:l.onChainTokenID,placeholderImage:null==p?void 0:p.placeholderImage,listingImage:void 0,nftTokenId:null!==(c=null==l?void 0:l.itemID)&&void 0!==c?c:"",contractAddress:null!==(m=null==l?void 0:l.contractAddress)&&void 0!==m?m:"",status:(null==l?void 0:l.transactionStatus)?r(null===(y=null==l?void 0:l.transactionStatus)||void 0===y?void 0:y.toString()):"",tokenImage:(null==l?void 0:l.image)?t(null==l?void 0:l.image):null==p?void 0:p.placeholderImage,price:{value:null!==(f=null==l?void 0:l.PriceCrypto)&&void 0!==f?f:0,unit:"ethereum"===I.walletType?"ETH":"VIN",usdValue:(null==l?void 0:l.usdItemPrice)?null===(g=u(null==l?void 0:l.usdItemPrice))||void 0===g?void 0:g.toString():"0"},activity:(null==l?void 0:l.eventType)?s(null===(w=null==l?void 0:l.eventType)||void 0===w?void 0:w.toString(),A,h):"Sold_Item",isSecondary:null==l?void 0:l.isSecondary,eventType:null==l?void 0:l.eventType,fromWalletAddress:null==l?void 0:l.fromWalletAddress,toWalletAddress:null==l?void 0:l.toWalletAddress}}));return b(null!=D?D:[]),U(null!==(g=null===(f=null===(y=null==w?void 0:w.data)||void 0===y?void 0:y.getAllInvoices)||void 0===f?void 0:f.count)&&void 0!==g?g:0),E(!1),D}catch(l){return E(!1),b(null),null}}),[p,I.walletType,I.walletAddress,null==I?void 0:I.currency,z,S,h]),Z=i((async(l,i,o)=>{var d;try{x(!0);const e=await k({urlInput:{url:null!=l?l:"",contractAddress:null!=i?i:"",tokenID:null!=o?o:""}}),n=null===(d=null==e?void 0:e.data)||void 0===d?void 0:d.getFileSignedURL;return x(!1),n}catch(l){return x(!1),null}}),[k]),ll=i((()=>{Y(!0)}),[]),il=i((()=>{_(!0)}),[]);return o((()=>{V&&(null==I?void 0:I.walletAddress)&&(null==I?void 0:I.networkId)&&(J(),Y(!1))}),[V,null==I?void 0:I.walletAddress,null==I?void 0:I.networkId,J]),o((()=>{H?(X(),_(!1)):(null==I?void 0:I.walletAddress)||(b(null),E(!1),_(!1))}),[H,X,null==I?void 0:I.walletAddress]),o((()=>{(null==y?void 0:y.invoiceID)&&Q()}),[y,Q]),{activeWalletsLoading:C,activeWalletsData:P,activityLoading:L,totalActivity:j,activityData:W,networkData:F,totalActiveWallets:M,fetchActiveWalletItems:ll,fetchActivityItems:il,downloadUrlLoading:q,getDownloadUrl:Z}};export{I as useWallet};