landing page added

This commit is contained in:
nabijonovdavronbek619@gmail.com
2026-04-01 01:22:31 +05:00
parent 291375ce02
commit 80343c9ca8
34 changed files with 1262 additions and 49 deletions

View File

@@ -3,13 +3,43 @@
import { useCallback, useState } from 'react';
import { useRegisterZustand } from './registerZustand';
import { validateRegister, RegisterErrors } from './validateRegister';
import { useRegisterModal } from '@/shared/zustand/auth';
import { useMutation } from '@tanstack/react-query';
import { apiRequest } from '@/shared/request/apiRequest';
import { links } from '@/shared/request/links';
import { toast } from 'react-toastify';
interface RegisterData {
name: string;
surname: string;
phone: string;
}
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 toggleRegisterModal = useRegisterModal(
(state) => state.toggleRegisterModal,
);
const registerRequest = useMutation({
mutationKey: ['register'],
mutationFn: (data: RegisterData) =>
apiRequest('POST', links.register, data),
onSuccess: (data) => {
console.log('Register successful:', data);
toggleRegisterModal();
setSuccess(true);
toast.success("Ro'yxatdan o'tish muvaffaqiyatli!");
},
onError: (err) => {
// toggleLoginModal();
console.error('Register failed:', err);
toast.error(err instanceof Error ? err.message : 'Unknown error');
},
});
const handleChange = useCallback(
(e: React.ChangeEvent<HTMLInputElement>) => {
@@ -33,23 +63,12 @@ export function useRegisterForm() {
async (e: React.FormEvent) => {
e.preventDefault();
const validationErrors = validateRegister(registerData);
console.log('register data on submit:', 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);
}
registerRequest.mutate(registerData);
},
[registerData, clearRegisterData],
);
@@ -57,10 +76,11 @@ export function useRegisterForm() {
return {
registerData,
errors,
loading,
loading: registerRequest.isPending,
success,
handleChange,
handleOferta,
handleSubmit,
setItem,
};
}