Added TypeScript for frontend
Added type definitions for components, functions, data Added guards for network responses fixes #8
This commit is contained in:
35
front/src/hooks/api/useTrashboxes.ts
Normal file
35
front/src/hooks/api/useTrashboxes.ts
Normal file
@ -0,0 +1,35 @@
|
||||
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)
|
||||
})
|
||||
|
||||
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)
|
||||
)
|
||||
}
|
||||
|
||||
export type { Trashbox }
|
||||
export default useTrashboxes
|
Reference in New Issue
Block a user