import { Itinerary, TravelMode } from '@wemap/routers'; import { Coords } from '../types'; import { fetchItineraries } from '../api/itinerary-service'; import { useSettingsStore } from '../storages/settings'; /** * Manages itinerary requests and operations. */ export class ItineraryManager { /** @hidden */ constructor() {} /** * Fetches itineraries between two points using the specified travel mode. * * @param {Coords} origin - The starting coordinates * @param {Coords} destination - The ending coordinates * @param {TravelMode} [mode='WALK'] - The mode of transportation to use (defaults to 'WALK') * @returns {Promise<{ itineraries: Itinerary[] }>} Promise that resolves to an object containing an array of Itinerary objects */ getItineraries(origin: Coords, destination: Coords, mode: TravelMode = 'WALK') { const emmid = useSettingsStore.getState().emmid; const routerRequest = { origin, destination, travelMode: mode, mapId: emmid ?? undefined }; return fetchItineraries(routerRequest).then((results) => ({ itineraries: results.itineraries.map((itinerary) => Itinerary.fromJson(itinerary)) }) ); } } /** @hidden */ export default new ItineraryManager();