From 69148f6e1d730fab6fc802abf14a2b8b91455cfb Mon Sep 17 00:00:00 2001 From: evlist Date: Tue, 3 Jan 2023 18:43:40 +0100 Subject: [PATCH] Error handling when fetching addresses. --- src/lib/osm.ts | 37 +++++++++++++++++++++++-------------- 1 file changed, 23 insertions(+), 14 deletions(-) diff --git a/src/lib/osm.ts b/src/lib/osm.ts index 83cffd3..c878a73 100644 --- a/src/lib/osm.ts +++ b/src/lib/osm.ts @@ -1,27 +1,36 @@ import memoize from 'memoizee'; -const _findAddress = async (lon: number, lat: number, locale: () => string) => { - const response = await fetch( - `https://nominatim.openstreetmap.org/reverse?lat=${lat}&lon=${lon}&format=jsonv2&addressdetails=1&extratags=1&namedetails=1&accept-language=${locale()}`, - {} - ); - const data = await response.json(); - console.log({ caller: 'findAddress', lon, lat, data }); - return data; +export const _findAddress = async ( + lon: number, + lat: number, + locale: () => string +) => { + try { + const response = await fetch( + `https://nominatim.openstreetmap.org/reverse?lat=${lat}&lon=${lon}&format=jsonv2&addressdetails=1&extratags=1&namedetails=1&accept-language=${locale()}`, + {} + ); + const data = await response.json(); + console.log({ caller: 'findAddress', lon, lat, data }); + return data; + } catch (error) { + console.error({ caller: 'findAddress', lon, lat, error }); + return {}; + } }; export const findAddress = memoize(_findAddress, { promise: true, max: 1000, - maxAge: 360000000, + maxAge: 36000000, }); export const getVillageOrTown = (address: any) => { - if (address?.address.village) { - return address?.address.village; + if (address?.address?.village) { + return address.address.village; } - if (address?.address.city) { - return address?.address.city; + if (address?.address?.city) { + return address.address.city; } - return address?.address.town; + return address?.address?.town; };