diff --git a/app/components/app-menu/settings.gjs b/app/components/app-menu/settings.gjs index f85b7c7..e4cfdbc 100644 --- a/app/components/app-menu/settings.gjs +++ b/app/components/app-menu/settings.gjs @@ -18,6 +18,11 @@ export default class AppMenuSettings extends Component { this.settings.updateMapKinetic(event.target.value === 'true'); } + @action + updatePhotonApi(event) { + this.settings.updatePhotonApi(event.target.value); + } + diff --git a/app/services/photon.js b/app/services/photon.js index 4367d06..b17ae66 100644 --- a/app/services/photon.js +++ b/app/services/photon.js @@ -1,9 +1,13 @@ -import Service from '@ember/service'; +import Service, { service } from '@ember/service'; import { getPlaceType } from '../utils/osm'; import { humanizeOsmTag } from '../utils/format-text'; export default class PhotonService extends Service { - baseUrl = 'https://photon.komoot.io/api/'; + @service settings; + + get baseUrl() { + return this.settings.photonApi; + } async search(query, lat, lon, limit = 10) { if (!query || query.length < 2) return []; diff --git a/app/services/settings.js b/app/services/settings.js index 3c91153..a571b7f 100644 --- a/app/services/settings.js +++ b/app/services/settings.js @@ -4,6 +4,7 @@ import { tracked } from '@glimmer/tracking'; export default class SettingsService extends Service { @tracked overpassApi = 'https://overpass-api.de/api/interpreter'; @tracked mapKinetic = true; + @tracked photonApi = 'https://photon.komoot.io/api/'; overpassApis = [ { @@ -24,6 +25,13 @@ export default class SettingsService extends Service { // }, ]; + photonApis = [ + { + name: 'photon.komoot.io', + url: 'https://photon.komoot.io/api/', + }, + ]; + constructor() { super(...arguments); this.loadSettings(); @@ -59,4 +67,8 @@ export default class SettingsService extends Service { this.mapKinetic = enabled; localStorage.setItem('marco:map-kinetic', String(enabled)); } + + updatePhotonApi(url) { + this.photonApi = url; + } }