UNPKG

@particle-network/authkit

Version:

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

178 lines (177 loc) 9.6 kB
"use client"; import{a as j}from"./chunk-F667ZJ7S.mjs";import{a as D}from"./chunk-ED37MMH4.mjs";import"./chunk-VCCEGEQN.mjs";import{c as k}from"./chunk-2ZJMGRDL.mjs";import{a as O}from"./chunk-5FDQ257G.mjs";import{M as U,P as F,c as z,d as V,h as q,qa as G,ra as H,sa as $,ta as J,wa as K}from"./chunk-PW43K4P2.mjs";import"./chunk-2FKLQE76.mjs";import{ApiError as m,AuthType as g,bindLoginAccount as be,getBindSecurityAccounCaptcha as Ce,getCloudflareTurnstileResponse as _e,getSecurityAccountCaptcha as we,getSecurityAccountToken as Ae,setPaymentPassword as Te,syncUserInfo as R,thirdpartyAuth as ke}from"@particle-network/auth-core";import Le from"ahooks/es/useInterval";import h from"ahooks/es/useRequest";import W from"antd/es/button";import Se from"antd/es/modal";import Be from"base64url";import Ne from"lodash/throttle.js";import o,{useCallback as Ee,useEffect as X,useMemo as Me,useRef as Pe,useState as v}from"react";var Q=`.set-viery-container { position: relative; display: flex; flex-direction: column; align-items: center; height: 100%; overflow: auto; color: var(--text-color); } .set-viery-container .footer-box { position: absolute; bottom: 10px; margin: 0; } @media only screen and (max-height: 520px) { .set-viery-container .footer-box { position: unset; bottom: 0; margin-top: 20px; margin-bottom: 10px; } } .set-viery-container .display-none { display: none; } .set-viery-container .error-tip { width: 90%; height: 0; padding-left: 10px; margin-top: 6px; margin-bottom: 0; text-align: left; color: red; opacity: 0; transition: all 0.3s; } .set-viery-container .error-tip.show { height: 30px; opacity: 1; } .set-viery-container .set-email-title { margin-top: 60px; font-size: 22px; color: var(--text-color); } .set-viery-container .patment-tips1 { width: 80vw; margin-top: 30px; font-size: 14px; text-align: center; color: var(--text-color); } @media (min-width: 600px) { .set-viery-container .patment-tips1 { width: calc(80 * var(--vw)); } } .set-viery-container .set-email-buttons { position: absolute; bottom: 0; left: 0; display: flex; flex-direction: column; justify-content: flex-end; align-items: center; width: 100%; height: auto; padding-bottom: 20px; } .set-viery-container .success-icon { width: 50px; height: 50px; margin-top: 60px; } .set-viery-container .set-email-desc-1 { box-sizing: border-box; padding: 0 18px; margin: 15px 0 25px; font-weight: 400; font-size: 14px; line-height: 16px; text-align: center; color: var(--text-color); } .set-viery-container .account-submit-btn { width: 90%; height: 47px; padding: 0; margin-top: 38px; border: none; border-radius: var(--primary-btn-border-radius); font-weight: 500; font-size: var(--primary-btn-font-size); line-height: 47px; text-align: center; color: var(--primary-btn-color); background: var(--primary-btn-background-color); opacity: 1; } .set-viery-container .account-submit-btn:hover { border: none; color: var(--primary-btn-color) !important; background: var(--primary-btn-background-color) !important; opacity: var(--hover-opacity); } .set-viery-container .account-switch-item { margin-top: 40px; font-weight: 500; font-size: 13px; line-height: 19px; color: var(--accent-color); cursor: pointer; } .set-viery-container .set-email-desc-2 { min-width: 116px; height: 23px; padding: 0 15px; margin: 20px 0 28px; border-radius: var(--primary-btn-border-radius); font-weight: 400; font-size: 12px; line-height: 23px; text-align: center; color: var(--secondary-text-color); background: var(--tag-background-color); opacity: 1; } .set-viery-container .back { display: flex; align-items: center; margin-top: 90px; font-weight: 400; font-size: 16px; line-height: 19px; color: var(--accent-color); opacity: 1; cursor: pointer; gap: 8px; } .set-viery-container .back svg { position: relative; top: -1px; color: var(--accent-color); } .set-viery-container .code-error { position: absolute; left: calc((100vw - 316px) / 2); margin-top: 224px; font-weight: 400; font-size: 12px; color: var(--error-color); } @media (min-width: 600px) { .set-viery-container .code-error { left: calc((var(--vw) * 100 - 316px) / 2); } } .set-viery-container .send-again { margin-top: 20px; border: none !important; outline: none !important; font-weight: 400; font-size: 16px; line-height: 19px; color: var(--text-color); background-color: transparent; box-shadow: none; } .set-viery-container .send-again:hover { color: var(--text-color) !important; background-color: transparent !important; } .set-viery-container .send-again:disabled { opacity: 0.5; } `;var Ie=Y=>{let c=J(),{t:n}=K(),Z=Y,x=U(),{customRouter:ee}=$(),{themeType:te,language:ne}=F(),{account:a,pageType:d,authType:s,verifyToken:oe,redirectUrl:ie,password:re}=Z,[b,ae]=v(""),[L,C]=v(1e3),[y,_]=v(60),[w,l]=v(),{authCoreModal:S}=H(),{userInfo:se}=G(),[ce,B]=v(!1),N=Pe(null);Le(()=>{if(y>0){let e=y-1;_(e),e===0&&C(void 0)}},L);let{run:E}=h(async e=>d==="bind_login_account"?(e={[s]:a,cf_turnstile_response:e.cf_turnstile_response},Ce(e).then(t=>t)):we(e.verifyCodeMethod),{manual:!0,onSuccess:(e,t)=>{L||(_(60),C(1e3))},onError:e=>{_(0),C(void 0)}}),{runAsync:M}=h(Ae,{manual:!0,onBefore:()=>{B(!0)},onError:e=>{(e==null?void 0:e.error_code)===m.InvalidCode?l(n("login.invalid_code")):(e==null?void 0:e.error_code)===m.ResendCode?l(n("login.please_send_again")):e.message&&x.error(e.message)},onFinally:()=>{setTimeout(()=>{B(!1)},2e3)}}),{loading:le,runAsync:de}=h(async e=>be(e).then(async()=>{await R()}),{manual:!0,onSuccess:e=>{x.success(n("new.bind_login_account_success"))},onError:e=>{var i;let t=e.message;if((e==null?void 0:e.error_code)===m.InvalidCode){l(n("login.invalid_code"));return}else if((e==null?void 0:e.error_code)===m.ResendCode){l(n("login.please_send_again"));return}else e.error_code===20109?t=s==g.email?n("error.server_email_20109"):n("error.server_phone_20109"):t=((i=e==null?void 0:e.extra)==null?void 0:i[0])||e.message;Se.error({title:t,wrapClassName:"auth-core-modal-error",getContainer:()=>S.rootBody,onOk:()=>{var r;(r=N.current)==null||r.clear(),e.error_code===20109&&c(-1)}})}}),{loading:ue,run:pe}=h(Te,{manual:!0,onError:e=>{(e==null?void 0:e.error_code)===m.InvalidCode?l(n("login.invalid_code")):(e==null?void 0:e.error_code)===m.ResendCode&&l(n("login.please_send_again"))},onSuccess:(e,t)=>{R();let i=["account/security","solana/sign","evm-chain/sign"],r=i.map(T=>{var u;return(u=ee.history)==null?void 0:u.findIndex(p=>p.path===T)}),A=r.indexOf(Math.max(...r));c(i[A],{replace:!0,back:!0})}}),{loading:me,run:ze}=h(()=>new Promise((e,t)=>{}),{manual:!0,onSuccess:e=>{}}),f=Me(()=>a!=null&&a.includes("@")?g.email:g.phone,[a]);X(()=>{P()},[a]);let P=()=>{l(""),d==="bind_login_account"&&s===g.phone?_e({theme:te,language:ne,getContainer:()=>S.rootBody}).then(e=>{E({verify_code_method:f,cf_turnstile_response:e})}).catch(()=>{x.error(n("error.server_20112")),c(-1)}):E({verifyCodeMethod:f})},ge=e=>{l(""),ae(e),e.length===6&&ye(e)},ye=Ee(Ne(e=>{I(e)},1e3,{leading:!0,trailing:!1}),[]),fe=e=>{pe({password:re,verifyCodeMethod:f,code:e||b})},I=(e="")=>{if(w)return;let t={code:e};d==="reset_payment_password"?fe(e):d=="verify_security_account_set_security_account"?M({verifyCodeMethod:f,code:e}).then(i=>{c("/account/bind",{replace:!0,state:{accountType:s,verifyToken:i,redirectUrl:ie}})}):d==="verify_security_account_bind_login_account"?M({verifyCodeMethod:f,code:e}).then(i=>{let r=D({userInfo:se,t:n}),{id:A,value:T}=r.find(u=>u.type===s)||{};if(s===g.phone||s===g.email||T||A)c("/login-account/bind",{state:{authType:s,verifyToken:i},replace:!0});else{let u=Be.encode(JSON.stringify({verifyToken:i,purpose:"bindLoginAccount"}));ke({authType:s,appState:u,prompt:"select_account"}).catch(p=>{x.error((p==null?void 0:p.message)||p)})}}):d==="bind_login_account"?(t={...t,security_account_verify_token:oe,[s]:a},de(t).then(i=>{c(-2)})):"unbind_login_account"},he=()=>a.includes("@")?z(a):V(a);X(()=>{var i;let e=document.getElementsByClassName("react-input-code"),t=r=>r.preventDefault();return(i=e[0])==null||i.addEventListener("contextmenu",t),()=>{var r;(r=e[0])==null||r.removeEventListener("contextmenu",t)}},[]);let ve=()=>{var t;(t=document.getElementsByClassName("input-code-item")[Math.min(b.length,5)])==null||t.focus()};return o.createElement("div",{className:"set-viery-container"},o.createElement("style",null,q(Q)),o.createElement("div",{className:"account-header"},o.createElement(k,{className:"icon-navigation-back",name:"circle_back",onClick:()=>{c(-1)}})),o.createElement("h2",{className:"set-email-title"},n("account.enter_code")),o.createElement("p",{className:"set-email-desc-2"},he()),o.createElement("div",{onClick:ve},o.createElement(j,{containerClassName:"react-input-code",inputClassName:"input-code-item",allowedCharacters:"numeric",length:6,ref:N,placeholder:" ",onChange:ge})),w&&o.createElement("div",{className:"code-error"},w),o.createElement(W,{className:"account-submit-btn",loading:ue||ce||le||me,onClick:()=>{setTimeout(()=>{I(b)})},disabled:b.length!==6},n("common.confirm")),o.createElement(W,{className:"send-again",onClick:P,disabled:y>0},y>0?`${n("login.send_again")} (${y}s)`:n("login.send_again")),o.createElement("div",{className:"back",onClick:()=>{c(-1)}},o.createElement(k,{className:"arrow1-icon",name:"arrow1_icon"}),o.createElement("span",null,n("login.back"))),o.createElement(O,null))},et=Ie;export{et as default};