import styles from './styles.module.scss'; import Spring from "@components/Spring"; import {APP_AVATAR, REQ_STATUS} from "@api/config"; import LazyImage from "@components/LazyImage"; import {useDispatch, useSelector} from "react-redux"; import {getChangeEmailStatus, getChangeInfoStatus, getChangePhoneStatus, getUserInfo} from "@features/mainSlice"; import React, {useState} from "react"; import {Controller, useForm} from "react-hook-form"; import classNames from "classnames"; import PhoneInput from "@components/UInput/PhoneInput"; import {ReactComponent as Male} from '@assets/singlesvg/gener/male.svg'; import {ReactComponent as FeMale} from '@assets/singlesvg/gener/female.svg'; import SmallLoading from "@components/SmallLoading"; import {reqChangeEmail, reqChangeInfo, reqChangePhone} from "@features/api"; import {APP_GENDER} from "@constants/app"; const i18n=global.i18n; const getAvatarUrl=(id)=>{ return `${APP_AVATAR}avatar_${id}.png`; } const SelectAvatar=({innerRef, ...props})=>{ const [value, setValue] = useState(props.value); const aNum=16; const avatars = Array.from({ length:aNum }, (value, index) => index + 1); return (
{ avatars.map((item,index)=>{ return ( ) }) }
) } const WEditProfile=({close})=>{ const user=useSelector(getUserInfo); const status=useSelector(getChangeInfoStatus); const status_ph=useSelector(getChangePhoneStatus); const status_em=useSelector(getChangeEmailStatus); const dispatch = useDispatch(); const [avatarID,setAvatarID]=useState(user.FaceID); const [country, setCountry] = useState(user.RegisterLocation); const getPhone=()=>{ let loc=user.RegisterLocation; let phone=user.Phone; if (phone.startsWith(loc)){ phone=phone.replace(loc,""); } return phone; } const getIsLock=()=>{ let isLock=status===REQ_STATUS.LOADING||status_ph===REQ_STATUS.LOADING||status_em===REQ_STATUS.LOADING; return isLock; } const {register, handleSubmit, formState: {errors}, control} = useForm({ defaultValues: { FaceID:user.FaceID, NickName:user.NickName, Gender:user.Gender, Phone:getPhone(), Email:user.Email } }); const renderAvatar=()=>{ return (
) } const renderSelectAvatar=()=>{ return (
{i18n.t("user.title_avatar")}
( { onChange(faceID); setAvatarID(faceID); }} innerRef={ref}/> )} />
) } const renderUsername=()=>{ return (
{i18n.t("user.title_username")}
(
{ onChange(e.target.value); }} placeholder={i18n.t('user.username_ph')} />
)} />
) } const renderPhone=()=>{ return (
{i18n.t("user.title_phone")}
( onChange(e.target.value)} onChangeCountry={(country)=>{ setCountry(country); }} placeholder={i18n.t('user.phone_ph')} innerRef={ref}/> )} />
) } const renderEmail=()=>{ return (
{i18n.t("user.title_email")}
(
{ onChange(e.target.value); }} placeholder={i18n.t('user.email_ph')} />
)} />
) } const renderGender=()=>{ return (
{i18n.t("user.title_gender")}
(
)} />
) } const renderSubmit=()=>{ let isLoading=getIsLock(); return (
) } const onCallback=(code)=>{ if (code==200){ if (close)close(); } } const handleChangeInfo=(data)=>{ data.Phone=country+data.Phone; data.RegisterLocation=country; let change={}; let change_ph={}; let change_em={}; let isSubmit=false; let isSubmit_ph=false; let isSubmit_em=false; for (const key in data) { let value=data[key]; if (value!==user[key]){ if (key==="Phone"){ isSubmit_ph=true; change_ph[key]=value; } else if (key=="Email"){ isSubmit_em=true; change_em[key]=value; } else { isSubmit=true; change[key]=value; } } } // if (!isSubmit)return; if (getIsLock())return; change.callback=onCallback; change_ph.callback=onCallback; change_em.callback=onCallback; if (isSubmit)dispatch(reqChangeInfo(change)); if (isSubmit_ph)dispatch(reqChangePhone(change_ph)); if (isSubmit_em)dispatch(reqChangeEmail(change_em)); } const renderForm=()=>{ return (
{ handleChangeInfo(data); })}> {renderUsername()} {renderPhone()} {renderEmail()} {renderGender()} {renderSelectAvatar()} {renderSubmit()}
) } return (
{renderAvatar()} {renderForm()}
) } export default WEditProfile;