mirror of
https://github.com/mauriceboe/TREK.git
synced 2026-10-21 06:26:26 +00:00
feat(map): amap as map api provider and display template
This commit is contained in:
@@ -7,6 +7,18 @@ import { mapsApi } from '../../api/client'
|
||||
import { recordPlacePick } from '../../api/placeShadow'
|
||||
import { useAuthStore } from '../../store/authStore'
|
||||
import { useAddonStore } from '../../store/addonStore'
|
||||
import { effectivePlacesProvider, osmKeySuggestion, type KeySuggestion } from '../../utils/placesProvider'
|
||||
|
||||
/**
|
||||
* The "search is on OpenStreetMap" line, per which key would actually move it
|
||||
* off. The Google variant reuses the long-standing key, which every locale
|
||||
* already carries; the other two are new with Amap.
|
||||
*/
|
||||
const OSM_ACTIVE_KEY: Record<KeySuggestion, string> = {
|
||||
google: 'places.osmActive',
|
||||
amap: 'places.osmActiveAmap',
|
||||
any: 'places.osmActiveAny',
|
||||
}
|
||||
import { useCanDo } from '../../store/permissionsStore'
|
||||
import { useTripStore } from '../../store/tripStore'
|
||||
import { useSettingsStore } from '../../store/settingsStore'
|
||||
@@ -158,7 +170,11 @@ function usePlaceFormModal(props: PlaceFormModalProps) {
|
||||
const placesSessionRef = useRef(new PlacesSession())
|
||||
const toast = useToast()
|
||||
const { t, language, locale } = useTranslation()
|
||||
const { hasMapsKey, placesEnrichEnabled } = useAuthStore()
|
||||
const { hasMapsKey, hasAmapKey, placesProvider, placesEnrichEnabled } = useAuthStore()
|
||||
// What the search notices say depends on what will actually answer: an
|
||||
// install whose admin picked Amap is not "missing a Google key".
|
||||
const searchProvider = effectivePlacesProvider({ placesProvider, hasMapsKey, hasAmapKey })
|
||||
const keySuggestion = osmKeySuggestion(placesProvider)
|
||||
const can = useCanDo()
|
||||
const timeFormat = useSettingsStore((s) => s.settings.time_format) || '24h'
|
||||
const tripObj = useTripStore((s) => s.trip)
|
||||
@@ -647,7 +663,8 @@ function usePlaceFormModal(props: PlaceFormModalProps) {
|
||||
language,
|
||||
locale,
|
||||
timeFormat,
|
||||
hasMapsKey,
|
||||
searchProvider,
|
||||
keySuggestion,
|
||||
placesEnrichEnabled,
|
||||
can,
|
||||
tripObj,
|
||||
@@ -719,7 +736,8 @@ export default function PlaceFormModal(props: PlaceFormModalProps) {
|
||||
toast,
|
||||
t,
|
||||
language,
|
||||
hasMapsKey,
|
||||
searchProvider,
|
||||
keySuggestion,
|
||||
placesEnrichEnabled,
|
||||
can,
|
||||
tripObj,
|
||||
@@ -793,12 +811,21 @@ export default function PlaceFormModal(props: PlaceFormModalProps) {
|
||||
language={language}
|
||||
timeFormat={S.timeFormat}
|
||||
locale={S.locale}
|
||||
// Null when search genuinely has no key behind it — the column then
|
||||
// explains which one would help, or stays quiet when OpenStreetMap
|
||||
// was chosen on purpose.
|
||||
keySuggestion={searchProvider === 'openstreetmap' ? keySuggestion : null}
|
||||
t={t}
|
||||
/>
|
||||
)}
|
||||
<form onSubmit={handleSubmit} className={twoColumn || showDetails ? 'flex-1 min-w-0 space-y-3' : 'space-y-3'} onPaste={handlePaste}>
|
||||
{/* Place Search */}
|
||||
<div className="bg-surface-secondary rounded-xl p-3 border border-edge">
|
||||
{searchProvider === 'openstreetmap' && keySuggestion && (
|
||||
<p className="mb-2 text-xs text-content-faint">
|
||||
{t(OSM_ACTIVE_KEY[keySuggestion])}
|
||||
</p>
|
||||
)}
|
||||
<div className="relative">
|
||||
<div className="flex gap-2">
|
||||
<input
|
||||
|
||||
Reference in New Issue
Block a user