UNPKG

@particle-network/auth-core-modal

Version:

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

295 lines (294 loc) 14.8 kB
"use client"; import{a as J,b as Q}from"./chunk-TX7RTUXA.js";import{a as W}from"./chunk-BRNWLP7Y.js";import{a as I}from"./chunk-FEQ55Y6S.js";import{b as k}from"./chunk-J7QRBMDL.js";import{a as B}from"./chunk-5CZ6V5XL.js";import{H as A,qa as M,sa as L,u as K,w as O}from"./chunk-ZJXZXTA4.js";import"./chunk-L535NPP3.js";import{DownOutlined as fe}from"@ant-design/icons";import{getBindSecurityAccounCaptcha as be,getCloudflareTurnstileResponse as he}from"@particle-network/auth-core";import{useRequest as xe}from"ahooks";import{Button as ye}from"antd";import ee from"country-flag-icons/unicode";import t,{useEffect as q,useRef as te,useState as x}from"react";import{useTranslation as ve}from"react-i18next";import{ApiError as X,bindSecurityAccount as oe,getBindSecurityAccounCaptcha as ie,getCloudflareTurnstileResponse as re,syncUserInfo as ae}from"@particle-network/auth-core";import{useInterval as ce,useRequest as Y}from"ahooks";import{Button as Z}from"antd";import se from"lodash/throttle.js";import le from"qs";import r,{useCallback as ue,useEffect as pe,useRef as me,useState as $}from"react";import{useTranslation as de}from"react-i18next";var U=`.set-email-container { position: relative; display: flex; flex-direction: column; align-items: center; height: 100%; overflow: auto; color: var(--text-color); } .set-email-container .footer-box { position: absolute; bottom: 10px; margin: 0; } @media (max-height: 500px) { .set-email-container .footer-box { display: none; } } .set-email-container .display-none { display: none; } .set-email-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-email-container .error-tip.show { height: 30px; opacity: 1; } .set-email-container .set-email-title { margin-top: 60px; font-size: 22px; color: var(--text-color); } .set-email-container .patment-tips1 { width: 80vw; margin-top: 30px; font-size: 14px; text-align: center; color: var(--text-color); } @media (min-width: 600px) { .set-email-container .patment-tips1 { width: calc(80 * var(--vw)); } } .set-email-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-email-container .success-icon { width: 50px; height: 50px; margin-top: 60px; } .set-email-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-email-container .account-input-box { position: relative; z-index: 3; width: 90%; height: 47px; margin-top: 28px; border: 1px solid var(--input-border-color); border-radius: var(--primary-btn-border-radius); line-height: 47px; color: var(--text-color); background-color: var(--input-background-color); opacity: 1; } .set-email-container .account-input-box .account-select-country { position: absolute; z-index: 2; top: 54px; left: 2%; width: 96%; height: 210px; border-radius: var(--card-border-radius) !important; overflow-y: auto; background-color: var(--input-background-color); } .set-email-container .account-input-box .account-select-country::-webkit-scrollbar { display: none; width: 0; } .set-email-container .account-input-box .account-select-country .account-select-country-item { display: flex; justify-content: space-between; align-items: center; box-sizing: border-box; width: 100%; height: 47px; padding: 5px 0 5px 13px; margin: 0; border-bottom: 1px solid var(--card-unclickable-background-color); font-size: 14px; color: var(--text-color); cursor: pointer; } .set-email-container .account-input-box .account-select-country .account-select-country-item:hover { background-color: var(--card-unclickable-background-color); } .set-email-container .account-input-box .account-select-country .account-select-country-item div { display: flex; margin-right: 13px; } .set-email-container .account-input-box .account-select-country .account-select-country-item div .country-name { max-width: 200px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; } .set-email-container .account-input-box input[type='number']::-webkit-inner-spin-button, .set-email-container .account-input-box input[type='number']::-webkit-outer-spin-button { appearance: none; margin: 0; } .set-email-container .account-input-box.phone { display: flex; align-items: center; border: 1px solid var(--input-background-color); border-radius: var(--primary-btn-border-radius); } .set-email-container .account-input-box.phone[data-focus='true'] { border: 1px solid var(--accent-color) !important; } .set-email-container .account-input-box.phone input { border: none !important; } .set-email-container .account-input-box.phone input:focus { border: none !important; } .set-email-container .account-input-box .account-select-opt { display: flex; flex-shrink: 0; justify-content: center; align-items: center; width: 60px; height: 100%; padding-left: 8px; cursor: pointer; } .set-email-container .account-input-box .account-select-opt .account-select-icon { display: flex; justify-content: center; align-items: center; overflow: hidden; font-size: 15px; } .set-email-container .account-input-box .account-select-opt .down-more { margin-left: 8px; font-size: 10px; } .set-email-container .account-input-box span { flex-shrink: 0; margin: 0; font-size: 15px; } .set-email-container .account-input-box input { flex-shrink: 1; box-sizing: border-box; width: 100%; height: 100%; padding: 0 15px; outline: none; font-weight: 400; font-size: 15px; color: var(--text-color); background-color: transparent; } .set-email-container .send-code-btn { margin-bottom: 0 !important; } .set-email-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-email-container .account-submit-btn.bottom-margin { margin-bottom: 100px; } .set-email-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-email-container .account-switch-item { margin-top: 40px; font-weight: 500; font-size: 13px; line-height: 19px; color: var(--accent-color); cursor: pointer; } .set-email-container .set-email-desc-2 { min-width: 116px; height: 23px; padding: 0 15px; 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-email-container .code-error { position: absolute; left: calc((100vw - 316px) / 2); margin-top: 220px; font-weight: 400; font-size: 12px; color: var(--error-color); } @media (min-width: 600px) { .set-email-container .code-error { left: calc((var(--vw) * 100 - 316px) / 2); } } .set-email-container .back { display: flex; align-items: center; height: 19px; margin-top: 90px; margin-bottom: 20px; font-weight: 400; font-size: 16px; line-height: 19px; color: var(--accent-color); opacity: 1; cursor: pointer; gap: 8px; } .set-email-container .back svg { position: relative; top: 0; color: var(--accent-color); } .set-email-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-email-container .send-again:hover { color: var(--text-color); background-color: transparent !important; } .set-email-container .send-again:disabled { opacity: 0.5; } `;var ge=D=>{let{bindAccount:c,backToInputAccount:i,redirectUrl:o="",verifyToken:C=""}=D,V=I(),{t:s}=de(),{themeType:_,language:y}=A(),m=L(),[l,N]=$(""),[T,d]=$(1e3),[a,g]=$(60),[p,f]=$(),F=me(null),{authCoreModal:j}=M();ce(()=>{if(a>0){let e=a-1;g(e),e===0&&d(void 0)}},T);let{loading:u,run:z}=Y(oe,{manual:!0,onSuccess:e=>{ae(),o?m(o.split("?")[0],{replace:!0,back:!0,state:{...le.parse(o.split("?")[1]),verifyToken:e==null?void 0:e.token,account:c}}):e.has_set_payment_password?m("/account/security",{replace:!0}):m("/account/set-password")},onError:e=>{(e==null?void 0:e.error_code)===X.InvalidCode?f(s("login.invalid_code")):(e==null?void 0:e.error_code)===X.ResendCode&&f(s("login.please_send_again"))}}),{loading:b,run:h}=Y(ie,{manual:!0,onSuccess:(e,n)=>{T||(g(60),d(1e3))},onError:e=>{g(0),d(void 0)}}),v=e=>{let n;c.includes("@")?n={email:c,code:e||l}:n={phone:c,code:e||l},C&&(n.token=C),z(n)},G=()=>{f(""),c.includes("@")?h({email:c}):re({theme:_,language:y,getContainer:()=>j.rootBody}).then(e=>{h({phone:c,cf_turnstile_response:e})}).catch(e=>{V.error(s("error.server_20112"))})},E=e=>{N(e),f(""),e.length===6&&w(e)},w=ue(se(e=>{v(e)},1e3,{leading:!0,trailing:!1}),[]);pe(()=>{var H;let e=document.getElementsByClassName("react-input-code"),n=S=>S.preventDefault();return(H=e[0])==null||H.addEventListener("contextmenu",n),()=>{var S;(S=e[0])==null||S.removeEventListener("contextmenu",n)}},[]);let P=()=>{var n;(n=document.getElementsByClassName("input-code-item")[Math.min(l.length,5)])==null||n.focus()};return r.createElement("div",{className:"set-email-container"},r.createElement("style",null,U),r.createElement(k,{className:"icon-navigation-back",name:"circle_back",onClick:i}),r.createElement("h2",{className:"set-email-title"},s("account.enter_code")),r.createElement("p",{className:"set-email-desc-2",style:{margin:20}},c),r.createElement("div",{onClick:P},r.createElement(W,{containerClassName:"react-input-code",inputClassName:"input-code-item",allowedCharacters:"numeric",length:6,ref:F,placeholder:" ",onChange:E})),p&&r.createElement("div",{className:"code-error"},p),r.createElement(Z,{disabled:l.length!==6,className:"account-submit-btn",loading:u,onClick:()=>v()},s("common.confirm")),r.createElement(Z,{className:"send-again",onClick:G,disabled:a>0||b},a>0?`${s("login.send_again")} (${a}s)`:s("login.send_again")),r.createElement("div",{className:"back",onClick:i},r.createElement(k,{className:"arrow1-icon",name:"arrow1_icon"}),r.createElement("span",null,s("login.back"))),r.createElement(B,null))},R=ge;var we=D=>{let c=L(),{t:i}=ve(),o=D,C=o==null?void 0:o.redirectUrl,V=o==null?void 0:o.verifyToken,s=I(),_=te(),[y,m]=x(""),[l,N]=x(["United States","us","1"]),[T,d]=x(!1),a=te(null),[g,p]=x(""),{themeType:f,language:F}=A(),{authCoreModal:j}=M(),[u,z]=x("email");q(()=>{if(u==="phone"||(o==null?void 0:o.showSwitch)){let e=Q();e&&N(e)}},[u,o==null?void 0:o.showSwitch]);let[b,h]=x(!1);q(()=>{if(b)return document.addEventListener("click",v,!0),()=>{document.removeEventListener("click",v,!0)}},[b]);let v=e=>{setTimeout(()=>{var n;(n=_.current)!=null&&n.contains(e.target)||h(!1)})};q(()=>{let e=o==null?void 0:o.accountType;e&&z(e)},[o]);let{loading:G,run:E}=xe(be,{manual:!0,onSuccess:(e,n)=>{d(e)},onError:e=>{let n=(e==null?void 0:e.error_code)||0;(n===50003||n===50004)&&(m(""),a.current.value="")}}),w=()=>{let e=a.current.value;if(u==="email")if(e){if(!K.test(e))return p(i("login.email_format_error"))}else return p(i("account.input_vaild_email"));else{let n=l[1].toUpperCase();if(!e&&e!=="0")return p(i("account.input_vaild_mobile"));if(O(e,n))e=`+${l[2]}${e}`;else return p(i("login.phone_format_error"))}m(e),e.includes("@")?E({email:e}):he({theme:f,language:F,getContainer:()=>j.rootBody}).then(n=>{E({phone:e,cf_turnstile_response:n})}).catch(n=>{s.error(i("error.server_20112"))})},P=()=>{z(u==="email"?"phone":"email"),m("")};return q(()=>{setTimeout(()=>{var e;(e=a.current)==null||e.focus()})},[]),T?t.createElement(R,{bindAccount:y,redirectUrl:C||"",verifyToken:V,backToInputAccount:()=>{d(!1)}}):t.createElement("div",{className:"set-email-container"},t.createElement("style",null,U),t.createElement(k,{className:"icon-navigation-back",name:"circle_back",onClick:()=>c(-1)}),t.createElement("h2",{className:"set-email-title"},i(u==="email"?"account.set_your_email":"account.set_your_mobile")),t.createElement("p",{className:"set-email-desc-1"},i(u==="email"?"account.set_your_email_tip":"account.set_your_mobile_tip")),u==="email"?t.createElement(t.Fragment,null,t.createElement("div",{className:"account-input-box"},t.createElement("input",{onInput:()=>p(""),className:"input_email",type:"email",placeholder:i("account.place_email_address"),ref:a,defaultValue:y,onKeyDown:e=>{e.key==="Enter"&&w()}}))):t.createElement(t.Fragment,null,t.createElement("div",{className:"account-input-box phone",ref:_},b&&t.createElement("div",{className:"account-select-country"},J.map((e,n)=>t.createElement("p",{key:n,className:"account-select-country-item",onClick:()=>{N(e),h(!1)}},t.createElement("div",{className:"country-box"},t.createElement("div",{className:"country-flag"},ee(`${e[1]}`)),t.createElement("span",{className:"country-name"},e[0])),t.createElement("div",{className:"country-code"},"+"+e[2])))),t.createElement("div",{className:"account-select-opt",onClick:()=>h(!b)},t.createElement("div",{className:"account-select-icon"},ee(`${l[1]}`)),t.createElement(fe,{className:"down-more"})),t.createElement("span",null,"+",l[2]),t.createElement("input",{onInput:()=>{var e;p(""),a.current.value=((e=a.current.value.match(/^\d+/))==null?void 0:e[0])||""},type:"text",className:"no-number dd",placeholder:i("account.mobile"),ref:a,onWheel:e=>e.target.blur(),defaultValue:y.replace(`+${l[2]}`,""),onKeyDown:e=>{e.key==="Enter"&&w()},onFocus:()=>{var e;(e=document.querySelector(".account-input-box.phone"))==null||e.setAttribute("data-focus","true")},onBlur:()=>{var e;(e=document.querySelector(".account-input-box.phone"))==null||e.setAttribute("data-focus","false")}}))),t.createElement("p",{className:`error-tip ${g?"show":""}`},g),t.createElement(ye,{className:"send-code-btn account-submit-btn bottom-margin",loading:G,onClick:w},i("login.get_captcha")),(o==null?void 0:o.showSwitch)&&t.createElement("div",{className:"account-switch-item",onClick:P},i(u==="email"?"account.switch_text_mobile":"account.switch_text_email")),t.createElement(B,null))},et=we;export{et as default};