()
| 266 | const cached = getFreshLocalCacheValue<SoilData>(SOIL_CACHE_KEY, field.id, QUERY_CACHE_TTL_MS); |
| 267 | if (cached) { setSoilData(cached); return; } |
| 268 | const fetchSoil = async () => { |
| 269 | setSoilLoading(true); |
| 270 | try { |
| 271 | const data = await invokeWithRetry<any>( |
| 272 | "soil-data", |
| 273 | { lat: fieldCenter.lat, lon: fieldCenter.lng }, |
| 274 | { retries: 3, isEmpty: (d) => !hasSoilPayload(d) } |
| 275 | ); |
| 276 | if (hasSoilPayload(data)) { |
| 277 | setSoilData(data); |
| 278 | setLocalCache(SOIL_CACHE_KEY, field.id, data); |
| 279 | } else { |
| 280 | setSoilData(cached ?? null); |
| 281 | } |
| 282 | } catch (e) { console.error("Soil data error:", e); setSoilData(cached ?? null); } |
| 283 | finally { setSoilLoading(false); } |
| 284 | }; |
| 285 | fetchSoil(); |
| 286 | }, [field.id, fieldCenter]); |
| 287 |
no test coverage detected