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