Fix Map.tsx types, auth flow, Docker legacy-peer-deps

This commit is contained in:
Ryan Salazar
2026-06-26 17:44:19 -04:00
parent 3eb12c8b34
commit 2bd3c31660
11 changed files with 562 additions and 9 deletions

View File

@@ -54,8 +54,10 @@ export function CruisingMap({ vanillaMode, onActiveCountChange }: MapProps) {
const [showFilters, setShowFilters] = useState(false);
const [showSidebar, setShowSidebar] = useState(true);
const [leafletReady, setLeafletReady] = useState(false);
const [userIcon, setUserIcon] = useState<unknown>(null);
const [spotIcon, setSpotIcon] = useState<unknown>(null);
const [iconFactory, setIconFactory] = useState<{
createUser: (position: string | null, status: string) => import("leaflet").DivIcon;
createSpot: (category: string) => import("leaflet").DivIcon;
} | null>(null);
const [filters, setFilters] = useState<MapFilters>({
ageMin: 18,
@@ -105,8 +107,10 @@ export function CruisingMap({ vanillaMode, onActiveCountChange }: MapProps) {
});
};
setUserIcon({ create: createUserIcon });
setSpotIcon({ create: createSpotIcon });
setIconFactory({
createUser: createUserIcon,
createSpot: createSpotIcon,
});
setLeafletReady(true);
});
}, []);
@@ -277,7 +281,7 @@ export function CruisingMap({ vanillaMode, onActiveCountChange }: MapProps) {
)}
{/* Map */}
{leafletReady && userIcon && spotIcon && (
{leafletReady && iconFactory && (
<MapContainer
center={[DEFAULT_LAT, DEFAULT_LNG]}
zoom={14}
@@ -294,7 +298,7 @@ export function CruisingMap({ vanillaMode, onActiveCountChange }: MapProps) {
<Marker
key={p.id}
position={[p.lat, p.lng]}
icon={(userIcon as { create: (pos: string | null, status: string) => unknown }).create(p.position, p.status)}
icon={iconFactory.createUser(p.position, p.status)}
eventHandlers={{
click: () => setSelectedProfile(p),
}}
@@ -329,7 +333,7 @@ export function CruisingMap({ vanillaMode, onActiveCountChange }: MapProps) {
<Marker
key={s.id}
position={[s.lat, s.lng]}
icon={(spotIcon as { create: (cat: string) => unknown }).create(s.category)}
icon={iconFactory.createSpot(s.category)}
>
<Popup>
<div className="text-sm">