gps map token input actually works

This commit is contained in:
geoffsee
2025-07-05 10:40:22 -04:00
parent 44081ad73d
commit 1999970f38

View File

@@ -6,18 +6,29 @@ import Cookies from 'js-cookie';
function App() { function App() {
const [mapboxToken, setMapboxToken] = useState(() => Cookies.get('mapbox_token') || ''); const [mapboxToken, setMapboxToken] = useState(() => Cookies.get('mapbox_token') || '');
const [isTokenLoading, setIsTokenLoading] = useState(false);
const [authenticated, setAuthenticated] = useState(false);
useEffect(() => { useEffect(() => {
if (mapboxToken) { const checkAndLoadToken = async () => {
const savedToken = Cookies.get('mapbox_token');
if (savedToken) {
setMapboxToken(savedToken);
}
setIsTokenLoading(false);
};
checkAndLoadToken();
}, []);
useEffect(() => {
if (!isTokenLoading && mapboxToken) {
Cookies.set('mapbox_token', mapboxToken, { Cookies.set('mapbox_token', mapboxToken, {
secure: true, secure: true,
sameSite: 'strict', sameSite: 'strict',
expires: 30 // 30 days expires: 30 // 30 days
}); });
} else {
Cookies.remove('mapbox_token');
} }
}, [mapboxToken]); }, [mapboxToken, isTokenLoading]);
return ( return (
@@ -31,26 +42,35 @@ function App() {
<Button colorScheme="teal" size="sm" variant="solid"> <Button colorScheme="teal" size="sm" variant="solid">
Search Search
</Button> </Button>
{!mapboxToken && ( {!authenticated && (
<Input <>
placeholder="Enter Mapbox token" <Input
size="sm" placeholder="Enter Mapbox token"
width="300px" size="sm"
value={mapboxToken} width="300px"
onChange={(e) => setMapboxToken(e.target.value)} value={mapboxToken}
/> onChange={(e) => setMapboxToken(e.target.value)}
/>
<Button
colorScheme="green"
size="sm"
onClick={() => setAuthenticated(true)}
>
Set Mapbox token
</Button>
</>
)} )}
</HStack> </HStack>
{/* Map itself */} {/* Map itself */}
<Map {authenticated && (<Map
mapboxAccessToken={mapboxToken} mapboxAccessToken={mapboxToken}
initialViewState={{ longitude: -122.4, latitude: 37.8, zoom: 14 }} initialViewState={{longitude: -122.4, latitude: 37.8, zoom: 14}}
mapStyle="mapbox://styles/mapbox/dark-v11" mapStyle="mapbox://styles/mapbox/dark-v11"
reuseMaps reuseMaps
attributionControl={false} attributionControl={false}
style={{ width: '100%', height: '100%' }} // let the wrapper dictate size style={{width: '100%', height: '100%'}} // let the wrapper dictate size
/> />)}
</Box> </Box>
); );
} }