mirror of
https://github.com/kennethnym/aris.git
synced 2026-03-20 00:51:20 +00:00
* feat(client): wire up API client and react-query Add ApiClient class, auth middleware placeholder, feed query, and wrap the app in QueryClientProvider. Co-authored-by: Ona <no-reply@ona.com> * fix(client): append base url on api client req Co-authored-by: Ona <no-reply@ona.com> * fix(client): allow req middlewares to run on empty init * fix(client): rm unused private route declr * fix(client): handle empty url in client.request Co-authored-by: ona-patrol <ona@nym.sh> --------- Co-authored-by: Ona <no-reply@ona.com> Co-authored-by: ona-patrol <ona@nym.sh>
66 lines
1.7 KiB
TypeScript
66 lines
1.7 KiB
TypeScript
import "react-native-reanimated"
|
|
import { QueryClient, QueryClientProvider } from "@tanstack/react-query"
|
|
import { Stack } from "expo-router"
|
|
import { StatusBar } from "expo-status-bar"
|
|
import React from "react"
|
|
import { useColorScheme } from "react-native"
|
|
import tw, { useDeviceContext } from "twrnc"
|
|
|
|
import { authMiddleware } from "@/api/auth-middleware"
|
|
import { ApiClient, ApiClientContext } from "@/api/client"
|
|
|
|
const queryClient = new QueryClient()
|
|
const apiClient = new ApiClient({
|
|
baseUrl: process.env.EXPO_PUBLIC_API_BASE_URL ?? "",
|
|
middlewares: [authMiddleware],
|
|
})
|
|
|
|
export default function RootLayout() {
|
|
useDeviceContext(tw)
|
|
|
|
const colorScheme = useColorScheme()
|
|
const headerBg = colorScheme === "dark" ? "#1c1917" : "#f5f5f4"
|
|
const headerTint = colorScheme === "dark" ? "#e7e5e4" : "#1c1917"
|
|
|
|
return (
|
|
<ContextProvider>
|
|
<Stack
|
|
screenOptions={{
|
|
headerShown: false,
|
|
contentStyle: { backgroundColor: headerBg },
|
|
}}
|
|
>
|
|
<Stack.Screen
|
|
name="components/index"
|
|
options={{
|
|
headerShown: true,
|
|
title: "Components",
|
|
headerStyle: { backgroundColor: headerBg },
|
|
headerTintColor: headerTint,
|
|
headerShadowVisible: false,
|
|
}}
|
|
/>
|
|
<Stack.Screen
|
|
name="components/[name]"
|
|
options={{
|
|
headerShown: true,
|
|
title: "",
|
|
headerStyle: { backgroundColor: headerBg },
|
|
headerTintColor: headerTint,
|
|
headerShadowVisible: false,
|
|
}}
|
|
/>
|
|
</Stack>
|
|
<StatusBar style="auto" />
|
|
</ContextProvider>
|
|
)
|
|
}
|
|
|
|
function ContextProvider({ children }: React.PropsWithChildren) {
|
|
return (
|
|
<QueryClientProvider client={queryClient}>
|
|
<ApiClientContext value={apiClient}>{children}</ApiClientContext>
|
|
</QueryClientProvider>
|
|
)
|
|
}
|