diff --git a/app.json b/app.json index bdd6172..dc31e13 100644 --- a/app.json +++ b/app.json @@ -6,7 +6,7 @@ "orientation": "portrait", "icon": "./assets/images/icon.png", "scheme": "myapp", - "userInterfaceStyle": "automatic", + "userInterfaceStyle": "dark", "newArchEnabled": true, "ios": { "supportsTablet": true, @@ -28,7 +28,8 @@ "android.permission.SYSTEM_ALERT_WINDOW", "android.permission.WAKE_LOCK", "android.permission.BLUETOOTH" - ] + ], + "softwareKeyboardLayoutMode": "pan" }, "web": { "bundler": "metro", diff --git a/app/(start)/index.tsx b/app/(start)/index.tsx index e3ad665..d6efae9 100644 --- a/app/(start)/index.tsx +++ b/app/(start)/index.tsx @@ -1,15 +1,79 @@ +import { ConnectionDetails, fetchToken } from '@/hooks/useConnectionDetails'; import { useRouter } from 'expo-router'; -import { StyleSheet, Button, View } from 'react-native'; +import { useEffect, useState } from 'react'; +import { + StyleSheet, + View, + Image, + Text, + TouchableOpacity, + ActivityIndicator, +} from 'react-native'; export default function StartScreen() { const router = useRouter(); + let [isConnecting, setConnecting] = useState(false); + let [connectionDetails, setConnectionDetails] = useState< + ConnectionDetails | undefined + >(undefined); + + // Fetch token when we're connecting. + useEffect(() => { + if (isConnecting) { + fetchToken().then((details) => { + console.log(details); + setConnectionDetails(details); + if (!details) { + setConnecting(false); + } + }); + } + }, [isConnecting]); + + // Navigate to Assistant screen when we have the connection details. + useEffect(() => { + if (isConnecting && connectionDetails) { + setConnecting(false); + setConnectionDetails(undefined); + router.navigate('../assistant'); + } + }, [isConnecting, router, connectionDetails]); + + let connectText: string; + + if (isConnecting) { + connectText = 'Connecting'; + } else { + connectText = 'Start Voice Assistant'; + } + return ( -