Move Photon API URL to Settings

This commit is contained in:
2026-03-16 16:58:20 +04:00
parent 56a077cceb
commit aee7f9d181
3 changed files with 40 additions and 2 deletions

View File

@@ -18,6 +18,11 @@ export default class AppMenuSettings extends Component {
this.settings.updateMapKinetic(event.target.value === 'true'); this.settings.updateMapKinetic(event.target.value === 'true');
} }
@action
updatePhotonApi(event) {
this.settings.updatePhotonApi(event.target.value);
}
<template> <template>
<div class="sidebar-header"> <div class="sidebar-header">
<button type="button" class="back-btn" {{on "click" @onBack}}> <button type="button" class="back-btn" {{on "click" @onBack}}>
@@ -72,6 +77,23 @@ export default class AppMenuSettings extends Component {
{{/each}} {{/each}}
</select> </select>
</div> </div>
<div class="form-group">
<label for="photon-api">Photon API Provider</label>
<select
id="photon-api"
class="form-control"
{{on "change" this.updatePhotonApi}}
>
{{#each this.settings.photonApis as |api|}}
<option
value={{api.url}}
selected={{if (eq api.url this.settings.photonApi) "selected"}}
>
{{api.name}}
</option>
{{/each}}
</select>
</div>
</section> </section>
</div> </div>
</template> </template>

View File

@@ -1,9 +1,13 @@
import Service from '@ember/service'; import Service, { service } from '@ember/service';
import { getPlaceType } from '../utils/osm'; import { getPlaceType } from '../utils/osm';
import { humanizeOsmTag } from '../utils/format-text'; import { humanizeOsmTag } from '../utils/format-text';
export default class PhotonService extends Service { 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) { async search(query, lat, lon, limit = 10) {
if (!query || query.length < 2) return []; if (!query || query.length < 2) return [];

View File

@@ -4,6 +4,7 @@ import { tracked } from '@glimmer/tracking';
export default class SettingsService extends Service { export default class SettingsService extends Service {
@tracked overpassApi = 'https://overpass-api.de/api/interpreter'; @tracked overpassApi = 'https://overpass-api.de/api/interpreter';
@tracked mapKinetic = true; @tracked mapKinetic = true;
@tracked photonApi = 'https://photon.komoot.io/api/';
overpassApis = [ overpassApis = [
{ {
@@ -24,6 +25,13 @@ export default class SettingsService extends Service {
// }, // },
]; ];
photonApis = [
{
name: 'photon.komoot.io',
url: 'https://photon.komoot.io/api/',
},
];
constructor() { constructor() {
super(...arguments); super(...arguments);
this.loadSettings(); this.loadSettings();
@@ -59,4 +67,8 @@ export default class SettingsService extends Service {
this.mapKinetic = enabled; this.mapKinetic = enabled;
localStorage.setItem('marco:map-kinetic', String(enabled)); localStorage.setItem('marco:map-kinetic', String(enabled));
} }
updatePhotonApi(url) {
this.photonApi = url;
}
} }