complated

This commit is contained in:
Samandar Turgunboyev
2026-02-17 10:46:57 +05:00
parent 754f11804a
commit d747c72c8d
71 changed files with 917 additions and 397 deletions

View File

@@ -1,7 +1,9 @@
import { useAuth } from '@/components/AuthProvider';
import { registerForPushNotificationsAsync } from '@/components/NotificationProvider';
import AuthHeader from '@/components/ui/AuthHeader';
import { commonRequests } from '@/hooks/useNotifications';
import AsyncStorage from '@react-native-async-storage/async-storage';
import { useMutation } from '@tanstack/react-query';
import { useMutation, useQueryClient } from '@tanstack/react-query';
import * as Haptics from 'expo-haptics';
import { LinearGradient } from 'expo-linear-gradient';
import { Redirect, useRouter } from 'expo-router';
@@ -26,6 +28,7 @@ import ConfirmForm from './ConfirmForm';
const ConfirmScreen = () => {
const router = useRouter();
const queryClient = useQueryClient();
const [phoneOTP, setPhone] = useState<string | null>('');
const [error, setError] = useState<string>('');
const { login } = useAuth();
@@ -59,11 +62,27 @@ const ConfirmScreen = () => {
const { mutate, isPending } = useMutation({
mutationFn: (body: { code: string; phone: string }) => auth_api.verify_otp(body),
onSuccess: async (res) => {
// Tokenlarni saqlash
await AsyncStorage.removeItem('phone');
await AsyncStorage.setItem('access_token', res.data.data.token.access);
savedToken(res.data.data.token.access);
await login(res.data.data.token.access);
await AsyncStorage.setItem('refresh_token', res.data.data.token.refresh);
await login(res.data.data.token.access);
// **Push tokenni qayta serverga yuborish**
const pushToken = await registerForPushNotificationsAsync();
if (pushToken) {
await commonRequests.registerDevice({
token: pushToken,
platform: Platform.OS,
});
}
// Notification querylarni refetch
queryClient.refetchQueries({ queryKey: ['notification-list'] });
queryClient.refetchQueries({ queryKey: ['notifications-list'] });
// Dashboardga yonaltirish
router.replace('/(dashboard)');
},
onError: (err: any) => {

View File

@@ -1,7 +1,9 @@
import { useAuth } from '@/components/AuthProvider';
import { registerForPushNotificationsAsync } from '@/components/NotificationProvider';
import AuthHeader from '@/components/ui/AuthHeader';
import { commonRequests } from '@/hooks/useNotifications';
import AsyncStorage from '@react-native-async-storage/async-storage';
import { useMutation } from '@tanstack/react-query';
import { useMutation, useQueryClient } from '@tanstack/react-query';
import * as Haptics from 'expo-haptics';
import { LinearGradient } from 'expo-linear-gradient';
import { Redirect, useRouter } from 'expo-router';
@@ -29,6 +31,7 @@ const RegisterConfirmScreen = () => {
const [phoneOTP, setPhone] = useState<string | null>('');
const [error, setError] = useState<string>('');
const { login } = useAuth();
const queryClient = useQueryClient();
const { savedToken } = useTokenStore();
const [resendTimer, setResendTimer] = useState<number>(60);
@@ -64,6 +67,17 @@ const RegisterConfirmScreen = () => {
savedToken(res.data.data.token.access);
await AsyncStorage.setItem('refresh_token', res.data.data.token.refresh);
await login(res.data.data.token.access);
const pushToken = await registerForPushNotificationsAsync();
if (pushToken) {
await commonRequests.registerDevice({
token: pushToken,
platform: Platform.OS,
});
}
// Notification querylarni refetch
queryClient.refetchQueries({ queryKey: ['notification-list'] });
queryClient.refetchQueries({ queryKey: ['notifications-list'] });
router.replace('/(dashboard)');
},
onError: (err: any) => {