Selaa lähdekoodia

remove: visitor location concept from map

- Remove geolocation (user dot on map)
- Remove visitors WebSocket markers
- Remove visitor/location types from map.ts
- Keep only place/studio markers
neyrogovnarik 1 kuukausi sitten
vanhempi
sitoutus
b2d22a12c4
2 muutettua tiedostoa jossa 2 lisäystä ja 48 poistoa
  1. 1 44
      frontend/src/components/MapView.tsx
  2. 1 4
      frontend/src/lib/map.ts

+ 1 - 44
frontend/src/components/MapView.tsx

@@ -4,15 +4,10 @@ import { useEffect, useRef, useState, useCallback } from 'react'
 
 import { createLeafletMapProvider, type MapProvider, type MapBounds } from '@/lib/map'
 import { useAuth } from '@/hooks/useAuth'
-import { useWebSocket } from '@/hooks/useWebSocket'
 import type { Place } from '@/types'
 import { api } from '@/lib/api'
 
-/**
- * Основной компонент карты. Инициализирует Leaflet, загружает места,
- * отображает маркеры и показывает карточку места при клике.
- * Для неавторизованных пользователей через WebSocket показывает точки других посетителей на карте.
- */
+/** Основной компонент карты. Инициализирует Leaflet, загружает места, отображает маркеры и показывает карточку места при клике. */
 export default function MapView() {
   const containerRef = useRef<HTMLDivElement>(null)
   const mapRef = useRef<MapProvider | null>(null)
@@ -20,7 +15,6 @@ export default function MapView() {
   const [places, setPlaces] = useState<Place[]>([])
   const [selectedPlace, setSelectedPlace] = useState<Place | null>(null)
   const [mapError, setMapError] = useState(false)
-  const [userPos, setUserPos] = useState<{ lat: number; lng: number } | null>(null)
 
   const fetchPlaces = useCallback(async (bounds?: MapBounds) => {
     try {
@@ -50,16 +44,6 @@ export default function MapView() {
         return
       }
 
-      if (navigator.geolocation) {
-        navigator.geolocation.getCurrentPosition(
-          (pos) => {
-            setUserPos({ lat: pos.coords.latitude, lng: pos.coords.longitude })
-            provider.setCenter(pos.coords.latitude, pos.coords.longitude)
-          },
-          () => {},
-        )
-      }
-
       provider.onMove((_center, _zoom, bounds) => {
         fetchPlaces(bounds)
       })
@@ -76,17 +60,6 @@ export default function MapView() {
     }
   }, [])
 
-  useEffect(() => {
-    const provider = mapRef.current
-    if (!userPos || !provider || !provider.isReady()) return
-
-    provider.removeMarker('_user_location')
-    provider.addMarker('_user_location', userPos.lat, userPos.lng, {
-      type: 'location',
-      color: user ? '#FF4B4B' : '#FFF82A',
-    })
-  }, [userPos, user])
-
   useEffect(() => {
     const provider = mapRef.current
     if (!provider || !provider.isReady()) return
@@ -106,22 +79,6 @@ export default function MapView() {
     }
   }, [places, user])
 
-  const { visitors } = useWebSocket(!user)
-
-  useEffect(() => {
-    const provider = mapRef.current
-    if (!provider || !provider.isReady()) return
-
-    visitors.forEach((v, i) => {
-      const type = v.user_id ? 'visitor_registered' : 'visitor'
-      provider.addMarker(`ws-visitor-${i}`, v.lat, v.lng, { type, ghost: !user && !v.user_id })
-    })
-
-    return () => {
-      visitors.forEach((_, i) => provider.removeMarker(`ws-visitor-${i}`))
-    }
-  }, [visitors, user])
-
   return (
     <div className="relative h-full w-full">
       {mapError ? (

+ 1 - 4
frontend/src/lib/map.ts

@@ -11,7 +11,7 @@ export interface MapBounds {
 }
 
 export interface MarkerOptions {
-  type?: 'place' | 'studio' | 'visitor' | 'visitor_registered' | 'location'
+  type?: 'place' | 'studio'
   title?: string
   onClick?: () => void
   ghost?: boolean
@@ -22,9 +22,6 @@ const TILE_URL = 'https://{s}.basemaps.cartocdn.com/dark_all/{z}/{x}/{y}{r}.png'
 const MARKER_COLORS: Record<string, string> = {
   place: '#FFF82A',
   studio: '#FF80DF',
-  visitor: '#FFF82A',
-  visitor_registered: '#FF4B4B',
-  location: '#FFF82A',
 }
 
 const MARKER_SIZE = 7