@particle-network/authkit
Version:
Auth Core provides MPC (Multi-Party Computation)-based threshold signatures.
178 lines (177 loc) • 9.59 kB
JavaScript
"use client";
import{a as K}from"./chunk-W7SFM6OY.mjs";import"./chunk-YAWI32JU.mjs";import{a as J}from"./chunk-HDJHX24S.mjs";import{a as L}from"./chunk-NSWCC5PG.mjs";import{a as k}from"./chunk-BM7ICTT2.mjs";import{a as H}from"./chunk-ZTTU2K7E.mjs";import"./chunk-UXH6IVHO.mjs";import"./chunk-GYYKKPHD.mjs";import"./chunk-3RRPQ2DX.mjs";import{V as O,Y as $,c as z,d as V,h as q,l as U,m as F,n as j,o as D,r as G}from"./chunk-H6TXMQRA.mjs";import"./chunk-C7OWFSST.mjs";import{ApiError as g,AuthType as m,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 v from"ahooks/es/useRequest";import Pe from"base64url";import Se from"lodash/throttle.js";import o,{useCallback as Be,useEffect as W,useMemo as Ne,useRef as Ee,useState as x}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: opacity 0.3s, height 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=X=>{let c=D(),{t:n}=G(),Y=X,y=O(),{customRouter:Z}=j(),{themeType:ee,language:te}=$(),{account:r,pageType:d,authType:a,verifyToken:ne,redirectUrl:oe,password:ie}=Y,[b,se]=x(""),[P,C]=x(1e3),[f,_]=x(60),[w,l]=x(),{authCoreModal:re}=F(),{userInfo:ae}=U(),[ce,S]=x(!1),B=Ee(null);Le(()=>{if(f>0){let e=f-1;_(e),e===0&&C(void 0)}},P);let{run:N}=v(async e=>d==="bind_login_account"?(e={[a]:r,cf_turnstile_response:e.cf_turnstile_response},Ce(e).then(t=>t)):we(e.verifyCodeMethod),{manual:!0,onSuccess:(e,t)=>{P||(_(60),C(1e3))},onError:e=>{_(0),C(void 0)}}),{runAsync:E}=v(Ae,{manual:!0,onBefore:()=>{S(!0)},onError:e=>{(e==null?void 0:e.error_code)===g.InvalidCode?l(n("login.invalid_code")):(e==null?void 0:e.error_code)===g.ResendCode?l(n("login.please_send_again")):e.message&&y.error(e.message)},onFinally:()=>{setTimeout(()=>{S(!1)},2e3)}}),{loading:le,runAsync:de}=v(async e=>be(e).then(async()=>{await R()}),{manual:!0,onSuccess:e=>{y.success(n("new.bind_login_account_success"))},onError:e=>{var i,s;let t=e.message;if((e==null?void 0:e.error_code)===g.InvalidCode){l(n("login.invalid_code"));return}else if((e==null?void 0:e.error_code)===g.ResendCode){l(n("login.please_send_again"));return}else e.error_code===20109?t=a==m.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;y.error(t),(s=B.current)==null||s.clear(),e.error_code===20109&&c(-1)}}),{loading:ue,run:pe}=v(Te,{manual:!0,onError:e=>{(e==null?void 0:e.error_code)===g.InvalidCode?l(n("login.invalid_code")):(e==null?void 0:e.error_code)===g.ResendCode&&l(n("login.please_send_again"))},onSuccess:(e,t)=>{R();let i=["account/security","solana/sign","evm-chain/sign"],s=i.map(T=>{var u;return(u=Z.history)==null?void 0:u.findIndex(p=>p.path===T)}),A=s.indexOf(Math.max(...s));c(i[A],{replace:!0,back:!0})}}),{loading:ge,run:Me}=v(()=>new Promise((e,t)=>{}),{manual:!0,onSuccess:e=>{}}),h=Ne(()=>r!=null&&r.includes("@")?m.email:m.phone,[r]);W(()=>{I()},[r]);let I=()=>{l(""),d==="bind_login_account"&&a===m.phone?_e({theme:ee,language:te,getContainer:()=>re.rootBody}).then(e=>{N({verify_code_method:h,cf_turnstile_response:e})}).catch(()=>{y.error(n("error.server_20112")),c(-1)}):N({verifyCodeMethod:h})},me=e=>{l(""),se(e),e.length===6&&ye(e)},ye=Be(Se(e=>{M(e)},1e3,{leading:!0,trailing:!1}),[]),fe=e=>{pe({password:ie,verifyCodeMethod:h,code:e||b})},M=(e="")=>{if(w)return;let t={code:e};d==="reset_payment_password"?fe(e):d=="verify_security_account_set_security_account"?E({verifyCodeMethod:h,code:e}).then(i=>{c("/account/bind",{replace:!0,state:{accountType:a,verifyToken:i,redirectUrl:oe}})}):d==="verify_security_account_bind_login_account"?E({verifyCodeMethod:h,code:e}).then(i=>{let s=K({userInfo:ae,t:n}),{id:A,value:T}=s.find(u=>u.type===a)||{};if(a===m.phone||a===m.email||T||A)c("/login-account/bind",{state:{authType:a,verifyToken:i},replace:!0});else{let u=Pe.encode(JSON.stringify({verifyToken:i,purpose:"bindLoginAccount"}));ke({authType:a,appState:u,prompt:"select_account"}).catch(p=>{y.error((p==null?void 0:p.message)||p)})}}):d==="bind_login_account"?(t={...t,security_account_verify_token:ne,[a]:r},de(t).then(i=>{c(-2)})):"unbind_login_account"},he=()=>r.includes("@")?z(r):V(r);W(()=>{var i;let e=document.getElementsByClassName("react-input-code"),t=s=>s.preventDefault();return(i=e[0])==null||i.addEventListener("contextmenu",t),()=>{var s;(s=e[0])==null||s.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:B,placeholder:" ",onChange:me})),w&&o.createElement("div",{className:"code-error"},w),o.createElement(L,{className:"account-submit-btn",loading:ue||ce||le||ge,onClick:()=>{setTimeout(()=>{M(b)})},disabled:b.length!==6},n("common.confirm")),o.createElement(L,{className:"send-again",onClick:I,disabled:f>0},f>0?`${n("login.send_again")} (${f}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(H,null))},Ye=Ie;export{Ye as default};