UNPKG

@particle-network/authkit

Version:

Auth Core provides MPC (Multi-Party Computation)-based threshold signatures.

3 lines (2 loc) 8.48 kB
"use client"; import{a as j,b as Q,c as Z,d as Y}from"./chunk-5KRYHIKT.mjs";import{a as J}from"./chunk-NNKBAW5Z.mjs";import"./chunk-DLTLN62L.mjs";import{a as $}from"./chunk-PPJQVDG4.mjs";import{M as W,Q as O,V as T,a as q,b as y,h as H,na as X,qa as R,ra as ee,ta as se,ua as ne,va as ae,wa as oe}from"./chunk-WAC3ZEJ3.mjs";import"./chunk-2FKLQE76.mjs";import{RecordType as L}from"@particle-network/analytics";import{SolanaEnhancedMethod as _e,SolanaRpcMethod as t,analyticsRecord as D,getChainIcon as ke,isNeedRestoreWallet as Pe,particleAuth as d,syncUserInfo as ie}from"@particle-network/auth-core";import re from"antd/es/button";import be from"antd/es/modal";import Ie from"antd/es/tabs";import N from"bs58";import s,{useEffect as U,useMemo as te,useState as u}from"react";import Me from"react-copy-to-clipboard";var Se="ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL",we={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(Se))[0]}},z=we;function Ee(A){let{method:i,param:r,chainId:C,loginAuthorizationSign:x}=A,{t:o}=oe(),S=se(),{setPaymentVerify:de,userInfo:c,setPaymentPassword:le}=R(),{events:w}=ae(),{modalOptions:_}=ne(),{authCoreModal:ce}=ee(),{errorHandle:me}=J(),[B,k]=u(!1),V=W(),[m,ge]=u(),[P,pe]=u(),[b,ue]=u(),[ve,v]=u(""),[fe,f]=u(""),{hasSetPaymentPassword:I,showSetPaymentPasswordOrConfirm:he}=Q(),g=te(()=>({id:C||d.solana.chainId,name:"Solana"}),[]),ye=te(()=>{let a=d.solana.selectedAddress;return y(a)},[]);U(()=>{ie().catch(a=>{}),Pe()&&S("account/master-password/verify")},[S]);let Te=()=>{ie().then(()=>{K()}).catch(a=>{var e;k(!1),V.error((e=a.message)!=null?e:"Sign Error")})},F=(a,e)=>{w.emit("signResponse",{result:a,error:e})};async function G(a,e){if(!e)return[];let n=await Promise.all(e.map(a));return e.filter((p,l)=>n[l])}let K=async()=>{var a,e;!i||(D({record_type:L.PAGE_SIGN_CONFIRM_BUTTON_CLICK}),(a=c==null?void 0:c.security_account)!=null&&a.has_set_payment_password?de({visible:!0,onVerifyCompleted:M}):i===t.signAndSendTransaction||i===t.signTransaction||i===t.signAllTransactions||((e=_==null?void 0:_.promptSettingConfig)==null?void 0:e.promptPaymentPasswordSettingWhenSign)===3?he(M):M())},M=async()=>{var e;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&&!((e=c==null?void 0:c.security_account)!=null&&e.has_set_payment_password)?Te():(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"):me(n)}finally{k(!1)}a&&(i===t.signMessage&&x?w.emit("loginSuccess",{...c,authorization:{message:N.encode(r),signature:a}}):F(a))},Ne=()=>{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(e=>N.encode(e.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:_e.enhancedDeserializeTransaction,params:a}).then(e=>{var n,p;ge(e),G(async l=>{let E=await z.findAssociatedTokenAddress(d.solana.selectedAddress,l.mint);return l.associatedTokenAddress===E.toBase58()},(n=e==null?void 0:e.estimatedChanges)==null?void 0:n.nfts).then(l=>{pe(l)}),G(async l=>{let E=await z.findAssociatedTokenAddress(d.solana.selectedAddress,l.mint);return l.associatedTokenAddress===E.toBase58()},(p=e==null?void 0:e.estimatedChanges)==null?void 0:p.tokens).then(l=>{ue(l)})}).catch(e=>{var n;be.error({title:(n=e.message)!=null?n:"Deserialize Transaction Error",okCancel:!0,cancelText:o("common.cancel"),okText:o("common.retry"),wrapClassName:"auth-core-modal-error",getContainer:()=>ce.rootBody,onOk:()=>{h(a)}})})},Ae=()=>{let e=new TextDecoder().decode(r);return s.createElement("div",{className:"sign-message"},s.createElement("div",{className:"message"+(I?"":" no-password-tip")},s.createElement("div",{className:"pre-wrap personal-message"},e)))},Ce=()=>{var a;return s.createElement(Ie,{defaultActiveKey:"1",items:[{label:o("sign.details"),key:"1",children:s.createElement(s.Fragment,null,s.createElement("div",{className:"balance-change"},s.createElement("div",{className:"title"},o("sign.estimated_balance_change")),s.createElement("div",{className:"change-body"},(a=m==null?void 0:m.estimatedChanges)==null?void 0:a.sols.filter(e=>{var n,p;return e.address===((p=(n=d)==null?void 0:n.solana)==null?void 0:p.selectedAddress)}).map((e,n)=>s.createElement("div",{className:"change-title",key:`sol-change-${n}`},"SOL",s.createElement("div",{className:"change-val",style:e.lamportsChange<0?{color:"#ea4335"}:{}},e.lamportsChange<0?"":"+",T(e.lamportsChange,9)))),P==null?void 0:P.map((e,n)=>s.createElement("div",{className:"change-title",key:`nft-change-${n}`},e.name?e.name:"Unknown NFT",s.createElement("div",{className:"change-val",style:e.amountChange<0?{color:"#ea4335"}:{}},e.amountChange<0?"":"+",e.amountChange))),b==null?void 0:b.map((e,n)=>s.createElement("div",{className:"change-title",key:`token-change-${n}`},e.name?e.name:"Unknown Token",s.createElement("div",{className:"change-val",style:e.amountChange<0?{color:"#ea4335"}:{}},e.amountChange<0?"":"+",T(e.amountChange,e.decimals)))))),s.createElement("div",{className:"net-fee solana"},s.createElement("div",{className:"title"},o("sign.network_fee"),m&&s.createElement("div",{className:"fee-val"},T(m.estimatedLamportsFee,9)," SOL"))))},{label:o("sign.data"),key:"2",children:s.createElement("div",null,m==null?void 0:m.instructions.map((e,n)=>s.createElement("div",{className:"inner-instruction",key:`instruction-${n}`},s.createElement("div",{className:"inner-content"},s.createElement("div",{className:"content-item"},s.createElement("div",{className:"item"},s.createElement("div",{className:"item-0"},"#",n+1," - ",o(`program.${e.type}`)),s.createElement("div",{className:"item-1 mt10"},o("sign.program_id"),s.createElement("span",null,y(e.programId))),s.createElement("div",{className:"item-1 mt15"},o("sign.data"),s.createElement("span",null,y(e.data)))))))))}]})};return s.createElement("div",{className:"info-sign"},s.createElement("style",null,H(Z)),!I&&s.createElement("div",{className:"has-payment-password","data-telegram":X()},s.createElement("div",{className:"has-payment-password-icon"}),s.createElement("div",{className:"has-payment-password-tip"},o("account.waring_tip1")),s.createElement("div",{className:"has-payment-password-set",onClick:le},o("account.set"))),s.createElement("div",{className:"scroll-part"+(I?"":" no-password-tip")},s.createElement(Y,{userInfo:c,transactionInfo:m}),s.createElement("div",{className:"info-request"},ve),s.createElement("div",{className:"info-title"},s.createElement("img",{src:ke(g),alt:""}),O(g)),s.createElement(Me,{text:d.solana.selectedAddress,onCopy:()=>V.success(o("new.copied_to"))},s.createElement("div",{className:"info-address"},ye,s.createElement("div",{className:"copy-icon"},s.createElement(j,null)))),s.createElement("div",{className:"info-des"},fe),s.createElement("div",{className:"apart-line"}),i===t.signMessage&&Ae(),i!==t.signMessage&&Ce()),s.createElement("div",{className:"btn-box"},s.createElement("div",null,s.createElement(re,{className:"btn-cancel",onClick:Ne},o("common.cancel")),s.createElement(re,{className:"btn-approve",onClick:K,loading:B},o("common.confirm"))),s.createElement($,null)))}var ss=Ee;export{ss as default};