import { Button } from "@/components/ui/button" import { Card, CardContent } from "@/components/ui/card" import distance from "@/utils/distance" import { LockClosedIcon, LockOpen1Icon } from "@radix-ui/react-icons" import { useEffect, useState } from "react" import "../styles/locked-content.css" const LocationButton = ({ imageUrl = "#" }: { imageUrl?: string }) => { const [atTarget, setAtTarget] = useState(false) const [contentVisible, setContentVisible] = useState(false) const [hasPermission, setHasPermission] = useState(false) const [watchId, setWatchId] = useState() const startWatchingLocation = () => { setHasPermission(true) if (!watchId) { const id = navigator.geolocation.watchPosition( (position: GeolocationPosition) => { const pos = { lat: position.coords.latitude, lng: position.coords.longitude } const totalDistanceInKM = distance(pos.lat, pos.lng, pos.lat, pos.lng).toFixed(0) if (totalDistanceInKM === "0") { setAtTarget(true) } }, () => null, { enableHighAccuracy: true, maximumAge: 30000, timeout: 27000 } ) setWatchId(id) } } useEffect(() => { navigator.permissions.query({ name: "geolocation" }).then(permissionStatus => { if (permissionStatus.state === "granted") { setHasPermission(true) startWatchingLocation() } }) }, []) if (contentVisible) { return (
) } else { return (
{atTarget ? (
İçeriği görmek için butona bas!
) : (
{hasPermission ? ( İçeriği görmek için konuma gitmelisin! ) : (
Ne kadar yaklaştığını görmek için aşağıdaki butona bas.
)}
)}
) } } export default LocationButton