wheelshare-frontend/src/components/usePlace.ts
2021-07-13 20:02:04 -04:00

25 lines
682 B
TypeScript

import { useState, useEffect, useCallback } from 'react';
import getPlaceDetails, { PlaceDetails } from '../lib/getPlaceDetails';
import useThrottle from './useThrottle';
export default function usePlace(placeId: string | null) {
const [placeDetails, setPlaceDetails] = useState<PlaceDetails | null>(null);
const updatePlaceDetails = useCallback(() => {
if (placeId == null) {
setPlaceDetails(null);
} else {
getPlaceDetails(placeId).then(setPlaceDetails);
}
}, [placeId]);
const updatePlaceDetailsThrottled = useThrottle(updatePlaceDetails, 500);
useEffect(updatePlaceDetailsThrottled, [
placeId,
updatePlaceDetailsThrottled,
]);
return placeDetails;
}