UNPKG

@particle-network/authkit

Version:

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

8 lines (7 loc) 26.8 kB
{ "version": 3, "sources": ["../../src/pages/loginAccountBind/index.tsx", "../../src/components/phoneInputItem/index.tsx"], "sourcesContent": ["import { AuthType, checkHasBoundLoginPhoneOrEmail } from '@particle-network/auth-core';\nimport { useRequest, useThrottleFn } from 'ahooks';\nimport { Button, Form, Input, Modal } from 'antd';\nimport { parsePhoneNumber } from 'libphonenumber-js/max';\nimport React, { useEffect, useMemo, useState } from 'react';\nimport Header from '../../components/header';\nimport PhoneInputItem from '../../components/phoneInputItem';\nimport PowerFooter from '../../components/power-footer';\nimport { useAuthCoreModal, useCustomNavigate, useParticleAuth, useTranslation } from '../../context';\nimport { useUserInfo } from '../../context/hooks';\nimport useMessage from '../../context/hooks/useMessage';\nimport { EmailRegExp } from '../../utils';\nimport { PageType } from '../account/accountVerify/config';\nimport { encryptValue, getAccountList } from '../loginAccount';\nimport styles from './index.less';\n\nexport interface IAccountInfo {\n type: AuthType;\n icon: string;\n name: string;\n value: string;\n id?: string;\n isOriginal?: boolean;\n}\n\ninterface IState {\n authType: AuthType;\n verifyToken: string;\n}\n\nconst LoginAccountBind = (props: any) => {\n const state = props;\n const authType = (state as IState)?.authType || '';\n const verifyToken = (state as IState)?.verifyToken || '';\n const { t } = useTranslation();\n const [form] = Form.useForm();\n const navigate = useCustomNavigate();\n const message = useMessage();\n const { userInfo } = useUserInfo();\n const { showSelectSecurityAccount } = useParticleAuth();\n const [submitLoading, setSubmitLoading] = useState(false);\n const { runAsync: loginBindingsCheckRequest } = useRequest(checkHasBoundLoginPhoneOrEmail, {\n manual: true,\n });\n const { authCoreModal } = useAuthCoreModal();\n const accountList = useMemo(() => {\n return getAccountList({ userInfo, t });\n }, [userInfo, t]);\n\n const accountInfo: IAccountInfo = useMemo(() => {\n const data = (accountList?.find?.((item) => item.type === authType) || {}) as IAccountInfo;\n return data;\n }, [accountList, authType]);\n\n /**\n * \u53EF\u4EE5\u5DF2\u7ECF\u7ED1\u5B9A\n */\n const canLink = useMemo(() => {\n return !accountInfo.value && !accountInfo.id;\n }, [accountInfo]);\n\n /**\n * \u662F\u5426\u53EF\u4EE5\u89E3\u7ED1\n * \u5982\u679CisOriginal=true \u8BF4\u660E\u662F\u539F\u59CB\u8D26\u53F7\uFF0C\u4E0D\u80FD\u89E3\u7ED1\n */\n const canUnlink = useMemo(() => {\n return !accountInfo.isOriginal && !canLink;\n }, [accountInfo]);\n\n const bindLoginAccount = () => {\n form.validateFields().then((values) => {\n const targetInputValue: string = form.getFieldsValue()?.inputValue?.replace(/\\s/g, '')?.trim?.() || '';\n setSubmitLoading(true);\n // \u5224\u65AD\u6B64\u624B\u673A\u53F7\u662F\u5426\u662F\u5B89\u5168\u624B\u673A\u53F7\u7801\uFF0C\u5982\u679C\u662F\u5B89\u5168\u624B\u673A\u53F7\u7801\uFF0C\u5C31\u63D0\u793A\u201D\u5B89\u5168\u624B\u673A\u53F7\u7801\u4E0D\u80FD\u4F5C\u4E3A\u767B\u5F55\u8D26\u53F7\u201C\n if (authType === 'phone' && userInfo?.security_account?.phone === targetInputValue) {\n Modal.error({\n title: t('new.duplicate_phonel_bindings'),\n wrapClassName: 'auth-core-modal-error',\n getContainer: () => {\n return authCoreModal.rootBody as HTMLElement;\n },\n });\n setSubmitLoading(false);\n return;\n } else if (\n authType === 'email' &&\n userInfo?.security_account?.email?.toLowerCase() === targetInputValue?.toLowerCase()\n ) {\n Modal.error({\n title: t('new.duplicate_email_bindings'),\n wrapClassName: 'auth-core-modal-error',\n getContainer: () => {\n return authCoreModal.rootBody as HTMLElement;\n },\n });\n setSubmitLoading(false);\n return;\n }\n\n const params: any = {};\n if (authType === AuthType.phone) {\n params.phone = targetInputValue;\n } else {\n params.email = targetInputValue;\n }\n loginBindingsCheckRequest(params)\n .then((res) => {\n navigate('/account/verify', {\n state: {\n account: targetInputValue,\n authType,\n verifyToken,\n pageType: PageType.BindLoginAccount,\n },\n });\n setSubmitLoading(false);\n })\n .catch((error) => {\n setSubmitLoading(false);\n if (error.error_code === 20109) {\n Modal.error({\n title: authType === AuthType.phone ? t('error.server_phone_20109') : t('error.server_email_20109'),\n wrapClassName: 'auth-core-modal-error',\n getContainer: () => {\n return authCoreModal.rootBody as HTMLElement;\n },\n });\n } else {\n message.error(error.message);\n }\n });\n });\n };\n\n const { run: toAccountVerify } = useThrottleFn(\n (params) => {\n navigate('/account/verify', {\n state: {\n account: params.account, // \u9A8C\u8BC1\u5B89\u5168\u8D26\u53F7\n authType,\n unbindAccount: form.getFieldValue('inputValue'),\n pageType: PageType.UnbindLoginAccount,\n },\n });\n },\n { wait: 3000 }\n );\n\n const unbindLoginAccount = () => {\n // \u89E3\u7ED1\u9A8C\u8BC1\u9700\u8981\u9A8C\u8BC1\u5B89\u5168\u8D26\u53F7\n if (userInfo?.security_account?.email && userInfo?.security_account?.phone) {\n showSelectSecurityAccount(true, {\n authType,\n unbindAccount: form.getFieldValue('inputValue'),\n pageType: PageType.UnbindLoginAccount,\n });\n } else {\n toAccountVerify({\n account: userInfo?.security_account?.email || userInfo?.security_account?.phone,\n });\n }\n };\n\n useEffect(() => {\n if (accountInfo?.value || accountInfo?.id) {\n if (authType === AuthType.phone) {\n const phoneNumber = parsePhoneNumber(accountInfo?.value.replace(/\\s/g, ''));\n const countryCode = phoneNumber.countryCallingCode;\n const nationalNumber = phoneNumber.nationalNumber;\n form.setFieldsValue({\n inputValue: encryptValue(`+${countryCode} ${nationalNumber}`),\n });\n } else {\n form.setFieldsValue({\n inputValue: encryptValue(accountInfo?.value || accountInfo?.id || ''),\n });\n }\n }\n }, [accountInfo?.value, accountInfo?.id, authType]);\n\n return (\n <div className='login-account-bind '>\n <style>{styles as unknown as string}</style>\n <Header displayBackBtn={true}>{accountInfo.name}</Header>\n <Form className='account-bind-form' layout='vertical' form={form} onFinish={bindLoginAccount}>\n {authType === AuthType.phone ? (\n <PhoneInputItem\n name='inputValue'\n form={form}\n disabled={!canLink}\n previewMode='input'\n extra={<div className='link-account-hint'>{t('new.link_account_hint').format(accountInfo.name)}</div>}\n />\n ) : (\n <Form.Item\n name='inputValue'\n validateTrigger='onBlur'\n extra={<div className='link-account-hint'>{t('new.link_account_hint').format(accountInfo.name)}</div>}\n rules={[\n {\n required: true,\n validator: async (rule, value) => {\n if (!value) {\n return Promise.reject(t('account.input_vaild_email'));\n } else if (!EmailRegExp.test(value)) {\n return Promise.reject(t('login.email_format_error'));\n }\n return Promise.resolve();\n },\n },\n ]}\n >\n <Input\n className='account-input'\n placeholder={accountInfo.name}\n disabled={!canLink}\n onChange={(e) =>\n form.setFields([\n {\n name: 'email',\n value: e.target.value,\n errors: [],\n },\n ])\n }\n />\n </Form.Item>\n )}\n\n <Form.Item>\n {canLink ? (\n <Button\n className='primary-antd-btn link-btn'\n // onClick={bindLoginAccount}\n loading={submitLoading}\n htmlType='submit'\n >\n {t('account.link')}\n </Button>\n ) : (\n <></>\n // <Button\n // className=\"primary-antd-btn unlink-btn\"\n // disabled={!canUnlink}\n // onClick={() => {\n // unbindLoginAccount();\n // }}\n // >\n // Unlink\n // </Button>\n )}\n </Form.Item>\n </Form>\n <PowerFooter />\n </div>\n );\n};\n\nexport default LoginAccountBind;\n", "import { DownOutlined } from '@ant-design/icons';\nimport { useClickAway } from 'ahooks';\nimport type { FormInstance } from 'antd';\nimport { Form, Input, InputNumber } from 'antd';\nimport getUnicodeFlagIcon from 'country-flag-icons/unicode';\nimport { isValidPhoneNumber, parsePhoneNumber } from 'libphonenumber-js/max';\nimport React, { useEffect, useMemo, useRef, useState } from 'react';\nimport { useTranslation } from '../../context';\nimport { defaultCountriesData, getCurrentCountry } from '../../api/model/all-countries';\nimport styles from './index.less';\ninterface Iprops {\n form: FormInstance;\n name: string;\n disabled?: boolean;\n previewMode?: string;\n [key: string]: any;\n}\n\nconst PhoneInputItem = (props: Iprops) => {\n const form = props.form;\n const phoneValue = Form.useWatch(props.name, form);\n const [countryData, setCountryData] = useState(['United States', 'us', '1']);\n const { t } = useTranslation();\n const [visbSelectCountry, setVisbSelectCountry] = useState(false);\n const clickRef = useRef<any>();\n const forItemRef = useRef<any>();\n const [searchValue, setSearchValue] = useState('');\n const searchInputRef = useRef<any>();\n const countriesList = useMemo(() => {\n return defaultCountriesData.filter((item) => {\n return item.join('+').toLowerCase().includes(searchValue.toLowerCase());\n });\n }, [searchValue]);\n\n useClickAway(() => {\n setVisbSelectCountry(false);\n }, clickRef);\n\n useEffect(() => {\n if (visbSelectCountry) {\n setSearchValue('');\n }\n }, [visbSelectCountry]);\n\n useEffect(() => {\n if (phoneValue?.includes('*')) {\n return;\n }\n const countryCode = `+${countryData[2]}`;\n const value = (phoneValue || '').replace(/^\\+\\d+/, '').trim();\n form.setFieldsValue({\n [props.name]: `${countryCode} ${value}`,\n });\n if (value) {\n form.validateFields(['_phone']);\n }\n }, [countryData, phoneValue]);\n\n useEffect(() => {\n try {\n if (phoneValue?.includes?.('*')) {\n form.setFieldsValue({\n _phone: phoneValue,\n });\n } else if (phoneValue) {\n if (isValidPhoneNumber(phoneValue)) {\n const phoneNumber = parsePhoneNumber(phoneValue);\n const value = phoneNumber.nationalNumber;\n\n form.setFieldsValue({\n _phone: value,\n });\n\n const countryCode = phoneNumber.countryCallingCode.toString();\n const regionCode = phoneNumber.country;\n\n if (countryCode && regionCode) {\n const items = defaultCountriesData.filter(\n (item) => item[2].toString() === countryCode && item[1].toLowerCase() === regionCode.toLowerCase()\n );\n if (items && items.length > 0) {\n setCountryData(items[items.length - 1]);\n }\n }\n }\n } else {\n const currentCountry = getCurrentCountry();\n if (currentCountry) {\n setCountryData(currentCountry);\n }\n }\n } catch (error) {\n // pass\n }\n }, [phoneValue]);\n\n return (\n <>\n <style>{styles as unknown as string}</style>\n <div className='phone-input-item-container'>\n <Form.Item\n className={!props.disabled || (props.disabled && props.previewMode !== 'input') ? 'hidden' : ''}\n extra={props.extra}\n name={props.name}\n >\n <Input disabled={props.disabled}></Input>\n </Form.Item>\n <Form.Item\n name='_phone'\n className={props.disabled && props.previewMode == 'input' ? 'hidden' : ''}\n extra={props.extra}\n // getValueFromEvent={(event) => {\n // return event.target.value.replace(/\\D+/g, '');\n // }}\n rules={[\n {\n required: true,\n validator: (rule, value) => {\n try {\n if (!value) {\n return Promise.reject(t('login.input_phone_holder'));\n } else {\n try {\n value = `+${countryData[2]} ${value}`;\n if (!isValidPhoneNumber(value)) {\n return Promise.reject(t('login.phone_format_error'));\n }\n } catch (error) {\n return Promise.reject(t('login.phone_format_error'));\n }\n }\n } catch (error) {\n return Promise.reject(t('login.phone_format_error'));\n }\n return Promise.resolve();\n },\n },\n ]}\n >\n <InputNumber\n placeholder={t('account.mobile') as string}\n disabled={props.disabled}\n controls={false}\n onChange={(value) => {\n form.setFieldsValue({\n [props.name]: `+${countryData[2]} ${value}`,\n });\n }}\n onFocus={() => {\n document.querySelector('.ant-input-number-group-wrapper')?.setAttribute('data-focus', 'true');\n }}\n onBlur={() => {\n document.querySelector('.ant-input-number-group-wrapper')?.setAttribute('data-focus', 'false');\n }}\n addonBefore={\n <div className='country-box phone' ref={forItemRef}>\n <div\n className='prefix-wrap'\n onClick={() => {\n if (!props.disabled) {\n setVisbSelectCountry(!visbSelectCountry);\n setTimeout(() => {\n searchInputRef.current?.focus();\n });\n }\n }}\n ref={clickRef}\n >\n <div className='account-select-opt'>\n <div className='account-select-icon'>{getUnicodeFlagIcon(`${countryData[1]}`)}</div>\n <DownOutlined className='down-more' />\n </div>\n <span>+{countryData[2]}</span>\n </div>\n\n {visbSelectCountry && (\n <div className='account-select-country-list '>\n <div\n className='account-select-country-item search-input-wrap'\n onClick={(e) => {\n e.stopPropagation();\n }}\n >\n <Input\n ref={searchInputRef}\n className='search-input'\n type='text'\n placeholder={t('login.search_country_holder') as string}\n allowClear\n onChange={(e) => {\n const value = e?.target?.value || '';\n setSearchValue(value);\n }}\n />\n </div>\n {countriesList && !!countriesList.length ? (\n <div className='p-country-list'>\n {countriesList.map((item, index) => (\n <div\n key={`${item[0]}-${item[1]}-${item[2]}`}\n className='account-select-country-item'\n onClick={() => {\n setCountryData(item);\n setVisbSelectCountry(false);\n }}\n >\n <div className='country-box'>\n <div className='country-flag'>{getUnicodeFlagIcon(`${item[1]}`)}</div>\n <span className='country-name'>{item[0]}</span>\n </div>\n <div className='country-code'>{'+' + item[2]}</div>\n </div>\n ))}\n </div>\n ) : (\n <div className='no-data'>No data</div>\n )}\n </div>\n )}\n </div>\n }\n />\n </Form.Item>\n </div>\n </>\n );\n};\n\nexport default PhoneInputItem;\n"], "mappings": "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", "names": ["Form", "Input", "parsePhoneNumber", "React", "useEffect", "useMemo", "useState", "phoneInputItem_default", "Form", "useState", "useMemo", "useEffect", "parsePhoneNumber", "React", "phoneInputItem_default", "Input", "loginAccountBind_default"] }