🐛 Fix bug with single match location
Tim Izzo tim@5ika.ch
Fri, 16 Aug 2024 14:50:43 +0200
1 files changed,
14 insertions(+),
9 deletions(-)
M
api/locationInformationRequest.ts
→
api/locationInformationRequest.ts
@@ -3,16 +3,21 @@ import { getLocationInformationRequest } from "./api.ts";
export const findStopByName = async (textInput: string): Promise<Stop[]> => { const { result } = await getLocationInformationRequest(textInput); - const placeResult = get<object[]>( + const placeResult = get<object[] | { Place: object }>( result, "OJP.OJPResponse.siri:ServiceDelivery.OJPLocationInformationDelivery.PlaceResult" ); - return placeResult.map(item => ({ - name: get(item, "Place.StopPlace.StopPlaceName.Text.#text"), - stopRef: get(item, "Place.StopPlace.StopPlaceRef"), - geoPosition: { - latitude: get(item, "Place.GeoPosition.siri:Latitude"), - longitude: get(item, "Place.GeoPosition.siri:Longitude"), - }, - })); + if (!placeResult) return []; + else if (Array.isArray(placeResult)) return placeResult.map(formatPlace); + else if (placeResult.Place) return [formatPlace(placeResult)]; + else return []; }; + +const formatPlace = (item: object): Stop => ({ + name: get(item, "Place.StopPlace.StopPlaceName.Text.#text"), + stopRef: get(item, "Place.StopPlace.StopPlaceRef"), + geoPosition: { + latitude: get(item, "Place.GeoPosition.siri:Latitude"), + longitude: get(item, "Place.GeoPosition.siri:Longitude"), + }, +});