@particle-network/authkit
Version:
Auth Core provides MPC (Multi-Party Computation)-based threshold signatures.
3 lines (2 loc) • 8.35 kB
JavaScript
"use client";
import{a as es,b as as,c as is,d as os,e as rs}from"./chunk-YVGNYJX7.mjs";import{a as ns}from"./chunk-HRKAGZXU.mjs";import{a as D,f as ss}from"./chunk-NSWCC5PG.mjs";import"./chunk-BM7ICTT2.mjs";import{a as R}from"./chunk-ZTTU2K7E.mjs";import"./chunk-Z2L3PYM6.mjs";import"./chunk-UXH6IVHO.mjs";import"./chunk-GYYKKPHD.mjs";import"./chunk-3RRPQ2DX.mjs";import{V as Y,Z as O,a as W,b as h,ea as y,h as H,l as $,m as j,o as J,p as Q,q as Z,r as X}from"./chunk-H6TXMQRA.mjs";import"./chunk-C7OWFSST.mjs";import{RecordType as U}from"@particle-network/analytics";import{SolanaEnhancedMethod as Cs,SolanaRpcMethod as t,analyticsRecord as V,getChainIcon as Ps,isNeedRestoreWallet as ks,particleAuth as d,syncUserInfo as ts}from"@particle-network/auth-core";import T from"bs58";import e,{useEffect as B,useMemo as ds,useState as v}from"react";var ws="ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL",_s={async findAssociatedTokenAddress(N,o){let{PublicKey:r}=await import("@solana/web3.js"),A=new r("TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA");return r.findProgramAddressSync([new r(N).toBuffer(),A.toBuffer(),new r(o).toBuffer()],new r(ws))[0]}},L=_s;function bs(N){let{method:o,param:r,chainId:A,loginAuthorizationSign:x}=N,{t:i}=X(),S=J(),{setPaymentVerify:ls,userInfo:c,setPaymentPassword:cs}=$(),{events:w}=Z(),{modalOptions:_}=Q(),{authCoreModal:Is}=j(),{errorHandle:ms}=ns(),[F,C]=v(!1),P=Y(),[m,gs]=v(),[k,ps]=v(),[b,vs]=v(),[us,u]=v(""),[fs,f]=v(""),{hasSetPaymentPassword:I,showSetPaymentPasswordOrConfirm:hs}=as(),g=ds(()=>({id:A||d.solana.chainId,name:"Solana"}),[]),ys=ds(()=>{let a=d.solana.selectedAddress;return h(a)},[]);B(()=>{ts().catch(a=>{}),ks()&&S("account/master-password/verify")},[S]);let Ts=()=>{ts().then(()=>{q()}).catch(a=>{var s;C(!1),P.error((s=a.message)!=null?s:"Sign Error")})},G=(a,s)=>{w.emit("signResponse",{result:a,error:s})};async function K(a,s){if(!s)return[];let n=await Promise.all(s.map(a));return s.filter((p,l)=>n[l])}let q=async()=>{var a,s;!o||(V({record_type:U.PAGE_SIGN_CONFIRM_BUTTON_CLICK}),(a=c==null?void 0:c.security_account)!=null&&a.has_set_payment_password?ls({visible:!0,onVerifyCompleted:M}):o===t.signAndSendTransaction||o===t.signTransaction||o===t.signAllTransactions||((s=_==null?void 0:_.promptSettingConfig)==null?void 0:s.promptPaymentPasswordSettingWhenSign)===3?hs(M):M())},M=async()=>{var s;if(!o)return;C(!0);let a;try{if(o===t.signMessage){let{signature:n}=await d.solana.signMessage(r);a=n}else if(o===t.signAndSendTransaction){let{signature:n}=await d.solana.signAndSendTransaction(r,g.id);a=n}else if(o===t.signTransaction)a=await d.solana.signTransaction(r,g.id);else if(o===t.signAllTransactions)a=await d.solana.signAllTransactions(r,g.id);else throw new Error("Unknown method");V({record_type:U.PAGE_SIGN_CONFIRM_BUTTON_CLICK_SUCCESS})}catch(n){V({record_type:U.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)?Ts():(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"):ms(n)}finally{C(!1)}a&&(o===t.signMessage&&x?w.emit("loginSuccess",{...c,authorization:{message:T.encode(r),signature:a}}):G(a))},Ns=()=>{F||(x?w.emit("loginSuccess",c):G(void 0,W.userRejectedRequest()))};B(()=>{if(o===t.signMessage)u(i("sign.signature_message")),f(i("sign.signature_title"));else if(o===t.signAndSendTransaction){u(i("sign.send_transaction")),f(i("sign.approve_and").format(O(g)));let a=r.serialize({requireAllSignatures:!1,verifySignatures:!1});E([T.encode(a)])}else if(o===t.signTransaction){u(i("sign.sign_transaction")),f(i("sign.sign_but"));let a=r.serialize({requireAllSignatures:!1,verifySignatures:!1});E([T.encode(a)])}else if(o===t.signAllTransactions){u(i("sign.sign_transaction")),f(i("sign.sign_but"));let a=r.map(s=>T.encode(s.serialize({requireAllSignatures:!1,verifySignatures:!1})));E(a)}else throw new Error("Unknown method")},[r,i]),B(()=>{d.solana.connect()},[]);let E=a=>{d.solana.request({chainId:g.id,method:Cs.enhancedDeserializeTransaction,params:a}).then(s=>{var n,p;gs(s),K(async l=>{let z=await L.findAssociatedTokenAddress(d.solana.selectedAddress,l.mint);return l.associatedTokenAddress===z.toBase58()},(n=s==null?void 0:s.estimatedChanges)==null?void 0:n.nfts).then(l=>{ps(l)}),K(async l=>{let z=await L.findAssociatedTokenAddress(d.solana.selectedAddress,l.mint);return l.associatedTokenAddress===z.toBase58()},(p=s==null?void 0:s.estimatedChanges)==null?void 0:p.tokens).then(l=>{vs(l)})}).catch(s=>{var n;P.error((n=s.message)!=null?n:"Deserialize Transaction Error")})},As=()=>{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)))},Ss=()=>{var a;return e.createElement(ss,{defaultActiveKey:"1",items:[{label:i("sign.details"),key:"1",children:e.createElement(e.Fragment,null,e.createElement("div",{className:"balance-change"},e.createElement("div",{className:"title"},i("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?"":"+",y(s.lamportsChange,9)))),k==null?void 0:k.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?"":"+",y(s.amountChange,s.decimals)))))),e.createElement("div",{className:"net-fee solana"},e.createElement("div",{className:"title"},i("sign.network_fee"),m&&e.createElement("div",{className:"fee-val"},y(m.estimatedLamportsFee,9)," SOL"))))},{label:i("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," - ",i(`program.${s.type}`)),e.createElement("div",{className:"item-1 mt10"},i("sign.program_id"),e.createElement("span",null,h(s.programId))),e.createElement("div",{className:"item-1 mt15"},i("sign.data"),e.createElement("span",null,h(s.data)))))))))}]})};return e.createElement("div",{className:"info-sign"},e.createElement("style",null,H(is)),!I&&e.createElement("div",{className:"has-payment-password","data-telegram":rs()},e.createElement("div",{className:"has-payment-password-icon"}),e.createElement("div",{className:"has-payment-password-tip"},i("account.waring_tip1")),e.createElement("div",{className:"has-payment-password-set",onClick:cs},i("account.set"))),e.createElement("div",{className:"scroll-part"+(I?"":" no-password-tip")},e.createElement(os,{userInfo:c,transactionInfo:m}),e.createElement("div",{className:"info-request"},us),e.createElement("div",{className:"info-title"},e.createElement("img",{src:Ps(g),alt:""}),O(g)),e.createElement("div",{className:"info-address",onClick:()=>{navigator.clipboard.writeText(d.solana.selectedAddress),P.success(i("new.copied_to"))}},ys,e.createElement("div",{className:"copy-icon"},e.createElement(es,null))),e.createElement("div",{className:"info-des"},fs),e.createElement("div",{className:"apart-line"}),o===t.signMessage&&As(),o!==t.signMessage&&Ss()),e.createElement("div",{className:"btn-box"},e.createElement("div",null,e.createElement(D,{className:"btn-cancel",onClick:Ns},i("common.cancel")),e.createElement(D,{className:"btn-approve",onClick:q,loading:F},i("common.confirm"))),e.createElement(R,null)))}var Zs=bs;export{Zs as default};