import { useEffect, useState, useRef, useMemo, useCallback } from 'react'
import { MapContainer, TileLayer, Marker, Popup, Circle } from 'react-leaflet'
import { RoundToFixDecimals } from "lib/Utils"
import TextLog from "components/TextLog"
function DraggableMarker({ initialPos, addCircle }) {
const [position, setPosition] = useState(initialPos)
const markerRef = useRef(null)
const eventHandlers = useMemo(
() => ({
dragend() {
const marker = markerRef.current
const pos = marker.getLatLng()
if (addCircle) addCircle(pos)
if (marker) setPosition(pos)
},
}),
[addCircle],
)
return (
{`lat: ${position.lat}`}
{`long: ${position.lng}`}
)
}
function MapInput({ supabase, clientRef, center, zoom }) {
const [log, setLog] = useState(undefined)
const [circles, setCircles] = useState([])
useEffect(() => {
let newLog = `Ref: ${clientRef}\nReady to send location...`
newLog += circles.map(item => { return `\nsent lat=${RoundToFixDecimals(item.lat)} long=${RoundToFixDecimals(item.lng)}` })
setLog(newLog)
}, [circles, clientRef])
const onAddCircle = useCallback(
async (pos) => {
setCircles([...circles, pos])
// insert new location
await supabase
.from('locations')
.insert([
{ latitude: pos.lat, longitude: pos.lng, user_id: clientRef },
])
},
[setCircles, circles, supabase, clientRef]
);
function renderCircles() {
return circles.map((item, index) => )
}
return (
{renderCircles()}
)
}
export default MapInput