import { authClient } from "@/lib/auth-client"; import { useQuery } from "@tanstack/react-query"; import { ScrollView, Text, TouchableOpacity, View } from "react-native"; import { StyleSheet } from "react-native-unistyles"; import { Container } from "@/components/container"; import { SignIn } from "@/components/sign-in"; import { SignUp } from "@/components/sign-up"; {{#if (eq api "orpc")}} import { queryClient, orpc } from "@/utils/orpc"; {{/if}} {{#if (eq api "trpc")}} import { queryClient, trpc } from "@/utils/trpc"; {{/if}} export default function Home() { {{#if (eq api "orpc")}} const healthCheck = useQuery(orpc.healthCheck.queryOptions()); const privateData = useQuery(orpc.privateData.queryOptions()); {{/if}} {{#if (eq api "trpc")}} const healthCheck = useQuery(trpc.healthCheck.queryOptions()); const privateData = useQuery(trpc.privateData.queryOptions()); {{/if}} const { data: session } = authClient.useSession(); return ( BETTER T STACK {session?.user ? ( Welcome,{" "} {session.user.name} {session.user.email} { authClient.signOut(); queryClient.invalidateQueries(); }} > Sign Out ) : null} API Status {healthCheck.isLoading ? "Checking..." : healthCheck.data ? "Connected to API" : "API Disconnected"} Private Data {privateData && ( {privateData.data?.message} )} {!session?.user && ( <> )} ); } const styles = StyleSheet.create((theme) => ({ pageContainer: { paddingHorizontal: 8, }, headerTitle: { color: theme?.colors?.typography, fontSize: 30, fontWeight: "bold", marginBottom: 16, }, sessionInfoCard: { marginBottom: 24, padding: 16, borderRadius: 8, borderWidth: 1, borderColor: theme?.colors?.border, }, sessionUserRow: { flexDirection: "row", justifyContent: "space-between", alignItems: "center", marginBottom: 8, }, welcomeText: { color: theme?.colors?.typography, fontSize: 16, }, userNameText: { fontWeight: "500", color: theme?.colors?.typography, }, emailText: { color: theme?.colors?.typography, fontSize: 14, marginBottom: 16, }, signOutButton: { backgroundColor: theme?.colors?.destructive, paddingVertical: 8, paddingHorizontal: 16, borderRadius: 6, alignSelf: "flex-start", }, signOutButtonText: { fontWeight: "500", }, apiStatusCard: { marginBottom: 24, borderRadius: 8, borderWidth: 1, borderColor: theme?.colors?.border, padding: 16, }, cardTitle: { marginBottom: 12, fontWeight: "500", color: theme?.colors?.typography, }, apiStatusRow: { flexDirection: "row", alignItems: "center", gap: 8, }, statusIndicatorDot: { height: 12, width: 12, borderRadius: 9999, }, statusIndicatorGreen: { backgroundColor: theme.colors.success, }, statusIndicatorRed: { backgroundColor: theme.colors.destructive, }, mutedText: { color: theme?.colors?.typography, }, privateDataCard: { marginBottom: 24, borderRadius: 8, borderWidth: 1, borderColor: theme?.colors?.border, padding: 16, }, }));