Skip to content

Commit c1fbb3b

Browse files
committed
cleanup
1 parent 563ed54 commit c1fbb3b

3 files changed

Lines changed: 33 additions & 14 deletions

File tree

src/sidebar/search/AddressInput.tsx

Lines changed: 20 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,14 @@
1-
import { JSX, ReactNode, useCallback, useEffect, useRef, useState } from 'react'
1+
import { JSX, ReactNode, useCallback, useContext, useEffect, useRef, useState } from 'react'
22
import { QueryPoint, QueryPointType } from '@/stores/QueryStore'
33
import { Bbox, GeocodingHit, ReverseGeocodingHit } from '@/api/graphhopper'
4-
import Autocomplete, { AutocompleteItem, GeocodingItem, POIQueryItem, RecentLocationItem } from '@/sidebar/search/AddressInputAutocomplete'
4+
import Autocomplete, {
5+
AutocompleteItem,
6+
GeocodingItem,
7+
POIQueryItem,
8+
RecentLocationItem,
9+
} from '@/sidebar/search/AddressInputAutocomplete'
510
import { getRecentLocations, saveRecentLocation } from '@/sidebar/search/RecentLocations'
11+
import { SettingsContext } from '@/contexts/SettingsContext'
612
import ArrowBack from './arrow_back.svg'
713
import Cross from '@/sidebar/times-solid-thin.svg'
814
import CurrentLocationIcon from './current-location.svg'
@@ -34,6 +40,7 @@ export interface AddressInputProps {
3440
}
3541

3642
export default function AddressInput(props: AddressInputProps) {
43+
const saveRecent = useContext(SettingsContext).saveRecentLocations
3744
const [origText, setOrigText] = useState(props.point.queryText)
3845
// controlled component pattern with initial value set from props
3946
const [text, setText] = useState(props.point.queryText)
@@ -118,7 +125,8 @@ export default function AddressInput(props: AddressInputProps) {
118125
setText(origText)
119126
} else if (nextIndex >= 0) {
120127
const item = autocompleteItems[nextIndex]
121-
if (item instanceof GeocodingItem || item instanceof RecentLocationItem) setText(item.mainText)
128+
if (item instanceof GeocodingItem || item instanceof RecentLocationItem)
129+
setText(item.mainText)
122130
else setText(origText)
123131
}
124132
}
@@ -150,15 +158,15 @@ export default function AddressInput(props: AddressInputProps) {
150158
const hit: GeocodingHit = result.hits[0]
151159
const res = nominatimHitToItem(hit)
152160
props.onAddressSelected(res.mainText + ', ' + res.secondText, hit.point)
153-
saveRecentLocation(res.mainText, res.secondText, hit.point)
161+
if (saveRecent) saveRecentLocation(res.mainText, res.secondText, hit.point)
154162
} else if (item instanceof GeocodingItem) {
155163
props.onAddressSelected(item.toText(), item.point)
156-
saveRecentLocation(item.mainText, item.secondText, item.point)
164+
if (saveRecent) saveRecentLocation(item.mainText, item.secondText, item.point)
157165
}
158166
})
159167
} else if (item instanceof GeocodingItem) {
160168
props.onAddressSelected(item.toText(), item.point)
161-
saveRecentLocation(item.mainText, item.secondText, item.point)
169+
if (saveRecent) saveRecentLocation(item.mainText, item.secondText, item.point)
162170
}
163171
}
164172
if (event.key === 'Enter') focusNextOrBlur()
@@ -303,7 +311,7 @@ export default function AddressInput(props: AddressInputProps) {
303311
if (item instanceof GeocodingItem) {
304312
setText(item.toText())
305313
props.onAddressSelected(item.toText(), item.point)
306-
saveRecentLocation(item.mainText, item.secondText, item.point)
314+
if (saveRecent) saveRecentLocation(item.mainText, item.secondText, item.point)
307315
} else if (item instanceof RecentLocationItem) {
308316
setText(item.toText())
309317
props.onAddressSelected(item.toText(), item.point)
@@ -323,14 +331,16 @@ export default function AddressInput(props: AddressInputProps) {
323331

324332
function buildRecentItems(filter?: string, limit?: number, excludeCoord?: Coordinate): RecentLocationItem[] {
325333
let recents = getRecentLocations(0)
326-
if (excludeCoord)
327-
recents = recents.filter(e => calcDist({ lat: e.lat, lng: e.lng }, excludeCoord) > 0)
334+
if (excludeCoord) recents = recents.filter(e => calcDist({ lat: e.lat, lng: e.lng }, excludeCoord) > 0)
328335
if (filter) {
329336
const lower = filter.toLowerCase()
330337
recents = recents.filter(
331338
e =>
332339
e.mainText.toLowerCase().startsWith(lower) ||
333-
e.secondText.toLowerCase().split(/[\s,]+/).some(word => word.startsWith(lower)),
340+
e.secondText
341+
.toLowerCase()
342+
.split(/[\s,]+/)
343+
.some(word => word.startsWith(lower)),
334344
)
335345
}
336346
if (limit) recents = recents.slice(0, limit)

src/sidebar/search/AddressInputAutocomplete.tsx

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -125,7 +125,13 @@ function RecentLocationEntry({
125125
return (
126126
<AutocompleteEntry isHighlighted={isHighlighted} onSelect={() => onSelect(item)}>
127127
<div className={styles.recentEntry} title={item.toText()}>
128-
<svg className={styles.recentIcon} xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 -960 960 960">
128+
<svg
129+
className={styles.recentIcon}
130+
xmlns="http://www.w3.org/2000/svg"
131+
width="20"
132+
height="20"
133+
viewBox="0 -960 960 960"
134+
>
129135
<path
130136
fill="currentColor"
131137
d="M480-120q-150 0-255-105T120-480q0-150 105-255t255-105q150 0 255 105t105 255q0 150-105 255T480-120Zm0-80q117 0 198.5-81.5T760-480q0-117-81.5-198.5T480-760q-117 0-198.5 81.5T200-480q0 117 81.5 198.5T480-200Zm-40-264v-216h80v184l128 128-56 56-152-152Z"

src/sidebar/search/RecentLocations.ts

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
import { calcDist, Coordinate } from '@/utils'
22
import { tr } from '@/translation/Translation'
33
import { textToCoordinate } from '@/Converters'
4-
import { getSettingsStore } from '@/stores/Stores'
54

65
const STORAGE_KEY = 'recentLocations'
76
export const MAX_ENTRIES = 15
@@ -47,8 +46,12 @@ export function clearRecentLocations(): void {
4746
}
4847
}
4948

50-
export function saveRecentLocation(mainText: string, secondText: string, coordinate: Coordinate, now: number = Date.now()): void {
51-
if (!getSettingsStore().state.saveRecentLocations) return
49+
export function saveRecentLocation(
50+
mainText: string,
51+
secondText: string,
52+
coordinate: Coordinate,
53+
now: number = Date.now(),
54+
): void {
5255
if (mainText === tr('current_location')) return
5356
if (textToCoordinate(mainText)) return
5457

0 commit comments

Comments
 (0)