@particle-network/authkit
Version:
Auth Core provides MPC (Multi-Party Computation)-based threshold signatures.
3 lines (2 loc) • 8.43 kB
JavaScript
"use client";
import{a as $,b as J,c as Q,d as X}from"./chunk-7WFBS4BS.mjs";import{a as j}from"./chunk-ASWASXYK.mjs";import"./chunk-IOEQ3TXF.mjs";import{a as W}from"./chunk-OVV6E33Q.mjs";import{F as H,J as O,O as y,U as T,a as q,ma as Z,pa as Y,qa as R,sa as ss,ta as es,ua as ns,va as as}from"./chunk-6YEBFRI3.mjs";import"./chunk-2FKLQE76.mjs";import{RecordType as L}from"@particle-network/analytics";import{SolanaEnhancedMethod as ws,SolanaRpcMethod as t,analyticsRecord as D,getChainIcon as _s,isNeedRestoreWallet as ks,particleAuth as d,syncUserInfo as os}from"@particle-network/auth-core";import{Button as is,Modal as Ps,Tabs as bs}from"antd";import N from"bs58";import e,{useEffect as U,useMemo as rs,useState as u}from"react";import Is from"react-copy-to-clipboard";var Cs="ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL",Ss={async findAssociatedTokenAddress(A,i){let{PublicKey:r}=await import("@solana/web3.js"),C=new r("TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA");return r.findProgramAddressSync([new r(A).toBuffer(),C.toBuffer(),new r(i).toBuffer()],new r(Cs))[0]}},z=Ss;function Ms(A){let{method:i,param:r,chainId:C,loginAuthorizationSign:x}=A,{t:o}=as(),S=ss(),{setPaymentVerify:ts,userInfo:c,setPaymentPassword:ds}=Y(),{events:w}=ns(),{modalOptions:_}=es(),{authCoreModal:ls}=R(),{errorHandle:cs}=j(),[B,k]=u(!1),V=H(),[m,ms]=u(),[P,gs]=u(),[b,ps]=u(),[us,v]=u(""),[vs,f]=u(""),{hasSetPaymentPassword:I,showSetPaymentPasswordOrConfirm:fs}=J(),g=rs(()=>({id:C||d.solana.chainId,name:"Solana"}),[]),hs=rs(()=>{let a=d.solana.selectedAddress;return y(a)},[]);U(()=>{os().catch(a=>{}),ks()&&S("account/master-password/verify")},[S]);let ys=()=>{os().then(()=>{K()}).catch(a=>{var s;k(!1),V.error((s=a.message)!=null?s:"Sign Error")})},F=(a,s)=>{w.emit("signResponse",{result:a,error:s})};async function G(a,s){if(!s)return[];let n=await Promise.all(s.map(a));return s.filter((p,l)=>n[l])}let K=async()=>{var a,s;!i||(D({record_type:L.PAGE_SIGN_CONFIRM_BUTTON_CLICK}),(a=c==null?void 0:c.security_account)!=null&&a.has_set_payment_password?ts({visible:!0,onVerifyCompleted:M}):i===t.signAndSendTransaction||i===t.signTransaction||i===t.signAllTransactions||((s=_==null?void 0:_.promptSettingConfig)==null?void 0:s.promptPaymentPasswordSettingWhenSign)===3?fs(M):M())},M=async()=>{var s;if(!i)return;k(!0);let a;try{if(i===t.signMessage){let{signature:n}=await d.solana.signMessage(r);a=n}else if(i===t.signAndSendTransaction){let{signature:n}=await d.solana.signAndSendTransaction(r,g.id);a=n}else if(i===t.signTransaction)a=await d.solana.signTransaction(r,g.id);else if(i===t.signAllTransactions)a=await d.solana.signAllTransactions(r,g.id);else throw new Error("Unknown method");D({record_type:L.PAGE_SIGN_CONFIRM_BUTTON_CLICK_SUCCESS})}catch(n){D({record_type:L.PAGE_SIGN_CONFIRM_BUTTON_CLICK_FAILURE}),(n==null?void 0:n.error_code)===50103&&!((s=c==null?void 0:c.security_account)!=null&&s.has_set_payment_password)?ys():(n==null?void 0:n.message)==="Local Key not found"||(n==null?void 0:n.message)==="Master password decryption error"?S("account/master-password/verify"):cs(n)}finally{k(!1)}a&&(i===t.signMessage&&x?w.emit("loginSuccess",{...c,authorization:{message:N.encode(r),signature:a}}):F(a))},Ts=()=>{B||(x?w.emit("loginSuccess",c):F(void 0,q.userRejectedRequest()))};U(()=>{if(i===t.signMessage)v(o("sign.signature_message")),f(o("sign.signature_title"));else if(i===t.signAndSendTransaction){v(o("sign.send_transaction")),f(o("sign.approve_and").format(O(g)));let a=r.serialize({requireAllSignatures:!1,verifySignatures:!1});h([N.encode(a)])}else if(i===t.signTransaction){v(o("sign.sign_transaction")),f(o("sign.sign_but"));let a=r.serialize({requireAllSignatures:!1,verifySignatures:!1});h([N.encode(a)])}else if(i===t.signAllTransactions){v(o("sign.sign_transaction")),f(o("sign.sign_but"));let a=r.map(s=>N.encode(s.serialize({requireAllSignatures:!1,verifySignatures:!1})));h(a)}else throw new Error("Unknown method")},[r,o]),U(()=>{d.solana.connect()},[]);let h=a=>{d.solana.request({chainId:g.id,method:ws.enhancedDeserializeTransaction,params:a}).then(s=>{var n,p;ms(s),G(async l=>{let E=await z.findAssociatedTokenAddress(d.solana.selectedAddress,l.mint);return l.associatedTokenAddress===E.toBase58()},(n=s==null?void 0:s.estimatedChanges)==null?void 0:n.nfts).then(l=>{gs(l)}),G(async l=>{let E=await z.findAssociatedTokenAddress(d.solana.selectedAddress,l.mint);return l.associatedTokenAddress===E.toBase58()},(p=s==null?void 0:s.estimatedChanges)==null?void 0:p.tokens).then(l=>{ps(l)})}).catch(s=>{var n;Ps.error({title:(n=s.message)!=null?n:"Deserialize Transaction Error",okCancel:!0,cancelText:o("common.cancel"),okText:o("common.retry"),wrapClassName:"auth-core-modal-error",getContainer:()=>ls.rootBody,onOk:()=>{h(a)}})})},Ns=()=>{let s=new TextDecoder().decode(r);return e.createElement("div",{className:"sign-message"},e.createElement("div",{className:"message"+(I?"":" no-password-tip")},e.createElement("div",{className:"pre-wrap personal-message"},s)))},As=()=>{var a;return e.createElement(bs,{defaultActiveKey:"1",items:[{label:o("sign.details"),key:"1",children:e.createElement(e.Fragment,null,e.createElement("div",{className:"balance-change"},e.createElement("div",{className:"title"},o("sign.estimated_balance_change")),e.createElement("div",{className:"change-body"},(a=m==null?void 0:m.estimatedChanges)==null?void 0:a.sols.filter(s=>{var n,p;return s.address===((p=(n=d)==null?void 0:n.solana)==null?void 0:p.selectedAddress)}).map((s,n)=>e.createElement("div",{className:"change-title",key:`sol-change-${n}`},"SOL",e.createElement("div",{className:"change-val",style:s.lamportsChange<0?{color:"#ea4335"}:{}},s.lamportsChange<0?"":"+",T(s.lamportsChange,9)))),P==null?void 0:P.map((s,n)=>e.createElement("div",{className:"change-title",key:`nft-change-${n}`},s.name?s.name:"Unknown NFT",e.createElement("div",{className:"change-val",style:s.amountChange<0?{color:"#ea4335"}:{}},s.amountChange<0?"":"+",s.amountChange))),b==null?void 0:b.map((s,n)=>e.createElement("div",{className:"change-title",key:`token-change-${n}`},s.name?s.name:"Unknown Token",e.createElement("div",{className:"change-val",style:s.amountChange<0?{color:"#ea4335"}:{}},s.amountChange<0?"":"+",T(s.amountChange,s.decimals)))))),e.createElement("div",{className:"net-fee solana"},e.createElement("div",{className:"title"},o("sign.network_fee"),m&&e.createElement("div",{className:"fee-val"},T(m.estimatedLamportsFee,9)," SOL"))))},{label:o("sign.data"),key:"2",children:e.createElement("div",null,m==null?void 0:m.instructions.map((s,n)=>e.createElement("div",{className:"inner-instruction",key:`instruction-${n}`},e.createElement("div",{className:"inner-content"},e.createElement("div",{className:"content-item"},e.createElement("div",{className:"item"},e.createElement("div",{className:"item-0"},"#",n+1," - ",o(`program.${s.type}`)),e.createElement("div",{className:"item-1 mt10"},o("sign.program_id"),e.createElement("span",null,y(s.programId))),e.createElement("div",{className:"item-1 mt15"},o("sign.data"),e.createElement("span",null,y(s.data)))))))))}]})};return e.createElement("div",{className:"info-sign"},e.createElement("style",null,Q),!I&&e.createElement("div",{className:"has-payment-password","data-telegram":Z()},e.createElement("div",{className:"has-payment-password-icon"}),e.createElement("div",{className:"has-payment-password-tip"},o("account.waring_tip1")),e.createElement("div",{className:"has-payment-password-set",onClick:ds},o("account.set"))),e.createElement("div",{className:"scroll-part"+(I?"":" no-password-tip")},e.createElement(X,{userInfo:c,transactionInfo:m}),e.createElement("div",{className:"info-request"},us),e.createElement("div",{className:"info-title"},e.createElement("img",{src:_s(g),alt:""}),O(g)),e.createElement(Is,{text:d.solana.selectedAddress,onCopy:()=>V.success(o("new.copied_to"))},e.createElement("div",{className:"info-address"},hs,e.createElement("div",{className:"copy-icon"},e.createElement($,null)))),e.createElement("div",{className:"info-des"},vs),e.createElement("div",{className:"apart-line"}),i===t.signMessage&&Ns(),i!==t.signMessage&&As()),e.createElement("div",{className:"btn-box"},e.createElement("div",null,e.createElement(is,{className:"btn-cancel",onClick:Ts},o("common.cancel")),e.createElement(is,{className:"btn-approve",onClick:K,loading:B},o("common.confirm"))),e.createElement(W,null)))}var Ys=Ms;export{Ys as default};