register , login model complated. plagiraism component complated(essential part of main page is complated )
This commit is contained in:
64
src/features/auth/register/lib/useRegisterForm.ts
Normal file
64
src/features/auth/register/lib/useRegisterForm.ts
Normal file
@@ -0,0 +1,64 @@
|
||||
import { useCallback, useState } from 'react';
|
||||
import { useRegisterZustand } from './registerZustand';
|
||||
import { validateRegister, RegisterErrors } from './validateRegister';
|
||||
|
||||
export function useRegisterForm() {
|
||||
const { registerData, setItem, setOferta, clearRegisterData } =
|
||||
useRegisterZustand();
|
||||
const [errors, setErrors] = useState<RegisterErrors>({});
|
||||
const [loading, setLoading] = useState(false);
|
||||
const [success, setSuccess] = useState(false);
|
||||
|
||||
const handleChange = useCallback(
|
||||
(e: React.ChangeEvent<HTMLInputElement>) => {
|
||||
const { name, value } = e.target;
|
||||
setItem(name as keyof typeof registerData, value);
|
||||
// clear the error for this field on change
|
||||
setErrors((prev) => ({ ...prev, [name]: undefined }));
|
||||
},
|
||||
[setItem],
|
||||
);
|
||||
|
||||
const handleOferta = useCallback(
|
||||
(e: React.ChangeEvent<HTMLInputElement>) => {
|
||||
setOferta(e.target.checked);
|
||||
setErrors((prev) => ({ ...prev, oferta: undefined }));
|
||||
},
|
||||
[setOferta],
|
||||
);
|
||||
|
||||
const handleSubmit = useCallback(
|
||||
async (e: React.FormEvent) => {
|
||||
e.preventDefault();
|
||||
const validationErrors = validateRegister(registerData);
|
||||
if (Object.keys(validationErrors).length > 0) {
|
||||
setErrors(validationErrors);
|
||||
return;
|
||||
}
|
||||
|
||||
setLoading(true);
|
||||
try {
|
||||
// Replace with your real API call:
|
||||
// await api.post('/register', registerData);
|
||||
await new Promise((r) => setTimeout(r, 1200)); // simulated delay
|
||||
setSuccess(true);
|
||||
clearRegisterData();
|
||||
} catch {
|
||||
setErrors({ name: 'Something went wrong. Please try again.' });
|
||||
} finally {
|
||||
setLoading(false);
|
||||
}
|
||||
},
|
||||
[registerData, clearRegisterData],
|
||||
);
|
||||
|
||||
return {
|
||||
registerData,
|
||||
errors,
|
||||
loading,
|
||||
success,
|
||||
handleChange,
|
||||
handleOferta,
|
||||
handleSubmit,
|
||||
};
|
||||
}
|
||||
Reference in New Issue
Block a user