@mojito-inc/secondary-market
Version:
Mojito secondary market is the platform to purchase NFT.
2 lines (1 loc) • 5.87 kB
JavaScript
"use strict";var e=require("@solana/web3.js"),n=require("../constant/index.js"),i=require("./getEtherScanURL.utils.js"),a=require("./customErrorMessage.utils.js"),r=require("./getSolanaBalance.utils.js"),o=require("./fetchSolanaPriorityFee.utils.js");exports.cancelOfferSolanaItem=async(t,s,l,c,u,d,v,f,g,m,p=.00228288)=>{var h,y,E,S,b,w,T,P,k,I,L,B,C,R,D,_,M;try{if(!l)return{success:!1,error:"Your wallet session has been closed. Please reconnect your wallet to continue."};const s=i.getSolanaEnvByChainId(u),_=await r.getSolanaBalance(t,s,g),{err:M,instruction:O,connectedPublicKey:A,connection:U}=await(async(n,r,o,t,s)=>{var l,c,u,d,v;try{const a=new e.PublicKey(n),f=i.getSolanaEnvByChainId(r),g=new e.Connection(s||e.clusterApiUrl(f),{confirmTransactionInitialTimeout:3e5,commitment:"confirmed"}),m=new e.PublicKey(null!==(l=null==t?void 0:t.seller)&&void 0!==l?l:""),p=new e.PublicKey(null!==(c=null==t?void 0:t.offer)&&void 0!==c?c:""),h=new e.PublicKey(null!==(u=null==t?void 0:t.offerEscrow)&&void 0!==u?u:""),y=new e.PublicKey(null!==(d=null==t?void 0:t.systemProgram)&&void 0!==d?d:""),E=new e.PublicKey((null==t?void 0:t.mintAccount)||o);return{instruction:new e.TransactionInstruction({programId:h,keys:[{pubkey:a,isSigner:!0,isWritable:!0},{pubkey:m,isSigner:!1,isWritable:!0},{pubkey:E,isSigner:!1,isWritable:!0},{pubkey:p,isSigner:!1,isWritable:!0},{pubkey:y,isSigner:!1,isWritable:!0}],data:Buffer.concat([Buffer.from(null!==(v=null==t?void 0:t.descriminator)&&void 0!==v?v:[])])}),connectedPublicKey:a,connection:g,err:null}}catch(e){return{err:a.customErrorMessage(e)}}})(t,u,v,f,g);if(!M&&O){if("phantom"===c.toLowerCase()||"backpack"===c.toLowerCase()){const i=new e.Transaction({feePayer:A}).add(O),r=await U.getLatestBlockhash("confirmed");i.recentBlockhash=r.blockhash,i.lastValidBlockHeight=r.lastValidBlockHeight,i.add(e.ComputeBudgetProgram.setComputeUnitLimit({units:14e5}));const s=await o.fetchSolanaPriorityFee(g,i.serialize({verifySignatures:!1})),v=e.ComputeBudgetProgram.setComputeUnitPrice({microLamports:s});i.add(v);const f=await U.getFeeForMessage(i.compileMessage(),"confirmed"),B=(null!==(h=null==f?void 0:f.value)&&void 0!==h?h:0)+p*e.LAMPORTS_PER_SOL,C=_.native*e.LAMPORTS_PER_SOL;if(C<=0||C<B)return{success:!1,error:"Insufficient SOL for initiating the transaction."};try{d("Initiating cancel offer transaction.");const e=await(null===(E=null===(y=null==l?void 0:l.adapter)||void 0===y?void 0:y.sendTransaction)||void 0===E?void 0:E.call(y,i,U,{skipPreflight:!0,preflightCommitment:"confirmed"}));await U.confirmTransaction(Object.assign({signature:e},r),"confirmed");const n=await U.getSignatureStatus(e);return null===(null===(S=null==n?void 0:n.value)||void 0===S?void 0:S.err)?{success:!0,response:{hash:e}}:(null==m||m({key:"Additional Data",value:{address:t,balance:_,providerType:c,chainId:u,path:"Inside an cancel offer solana contract function - 136"}},{exception:null===(b=null==n?void 0:n.value)||void 0===b?void 0:b.err}),{success:!1,error:"Transaction Failed"})}catch(e){return(null===(T=null===(w=null==e?void 0:e.message)||void 0===w?void 0:w.includes)||void 0===T?void 0:T.call(w,n.ErrorsType.USER_REJECTED))||(null===(P=null==e?void 0:e.includes)||void 0===P?void 0:P.call(e,n.ErrorsType.USER_REJECTED))||(null===(k=null==e?void 0:e.includes)||void 0===k?void 0:k.call(e,n.ErrorsType.USER_DENIED))||(null===(L=null===(I=null==e?void 0:e.message)||void 0===I?void 0:I.includes)||void 0===L?void 0:L.call(I,n.ErrorsType.USER_DENIED))?{success:!1,error:"Transaction has been cancelled by user"}:(null==m||m({key:"Additional Data",value:{address:t,balance:_,providerType:c,chainId:u,path:"Inside an cancel offer solana contract function - 164"}},{exception:e}),{success:!1,error:a.customErrorMessage(e)})}}if("magic"===c.toLowerCase()){const n=new e.Transaction({feePayer:A}).add(O),i=await U.getLatestBlockhash("confirmed");n.recentBlockhash=i.blockhash,n.lastValidBlockHeight=i.lastValidBlockHeight,n.add(e.ComputeBudgetProgram.setComputeUnitLimit({units:14e5}));const a=await o.fetchSolanaPriorityFee(g,n.serialize({verifySignatures:!1})),r=e.ComputeBudgetProgram.setComputeUnitPrice({microLamports:a});n.add(r);const s=await U.getFeeForMessage(n.compileMessage(),"confirmed"),v=_.native*e.LAMPORTS_PER_SOL,f=(null!==(B=null==s?void 0:s.value)&&void 0!==B?B:0)+p*e.LAMPORTS_PER_SOL;if(v<=0||v<f)return{success:!1,error:"Insufficient SOL for initiating the transaction."};d("Initiating cancel offer transaction.");const h=await(null===(C=null==l?void 0:l.solana)||void 0===C?void 0:C.signTransaction(n,{requireAllSignatures:!1,verifySignatures:!0})),y=await U.sendRawTransaction(Buffer.from(h.rawTransaction,"base64"),{skipPreflight:!0,preflightCommitment:"confirmed"});await U.confirmTransaction(Object.assign({signature:y},i),"confirmed");const E=await U.getSignatureStatus(y);return null===(null===(R=null==E?void 0:E.value)||void 0===R?void 0:R.err)?{success:!0,response:{hash:y}}:(null==m||m({key:"Additional Data",value:{address:t,balance:_,providerType:c,chainId:u,path:"Inside an cancel offer solana contract function - 233"}},{exception:null===(D=null==E?void 0:E.value)||void 0===D?void 0:D.err}),{success:!1,error:"Transaction Failed"})}}return M?(null==m||m({key:"Additional Data",value:{address:t,balance:_,providerType:c,chainId:u,path:"Inside an make offer solana contract function - 252"}},{exception:M}),{success:!1,error:a.customErrorMessage(M)}):null}catch(e){return(null===(_=e.message)||void 0===_?void 0:_.includes(n.ErrorsType.USER_REJECTED))||(null===(M=e.message)||void 0===M?void 0:M.includes(n.ErrorsType.USER_DENIED))?{success:!1,error:"Transaction has been cancelled by user"}:(null==m||m({key:"Additional Data",value:{address:t,providerType:c,chainId:u,path:"Inside an make offer solana contract function - 267"}},{exception:e}),{success:!1,error:a.customErrorMessage(e)})}};