Spaces:
Running
Running
| import { useState } from 'react' | |
| import axios from 'axios' | |
| export const useSingleAnalysis = (onAnalysisComplete) => { | |
| const [isLoading, setIsLoading] = useState(false); | |
| const [isError, setIsError] = useState(null); | |
| const runAnalysis = async (location, filters) => { | |
| if (!location || location.isSearch) return; | |
| setIsLoading(true); | |
| setIsError(null); | |
| const payload = { | |
| location: { lat: location.lat, lng: location.lng }, | |
| params: { | |
| bufferKm: filters.radius, | |
| maxCloudCover: filters.cloudCover, | |
| daysBack: filters.daysRange, | |
| model: filters.model | |
| } | |
| }; | |
| try { | |
| const response = await axios.post('/api/analyze', payload); | |
| if (response.data.success && onAnalysisComplete) { | |
| onAnalysisComplete(response.data); | |
| } else { | |
| setIsError(response.data.error || 'Server returned an unsuccessful status'); | |
| } | |
| } catch (error) { | |
| console.error('Connection error', error); | |
| const message = error.response?.data?.error || 'Backend connection error. Please try again later.' | |
| setIsError(message); | |
| } finally { | |
| setIsLoading(false); | |
| } | |
| }; | |
| return { runAnalysis, isLoading, isError }; | |
| }; | |