@ -1,35 +1,18 @@
|
||||
import { LatLng } from 'leaflet'
|
||||
|
||||
import { API_URL } from '../../config'
|
||||
import { isArrayOf, isObject } from '../../utils/types'
|
||||
import useFetch from './useFetch'
|
||||
import { isString } from '../../utils/types'
|
||||
|
||||
type Trashbox = {
|
||||
Lat: number,
|
||||
Lng: number,
|
||||
Address: string,
|
||||
Categories: string[]
|
||||
}
|
||||
|
||||
const isTrashbox = (obj: unknown): obj is Trashbox => isObject(obj, {
|
||||
'Lat': 'number',
|
||||
'Lng': 'number',
|
||||
'Address': 'string',
|
||||
'Categories': obj => isArrayOf<string>(obj, isString)
|
||||
})
|
||||
import { composeTrashboxURL } from '../../api/trashbox'
|
||||
import { isTrashboxResponse } from '../../api/trashbox/types'
|
||||
|
||||
const useTrashboxes = (position: LatLng) => {
|
||||
return useFetch(
|
||||
API_URL + '/trashbox?' + new URLSearchParams({
|
||||
lat: position.lat.toString(),
|
||||
lng: position.lng.toString()
|
||||
}).toString(),
|
||||
undefined,
|
||||
[],
|
||||
(obj): obj is Trashbox[] => isArrayOf(obj, isTrashbox)
|
||||
composeTrashboxURL(position),
|
||||
'GET',
|
||||
true,
|
||||
(data) => data,
|
||||
isTrashboxResponse,
|
||||
[]
|
||||
)
|
||||
}
|
||||
|
||||
export type { Trashbox }
|
||||
export default useTrashboxes
|
||||
|
Reference in New Issue
Block a user