UNPKG

@mojito-inc/secondary-market

Version:

Mojito secondary market is the platform to purchase NFT.

2 lines (1 loc) 3.23 kB
import{useState as l,useCallback as o,useEffect as t}from"react";import{useNFT as n}from"@mojito-inc/core-service";import{truncateDecimal as i}from"../utils/truncateDecimal.utils.js";import{truncateAddress as d}from"../utils/truncateAddress.utils.js";import{getTraitsDescription as r,getTraitsPercent as e}from"../utils/traits.utils.js";import{getTotalVin as u}from"../utils/getTotalVin.utils.js";const a=a=>{const{getNFTHistory:v,getNFTAttributesRarity:c}=n(),[s,m]=l(),[p,f]=l(),[h,T]=l(!1),[I,y]=l(!1),[k,g]=l(!1),[w,A]=l(!1),[C,D]=l(0),N=o((()=>{g(!0)}),[]),F=o((()=>{A(!0)}),[]),R=o((async()=>{var l,o,t,n,r,e,u,c,s,p,f,h,I;const y=null==a?void 0:a.onChainTokenID;try{T(!0),m(null);const k=await v({nftTokenId:a.itemId,orgId:a.orgId,contractAddress:a.contractAddress,tokenId:y,networkId:null==a?void 0:a.networkId,ownerAddress:null==a?void 0:a.ownerAddress,limit:null!==(l=null==a?void 0:a.limit)&&void 0!==l?l:10,offset:(null!==(o=null==a?void 0:a.offset)&&void 0!==o?o:0)*(null!==(t=null==a?void 0:a.limit)&&void 0!==t?t:0),currency:(null==a?void 0:a.currency)||"USD"},{fetchPolicy:"no-cache"}),g=null===(r=null===(n=null==k?void 0:k.data)||void 0===n?void 0:n.getNFTHistoryV2)||void 0===r?void 0:r.data,w=null==g?void 0:g.map((l=>{var o,t,n;const r=null==l?void 0:l.price;return{eventType:0===Number(null==l?void 0:l.from)?"Minted":null==l?void 0:l.eventType,price:r?`${i(null===(o=null==r?void 0:r[1])||void 0===o?void 0:o.value)} ${null===(t=null==r?void 0:r[1])||void 0===t?void 0:t.unit}`:"—",from:(null==l?void 0:l.from)?d(null==l?void 0:l.from):"—",to:(null==l?void 0:l.to)?d(null==l?void 0:l.to):"—",blockTimestamp:null==l?void 0:l.blockTimestamp,hash:null!==(n=null==l?void 0:l.hash)&&void 0!==n?n:null}})),A=(null!==(c=null===(u=null===(e=null==k?void 0:k.data)||void 0===e?void 0:e.getNFTHistoryV2)||void 0===u?void 0:u.totalCount)&&void 0!==c?c:0)/(null!==(s=null==a?void 0:a.limit)&&void 0!==s?s:0),C=(null!==(h=null===(f=null===(p=null==k?void 0:k.data)||void 0===p?void 0:p.getNFTHistoryV2)||void 0===f?void 0:f.totalCount)&&void 0!==h?h:0)%(null!==(I=null==a?void 0:a.limit)&&void 0!==I?I:0),N=Math.floor(A);return D(C>0?N+1:N),m(w),T(!1),w}catch(l){return T(!1),m(null),null}}),[a,v]),b=o((async()=>{var l;const o=null==a?void 0:a.onChainTokenID;try{y(!0),A(!1);const t=await c({contractAddress:a.contractAddress,networkID:a.networkId,tokenID:o,refreshCatch:!1}),n=null===(l=null==t?void 0:t.data)||void 0===l?void 0:l.getNFTAttributesRarity,i=null==n?void 0:n.map((l=>({title:String(null==l?void 0:l.traitType),description:r(null==l?void 0:l.value),percent:e(l.prevalance)})));if(a.showSpecialTraits&&(a.connectedChainId||(null==a?void 0:a.customRPCUrl))){const l=await u(a.onChainTokenID,a.connectedChainId,null==a?void 0:a.customRPCUrl);l>0&&(null==i||i.unshift({title:"Special",description:"TOTAL VIN",percent:null==l?void 0:l.toString()}))}return f(i),y(!1),i}catch(l){return y(!1),f(null),null}}),[a,c]);return t((()=>{(null==a?void 0:a.networkId)&&k&&(R(),g(!1))}),[a,k,R]),t((()=>{(null==a?void 0:a.networkId)&&w&&(b(),A(!1))}),[a,w,b]),{provenanceData:s,provenanceLoading:h,traitsData:p,traitsLoading:I,totalProvenanceData:C,provenanceRefetch:N,traitsRefetch:F}};export{a as useProvenance};