diff --git a/src/hooks/useLogout.ts b/src/hooks/useLogout.ts index d1b3807..f79a6d9 100644 --- a/src/hooks/useLogout.ts +++ b/src/hooks/useLogout.ts @@ -1,16 +1,11 @@ import { useQueryClient } from "@tanstack/react-query"; import storage from "../utils/storage"; -import { useNavigation } from "@react-navigation/native"; export function useLogout() { - const navigation = useNavigation(); const queryClient = useQueryClient(); return async () => { await storage.removeItem(storage.TOKEN_KEY); - queryClient.removeQueries(); - queryClient.resetQueries(); - queryClient.invalidateQueries(); - queryClient.setQueryData(["user"], null); - console.log("ok"); + await queryClient.resetQueries(); + await queryClient.invalidateQueries(); }; } diff --git a/src/hooks/useUser.ts b/src/hooks/useUser.ts index 40d658f..f85954b 100644 --- a/src/hooks/useUser.ts +++ b/src/hooks/useUser.ts @@ -11,5 +11,5 @@ export function useUserQuery(disabled?: boolean) { export function useUser() { const { data, error } = useUserQuery(); - return data ? data : null; + return data && !error ? data : null; } diff --git a/src/navigation/DrawerNavigation.tsx b/src/navigation/DrawerNavigation.tsx index d205ee7..ef9d9a4 100644 --- a/src/navigation/DrawerNavigation.tsx +++ b/src/navigation/DrawerNavigation.tsx @@ -7,7 +7,7 @@ import { import { BottomNavigator } from "./BottomTabNavigator"; import { Icon } from "../icons"; import colors from "../../colors"; -import { View, ViewProps } from "react-native"; +import { Pressable, View, ViewProps } from "react-native"; import { Avatar, HorizontalDivider, StyledText } from "../components"; import { IconButton } from "../components/IconButton"; import { twMerge } from "tailwind-merge"; @@ -20,6 +20,7 @@ import { useUser } from "../hooks"; import { NotificationsScreen } from "../screens/NotificationsScreen/NotificationsScreen"; import { MyProfileScreen } from "../screens/MyProfileScreen"; import { SettingsStack } from "./SettingsStack"; +import { useLogout } from "../hooks/useLogout"; const Drawer = createDrawerNavigator(); @@ -29,6 +30,7 @@ const DrawerHeader = ({ className?: ViewProps["className"]; }) => { const user = useUser()!; + const logout = useLogout(); return ( <> @@ -38,6 +40,13 @@ const DrawerHeader = ({ {user.name} + { + logout(); + }} + > + Logout + { const user = useUser()!; + const logout = useLogout(); + return ( {user.email} + { + logout(); + }} + > + Logout + ); }; diff --git a/src/navigation/navigation.tsx b/src/navigation/navigation.tsx index 56b1716..ad722b7 100644 --- a/src/navigation/navigation.tsx +++ b/src/navigation/navigation.tsx @@ -3,9 +3,8 @@ import LinkingConfiguration from "./LinkingConfiguration"; import { NavigationContainer } from "@react-navigation/native"; import { createNativeStackNavigator } from "@react-navigation/native-stack"; import * as React from "react"; -import { BottomNavigator } from "./BottomTabNavigator"; import { AuthStackNavigator } from "./AuthStack"; -import { useUser } from "../hooks"; +import { useUserQuery } from "../hooks"; import { EmailVerificationSuccess } from "../screens/AuthScreens"; import { AuthHeader } from "../components"; import { DrawerNavigator } from "./DrawerNavigation"; @@ -18,7 +17,7 @@ import { addPushToken } from "../utils/api"; const Stack = createNativeStackNavigator(); const RootNavigator = () => { - const user = useUser(); + const user = useUserQuery(); const [expoPushToken, setExpoPushToken] = useState(""); const [notification, setNotification] = useState< Notifications.Notification | undefined @@ -27,7 +26,7 @@ const RootNavigator = () => { const responseListener = useRef(); React.useEffect(() => { - if (user) { + if (user.data) { registerForPushNotificationsAsync().then((token) => { if (token) { addPushToken(token); @@ -52,7 +51,7 @@ const RootNavigator = () => { responseListener.current && Notifications.removeNotificationSubscription(responseListener.current); }; - }, [user]); + }, [user.data]); return ( { animation: "slide_from_right", }} > - {user ? ( + {user.data && !user.isError ? ( <>