export const authQueries = {
getMe: () =>
queryOptions({
queryKey: ['getMe'],
queryFn: async () => {
try {
const { data } = await authService.getMe()
return data
} catch (e) {
const token = await getRefreshToken()
if (token) {
const tokens = await authService.refresh({ body: { refresh_token: token } })
setTokens(tokens.data)
const { data } = await authService.getMe()
return data
}
throw e
}
},
retry: false,
refetchInterval: getHours(1),
gcTime: getDays(1),
})
}
export default function AppLayout() {
const query = useQuery(authQueries.getMe())
return (
<View className="flex-1" onLayout={onLayoutRootView}>
<Stack
screenOptions={{
headerShown: false
}}
>
<Stack.Screen
name="tabs"
options={{
headerShown: false
}}
redirect={!query.data}
/>
<Stack.Screen
name="login"
options={{
headerShown: false
}}
redirect={!!query.data}
/>
<Stack.Screen
name="mfa"
options={{
headerShown: false
}}
redirect={!!query.data}
/>
</Stack>
</View>
)
}
export const authQueries = {
getMe: () =>
queryOptions({
queryKey: ['getMe'],
queryFn: async () => {
try {
const { data } = await authService.getMe()
return data
} catch (e) {
const token = await getRefreshToken()
if (token) {
const tokens = await authService.refresh({ body: { refresh_token: token } })
setTokens(tokens.data)
const { data } = await authService.getMe()
return data
}
throw e
}
},
retry: false,
refetchInterval: getHours(1),
gcTime: getDays(1),
})
}
export default function AppLayout() {
const query = useQuery(authQueries.getMe())
return (
<View className="flex-1" onLayout={onLayoutRootView}>
<Stack
screenOptions={{
headerShown: false
}}
>
<Stack.Screen
name="tabs"
options={{
headerShown: false
}}
redirect={!query.data}
/>
<Stack.Screen
name="login"
options={{
headerShown: false
}}
redirect={!!query.data}
/>
<Stack.Screen
name="mfa"
options={{
headerShown: false
}}
redirect={!!query.data}
/>
</Stack>
</View>
)
}