From a8dc4c81e490496c2e69f4395ca7eeb46ac50a4a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?R=C3=A2u=20Cao?= Date: Tue, 27 Jan 2026 09:50:41 +0700 Subject: [PATCH] Implement simple query cache for Overpass/OSM search So when we return to the search route, we don't have to refetch --- app/services/osm.js | 18 +++++++++++++++++- 1 file changed, 17 insertions(+), 1 deletion(-) diff --git a/app/services/osm.js b/app/services/osm.js index f5f03d2..31d0289 100644 --- a/app/services/osm.js +++ b/app/services/osm.js @@ -4,8 +4,18 @@ export default class OsmService extends Service { @service settings; controller = null; + cachedResults = null; + lastQueryKey = null; async getNearbyPois(lat, lon, radius = 50) { + const queryKey = `${lat},${lon},${radius}`; + + // Return cached results if the query is identical to the last one + if (this.lastQueryKey === queryKey && this.cachedResults) { + console.log('Returning cached Overpass results for:', queryKey); + return this.cachedResults; + } + // Cancel previous request if it exists if (this.controller) { this.controller.abort(); @@ -33,7 +43,13 @@ out center; const data = await res.json(); // Normalize data - return data.elements.map(this.normalizePoi); + const results = data.elements.map(this.normalizePoi); + + // Update cache + this.lastQueryKey = queryKey; + this.cachedResults = results; + + return results; } catch (e) { if (e.name === 'AbortError') { console.log('Overpass request aborted');