mirror of
https://github.com/seemueller-io/yachtpit.git
synced 2025-09-08 22:46:45 +00:00
gps map token input actually works
This commit is contained in:
@@ -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,7 +42,8 @@ function App() {
|
|||||||
<Button colorScheme="teal" size="sm" variant="solid">
|
<Button colorScheme="teal" size="sm" variant="solid">
|
||||||
Search
|
Search
|
||||||
</Button>
|
</Button>
|
||||||
{!mapboxToken && (
|
{!authenticated && (
|
||||||
|
<>
|
||||||
<Input
|
<Input
|
||||||
placeholder="Enter Mapbox token"
|
placeholder="Enter Mapbox token"
|
||||||
size="sm"
|
size="sm"
|
||||||
@@ -39,18 +51,26 @@ function App() {
|
|||||||
value={mapboxToken}
|
value={mapboxToken}
|
||||||
onChange={(e) => setMapboxToken(e.target.value)}
|
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>
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user