diff --git a/src/Logic/Search/CombinedSearcher.ts b/src/Logic/Search/CombinedSearcher.ts index ad5dc65b9b..64fb0d8169 100644 --- a/src/Logic/Search/CombinedSearcher.ts +++ b/src/Logic/Search/CombinedSearcher.ts @@ -1,12 +1,9 @@ -import GeocodingProvider, { - SearchResult, - GeocodingOptions, - GeocodeResult, -} from "./GeocodingProvider" +import GeocodingProvider, { GeocodeResult, GeocodingOptions, SearchResult } from "./GeocodingProvider" import { Utils } from "../../Utils" import { Store, Stores } from "../UIEventSource" export default class CombinedSearcher implements GeocodingProvider { + public readonly name = "CombinedSearcher" private _providers: ReadonlyArray private _providersWithSuggest: ReadonlyArray diff --git a/src/Logic/Search/CoordinateSearch.ts b/src/Logic/Search/CoordinateSearch.ts index 58e7f7e7ab..c2c3c1b57b 100644 --- a/src/Logic/Search/CoordinateSearch.ts +++ b/src/Logic/Search/CoordinateSearch.ts @@ -2,10 +2,12 @@ import GeocodingProvider, { GeocodeResult } from "./GeocodingProvider" import { Utils } from "../../Utils" import { ImmutableStore, Store } from "../UIEventSource" import CoordinateParser from "coordinate-parser" + /** * A simple search-class which interprets possible locations */ export default class CoordinateSearch implements GeocodingProvider { + public readonly name = "CoordinateSearch" private static readonly latLonRegexes: ReadonlyArray = [ /^ *(-?[0-9]+\.[0-9]+)[ ,;/\\]+(-?[0-9]+\.[0-9]+)/, /^ *(-?[0-9]+,[0-9]+)[ ;/\\]+(-?[0-9]+,[0-9]+)/, diff --git a/src/Logic/Search/GeocodingProvider.ts b/src/Logic/Search/GeocodingProvider.ts index ea6187e0d2..2e21f04819 100644 --- a/src/Logic/Search/GeocodingProvider.ts +++ b/src/Logic/Search/GeocodingProvider.ts @@ -49,6 +49,7 @@ export interface GeocodingOptions { } export default interface GeocodingProvider { + readonly name: string search(query: string, options?: GeocodingOptions): Promise /** diff --git a/src/Logic/Search/LocalElementSearch.ts b/src/Logic/Search/LocalElementSearch.ts index 46f28b434e..4e3d180f53 100644 --- a/src/Logic/Search/LocalElementSearch.ts +++ b/src/Logic/Search/LocalElementSearch.ts @@ -1,4 +1,4 @@ -import GeocodingProvider, { SearchResult, GeocodingOptions } from "./GeocodingProvider" +import GeocodingProvider, { GeocodingOptions, SearchResult } from "./GeocodingProvider" import ThemeViewState from "../../Models/ThemeViewState" import { Utils } from "../../Utils" import { Feature } from "geojson" @@ -20,7 +20,7 @@ type IntermediateResult = { export default class LocalElementSearch implements GeocodingProvider { private readonly _state: ThemeViewState private readonly _limit: number - + public readonly name = "LocalElementSearch" constructor(state: ThemeViewState, limit: number) { this._state = state this._limit = limit diff --git a/src/Logic/Search/NominatimGeocoding.ts b/src/Logic/Search/NominatimGeocoding.ts index ece8c90719..f191306093 100644 --- a/src/Logic/Search/NominatimGeocoding.ts +++ b/src/Logic/Search/NominatimGeocoding.ts @@ -8,6 +8,7 @@ import GeocodingProvider, { GeocodingOptions, SearchResult } from "./GeocodingPr export class NominatimGeocoding implements GeocodingProvider { private readonly _host private readonly limit: number + public readonly name = "Nominatim" constructor(limit: number = 3, host: string = Constants.nominatimEndpoint) { this.limit = limit diff --git a/src/Logic/Search/OpenLocationCodeSearch.ts b/src/Logic/Search/OpenLocationCodeSearch.ts index a41fd37723..e294eaff32 100644 --- a/src/Logic/Search/OpenLocationCodeSearch.ts +++ b/src/Logic/Search/OpenLocationCodeSearch.ts @@ -8,7 +8,7 @@ export default class OpenLocationCodeSearch implements GeocodingProvider { */ public static readonly _isPlusCode = /^([2-9CFGHJMPQRVWX]{2}|00){2,4}\+([2-9CFGHJMPQRVWX]{2,3})?$/ - + public readonly name = "OpenLocationCodeSearch" /** * * OpenLocationCodeSearch.isPlusCode("9FFW84J9+XG") // => true @@ -26,7 +26,7 @@ export default class OpenLocationCodeSearch implements GeocodingProvider { async search(query: string, options?: GeocodingOptions): Promise { if (!OpenLocationCodeSearch.isPlusCode(query)) { - return undefined + return [] // Must be an empty list and not "undefined", the latter is interpreted as 'still searching' } const { latitude, longitude } = pluscode_decode(query) diff --git a/src/Logic/Search/OpenStreetMapIdSearch.ts b/src/Logic/Search/OpenStreetMapIdSearch.ts index 5e07399a10..94f7607cda 100644 --- a/src/Logic/Search/OpenStreetMapIdSearch.ts +++ b/src/Logic/Search/OpenStreetMapIdSearch.ts @@ -7,7 +7,7 @@ import OsmObjectDownloader from "../Osm/OsmObjectDownloader" export default class OpenStreetMapIdSearch implements GeocodingProvider { private static readonly regex = /((https?:\/\/)?(www.)?(osm|openstreetmap).org\/)?(n|node|w|way|r|relation)[/ ]?([0-9]+)/ - + public readonly name = "OpenStreetMapId" private static readonly types: Readonly> = { n: "node", w: "way", diff --git a/src/Logic/Search/PhotonSearch.ts b/src/Logic/Search/PhotonSearch.ts index 6b16a62500..153f74665c 100644 --- a/src/Logic/Search/PhotonSearch.ts +++ b/src/Logic/Search/PhotonSearch.ts @@ -5,7 +5,7 @@ import GeocodingProvider, { GeocodingOptions, GeocodingUtils, ReverseGeocodingProvider, - ReverseGeocodingResult, + ReverseGeocodingResult } from "./GeocodingProvider" import { Utils } from "../../Utils" import { Feature, FeatureCollection } from "geojson" @@ -15,6 +15,7 @@ import { Store, Stores } from "../UIEventSource" export default class PhotonSearch implements GeocodingProvider, ReverseGeocodingProvider { private readonly _endpoint: string + public readonly name = "photon" private supportedLanguages = ["en", "de", "fr"] private static readonly types = { R: "relation", diff --git a/src/Logic/State/SearchState.ts b/src/Logic/State/SearchState.ts index cc5808857b..1d01737957 100644 --- a/src/Logic/State/SearchState.ts +++ b/src/Logic/State/SearchState.ts @@ -60,7 +60,7 @@ export default class SearchState { return new ImmutableStore(true) } return Stores.concat(suggestions).map((suggestions) => - suggestions.some((list) => list === undefined) + suggestions.some((list, i) => list === undefined) ) }) this.suggestions = suggestionsList.bindD((suggestions) => diff --git a/src/UI/Search/GeocodeResults.svelte b/src/UI/Search/GeocodeResults.svelte index ca1d3419a2..98f7316598 100644 --- a/src/UI/Search/GeocodeResults.svelte +++ b/src/UI/Search/GeocodeResults.svelte @@ -5,7 +5,6 @@ import Translations from "../i18n/Translations" import { Store } from "../../Logic/UIEventSource" import SidebarUnit from "../Base/SidebarUnit.svelte" - import type { SpecialVisualizationState } from "../SpecialVisualization" import Loading from "../Base/Loading.svelte" import { default as GeocodeResultSvelte } from "./GeocodeResult.svelte" import Tr from "../Base/Tr.svelte"