import { message } from 'antd'
import { User } from 'approw-js-sdk'
import React, { FC } from 'react'
import { useGuardContext } from '../../../context/global/context'
import { GuardScenes, LoginMethods, RegisterMethods } from '../types'
import { ApprowTabs } from '../../../common/ApprowTabs'
import { REGISTER_METHODS_MAP } from '../constants'
import { EmailRegisterForm, PhoneRegisterForm } from '../Forms'
import { useTranslation } from 'react-i18next'
export const RegisterLayout: FC = () => {
const {
state: {
config: { registerMethods, extendsFields },
activeTabs,
guardEvents,
authClient,
},
setValue,
} = useGuardContext()
const { t } = useTranslation()
const onSuccess = (user: User) => {
message.success(t('common.registrationSuccess'))
if (extendsFields?.length > 0) {
setValue('guardScenes', GuardScenes.CompleteUserInfo)
} else {
setValue('guardScenes', GuardScenes.Login)
}
guardEvents.onRegister?.(user, authClient)
}
const onFail = (error: any) => {
guardEvents.onRegisterError?.(error, authClient)
}
const formProps = {
onSuccess,
onFail,
}
const onTabClick = (t: string) => {
const next = {
...activeTabs,
[GuardScenes.Register]: t,
}
switch (t) {
case RegisterMethods.Email:
next[GuardScenes.Login] = LoginMethods.Password
break
case RegisterMethods.Phone:
next[GuardScenes.Login] = LoginMethods.PhoneCode
break
default:
break
}
setValue('activeTabs', next)
}
const REGISTER_FORM_MAP = {
[RegisterMethods.Email]: ,
[RegisterMethods.Phone]: ,
}
const tabs = registerMethods!.map((item) => ({
key: item,
label: REGISTER_METHODS_MAP()[item],
component: REGISTER_FORM_MAP[item],
}))
return (
)
}