fitst commit

This commit is contained in:
Samandar Turgunboyev
2026-01-28 18:26:50 +05:00
parent 166a55b1e9
commit 124798419b
196 changed files with 26627 additions and 421 deletions

View File

@@ -0,0 +1,72 @@
import { useMutation } from '@tanstack/react-query';
import { useRouter } from 'expo-router';
import { useState } from 'react';
import { useTranslation } from 'react-i18next';
import { auth_api } from '../lib/api';
type Lang = 'uz' | 'ru' | 'en';
export function UseLoginForm() {
const [phone, setPhone] = useState('');
const [error, setError] = useState('');
const router = useRouter();
const { t, i18n } = useTranslation();
const { mutate, isPending } = useMutation({
mutationFn: (body: { phone: string }) => auth_api.login(body),
onError: (err: any) => {
const errorMessage =
err?.response?.data?.data?.detail || err?.response?.data?.data?.phone?.[0];
setError(errorMessage || t('auth.error_general'));
},
});
const submit = () => {
if (phone.length !== 9) {
setError(t('auth.error_incomplete'));
return;
}
mutate(
{ phone: `998${phone}` },
{
onSuccess: () => {
setError('');
router.push('/(auth)/confirm');
},
}
);
};
// ✅ MUHIM: wrapper function
const changeLanguage = async (lang: Lang) => {
await i18n.changeLanguage(lang);
};
const getLanguageName = () => {
switch (i18n.language) {
case 'uz':
return 'Ozbek';
case 'ru':
return 'Русский';
case 'en':
return 'English';
default:
return '';
}
};
return {
phone,
setPhone,
submit,
loading: isPending,
error,
t,
language: i18n.language,
changeLanguage, // ✅ endi undefined EMAS
getLanguageName,
};
}