From 4869e6c47e543f8e55227e90483fbdbe182e451b Mon Sep 17 00:00:00 2001 From: Gustavo Henrique Santos Souza de Miranda Date: Tue, 18 Mar 2025 16:59:14 -0300 Subject: [PATCH] =?UTF-8?q?Modificado=20o=20App.js=20para=20obter=20a=20lo?= =?UTF-8?q?caliza=C3=A7=C3=A3o=20a=20cada=2030s=20usando=20o=20useEffect()?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Tracker/App.js | 77 +++++++++++++++++++++++++++++--------------------- 1 file changed, 45 insertions(+), 32 deletions(-) diff --git a/Tracker/App.js b/Tracker/App.js index 3d158b8..b6fb49e 100644 --- a/Tracker/App.js +++ b/Tracker/App.js @@ -2,36 +2,58 @@ import { StatusBar } from 'expo-status-bar'; import { StyleSheet, Text, View } from 'react-native'; import { NavigationContainer } from '@react-navigation/native'; import { createStackNavigator } from '@react-navigation/stack'; -import MapScreen from './src/screens/MapScreen' +import MapScreen from './src/screens/MapScreen'; import ListScreen from './src/screens/ListScreen'; -import * as Location from "expo-location" -import { useEffect } from 'react'; +import * as Location from "expo-location"; +import { useEffect, useRef } from 'react'; +import Storage from './src/system/database/storage'; const Stack = createStackNavigator(); - - -let foregroundSubscription = null; - +const storage = Storage.getInstance(); // Criando apenas uma instância de Storage export default function App() { + const locationInterval = useRef(null); // UseRef para armazenar o intervalo - const foregroundUpdate = async() =>{ - const {granted} = await Location.getForegroundPermissionsAsync() - if (!granted){ - console.error("Permissão Não obtida para localização") - return - } - } - useEffect(()=>{ - const locationPerm = async() =>{ - const foregroun = await Location.requestForegroundPermissionsAsync() - } - locationPerm() - foregroundUpdate() - - },[] + useEffect(() => { + const getLocation = async () => { + const { status } = await Location.requestForegroundPermissionsAsync(); + if (status !== "granted") { + console.error("Permissão negada para localização."); + return; + } + + // Obtém a localização inicial + const location = await Location.getCurrentPositionAsync({}); + global.userLocation = location.coords; + await storage.saveData(new Date().valueOf(), location.coords); + + console.log("Localização inicial salva:", location.coords); + + + // Atualiza a localização a cada 5 segundos + locationInterval.current = setInterval(async () => { + try { + const updatedLocation = await Location.getCurrentPositionAsync({}); + global.userLocation = updatedLocation.coords; + await storage.saveData(new Date().valueOf(), updatedLocation.coords); + console.log("Nova localização salva:", updatedLocation.coords); + } catch (error) { + console.error("Erro ao obter localização:", error); + + } + }, 30000); + }; + + getLocation(); + + return () => { + if (locationInterval.current) { + clearInterval(locationInterval.current); + console.log("Intervalo de localização parado."); + } + }; + }, []); -) return ( @@ -41,12 +63,3 @@ export default function App() { ); } - -const styles = StyleSheet.create({ - container: { - flex: 1, - backgroundColor: '#fff', - alignItems: 'center', - justifyContent: 'center', - }, -});