register , login model complated. plagiraism component complated(essential part of main page is complated )

This commit is contained in:
nabijonovdavronbek619@gmail.com
2026-03-30 20:25:30 +05:00
parent 8906cf6634
commit 8b93952a06
29 changed files with 1475 additions and 205 deletions

View 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,
};
}