import { useAuth, useUser } from "@clerk/clerk-expo"; import * as Location from "expo-location"; import { Link, router } from "expo-router"; import { useEffect, useState } from "react"; import { ActivityIndicator, FlatList, Image, Text, TouchableOpacity, View, } from "react-native"; import { SafeAreaView } from "react-native-safe-area-context"; import { GoogleTextInput } from "@/components/google-text-input"; import { Map } from "@/components/map"; import { RideCard } from "@/components/ride-card"; import { LINKS } from "@/config"; import { icons, images } from "@/constants"; import { useLocationStore } from "@/store"; import { useFetch } from "@/lib/fetch"; import type { Ride } from "@/types/type"; const Home = () => { const { setUserLocation, setDestinationLocation } = useLocationStore(); const { signOut } = useAuth(); const { user } = useUser(); const { data: recentRides, loading } = useFetch( `/(api)/ride/${user?.id}`, ); const [hasPermissions, setHasPermissions] = useState(false); const handleSignOut = () => { signOut(); router.replace("/(auth)/sign-in"); }; const handleDestinationPress = (location: { latitude: number; longitude: number; address: string; }) => { setDestinationLocation(location); router.push("/(root)/find-ride"); }; useEffect(() => { const requestLocation = async () => { let { status } = await Location.requestForegroundPermissionsAsync(); if (status !== "granted") return setHasPermissions(false); setHasPermissions(true); let location = await Location.getCurrentPositionAsync(); const address = await Location.reverseGeocodeAsync({ longitude: location.coords?.longitude, latitude: location.coords?.latitude, }); setUserLocation({ latitude: location.coords.latitude, longitude: location.coords.longitude, address: `${address[0].name}, ${address[0].region}`, }); }; requestLocation(); }, [setUserLocation]); return ( } className="px-5" keyboardShouldPersistTaps="handled" contentContainerStyle={{ paddingBottom: 100, }} ListEmptyComponent={() => ( {!loading ? ( <> No recent rides found No recent rides found. ) : ( )} )} ListHeaderComponent={() => ( <> Welcome{" "} {user?.firstName || user?.emailAddresses[0].emailAddress} 👋 GitHub Logout Your Current Location {hasPermissions && } Recent Rides )} /> ); }; export default Home;