'use client'
import { useEffect, useState } from 'react'
import { useEditUserMutation } from '@/store/services'
import { SubmitHandler, useForm } from 'react-hook-form'
import { yupResolver } from '@hookform/resolvers/yup'
import { addressSchema } from 'utils'
import { useUserInfo } from 'hooks'
import regions from 'china-citys'
import {
TextField,
DisplayError,
SubmitModalBtn,
Combobox,
Modal,
HandleResponse,
} from 'components'
const AddressModal = props => {
//? Porps
const { isShow, onClose, address } = props
//? Assets
let AllProvinces = regions.getProvinces()
//? Get User Data
const { userInfo } = useUserInfo()
//? State
const [cities, setCities] = useState([])
const [areas, setAreas] = useState([])
//? Form Hook
const {
handleSubmit,
control,
formState: { errors: formErrors },
setValue,
getValues,
watch,
} = useForm({
resolver: yupResolver(addressSchema),
defaultValues: address,
})
//? Edit User-Info Query
const [editUser, { data, isSuccess, isLoading, isError, error }] = useEditUserMutation()
//? Re-Renders
//* Change cities beside on province
useEffect(() => {
setValue('area', {})
getValues('city')?.code ? setAreas(regions.getAreasByCity(getValues('city')?.code)) : ''
watch('city')
}, [getValues('city')?.code])
useEffect(() => {
setValue('city', {})
setCities(regions.getCitysByProvince(getValues('province')?.code))
watch('province')
}, [getValues('province')?.code])
useEffect(() => {
if (userInfo?.address) {
setValue('city', userInfo.address.city)
setValue('area', userInfo.address.area)
}
}, [])
//? Handlers
const submitHander = address => {
editUser({
body: { address },
})
}
//? Render(s)
return (
<>
{/* Handle Edit Address Response */}
{(isSuccess || isError) && (
)}
地址管理
请输入您的收货地址
>
)
}
export default AddressModal