Skip to content

Commit 3050e61

Browse files
authored
Merge pull request #60 from itk-dev/feature/map-permission-stuff
map permission commit
2 parents d0e4882 + cb2d2e9 commit 3050e61

File tree

7 files changed

+68
-14
lines changed

7 files changed

+68
-14
lines changed

CHANGELOG.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,11 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
77

88
## Unreleased
99

10+
- [PR-60](https://github.com/itk-dev/aapodwalk/pull/60)
11+
- Make it possible to reevaluate ip-tracking consent and therefore permission to Open Street Map
12+
- Move `MapConsentBanner` component to be able to display on other pages that frontpage
13+
- Make `App.jsx`responsible for resetting localstorage map permission on change
14+
- Create buttons to toggle permission banner in `RoutePage.jsx` and in `Point.jsx`
1015
- [PR-59](https://github.com/itk-dev/aapodwalk/pull/59)
1116
- Rename `ErrorComponent.jsx` to `MessageComponent.jsx`
1217
- Rename `ErrorContext.jsx` to `MessageContext.jsx`

src/App.jsx

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@ import SeeOnMap from "./components/SeeOnMap";
1515
import MessageContext from "./context/MessageContext";
1616
import { Link } from "react-router-dom";
1717
import NavigationHelp from "./components/NavigationHelp";
18+
import MapConsentBanner from "./components/MapConsentBanner";
1819

1920
function App() {
2021
const [selectedRoute, setSelectedRoute] = useState(null);
@@ -83,6 +84,14 @@ function App() {
8384
}
8485
}, []);
8586

87+
useEffect(() => {
88+
if (openStreetMapConsent === null) {
89+
localStorage.removeItem("data-consent");
90+
} else {
91+
localStorage.setItem("data-consent", openStreetMapConsent);
92+
}
93+
}, [openStreetMapConsent]);
94+
8695
return (
8796
<div className="App flex flex-col h-full pt-24 min-h-screen dark:text-white w-screen pl-3 pr-3 pb-3 text-zinc-800 bg-zinc-100 dark:bg-zinc-800 overflow-hidden">
8897
<LatLongContext.Provider value={contextLatLong}>
@@ -149,6 +158,7 @@ function App() {
149158
<FrontPage />
150159
</Route>
151160
</Switch>
161+
<MapConsentBanner />
152162
</MessageContext.Provider>
153163
</main>
154164
</RouteContext.Provider>

src/components/FrontPage.jsx

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,6 @@ function FrontPage() {
3131
<TagFilterList />
3232
<RouteList />
3333
</SelectedTagContext.Provider>
34-
<MapConsentBanner />
3534
</div>
3635
);
3736
}

src/components/MapConsentBanner.jsx

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,6 @@ function MapConsentBanner() {
66
const { setOpenStreetMapConsent, openStreetMapConsent } = useContext(PermissionContext);
77

88
function updateConsent(consent) {
9-
localStorage.setItem("data-consent", consent);
109
setOpenStreetMapConsent(consent);
1110
}
1211

src/components/map/MapWrapper.jsx

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ function MapWrapper({ mapData, additionalClass = "", focusable, withIndex }) {
1212

1313
return (
1414
<>
15-
{focusOnMap && (
15+
{focusOnMap && focusable && (
1616
<FocusTrap>
1717
<div className="map-container absolute left-0 top-0 right-0 h-full">
1818
<CloseButton
@@ -24,6 +24,11 @@ function MapWrapper({ mapData, additionalClass = "", focusable, withIndex }) {
2424
</div>
2525
</FocusTrap>
2626
)}
27+
{focusOnMap && !focusable && (
28+
<div className="map-container absolute left-0 top-0 right-0 h-full">
29+
<MapComponent focusOnMap={focusOnMap} withIndex={withIndex} mapData={mapData} additionalClass="z-40" />
30+
</div>
31+
)}
2732
{!focusOnMap && (
2833
<button type="button" onClick={() => setFocusOnMap(true)}>
2934
{!focusOnMap && focusable && (

src/components/points/Point.jsx

Lines changed: 21 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -10,10 +10,12 @@ import OrderComponent from "./OrderComponent";
1010
import PointOverlay from "./PointOverlay";
1111
import LatLongContext from "../../context/latitude-longitude-context";
1212
import { useScrollToLocation } from "../hooks/UseScrollIntoView";
13+
import PermissionContext from "../../context/permission-context";
1314

1415
function Point({ point, order }) {
1516
const { latitude, longitude, name, image, id, subtitles, proximityToUnlock = 100 } = point;
1617
const { nextUnlockablePointId, listOfUnlocked } = useContext(RouteContext);
18+
const { openStreetMapConsent, setOpenStreetMapConsent } = useContext(PermissionContext);
1719
const { lat, long } = useContext(LatLongContext);
1820
const [unlocked, setUnlocked] = useState(false);
1921
const [playThis, setPlayThis] = useState(false);
@@ -84,13 +86,25 @@ function Point({ point, order }) {
8486
)}
8587
{isNextPointToUnlock() && (
8688
<>
87-
<Link
88-
to={`/see-on-map/${latitude}/${longitude}`}
89-
className="absolute top-1/2 left-1/2 transform -translate-x-1/2 -translate-y-1/2 flex flex-col cursor-pointer text-emerald-400 dark:text-emerald-600"
90-
>
91-
<FontAwesomeIcon className="h-9" icon={faMapLocationDot} />
92-
<span className="sr-only">Se punkt {name} på kort</span>
93-
</Link>
89+
{openStreetMapConsent && (
90+
<Link
91+
to={`/see-on-map/${latitude}/${longitude}`}
92+
className="absolute top-1/2 left-1/2 transform -translate-x-1/2 -translate-y-1/2 flex flex-col cursor-pointer text-emerald-400 dark:text-emerald-600"
93+
>
94+
<FontAwesomeIcon className="h-9" icon={faMapLocationDot} />
95+
<span className="sr-only">Se punkt {name} på kort</span>
96+
</Link>
97+
)}
98+
{!openStreetMapConsent && (
99+
<button
100+
type="button"
101+
onClick={() => setOpenStreetMapConsent(null)}
102+
className="absolute top-1/2 left-1/2 transform -translate-x-1/2 -translate-y-1/2 cursor-pointer text-emerald-400 dark:text-emerald-600"
103+
>
104+
<FontAwesomeIcon className="h-9" icon={faMapLocationDot} />
105+
<span className="sr-only">Tag stilling til tilladelser i forhold til kortet igen</span>
106+
</button>
107+
)}
94108
<DistanceComponent
95109
data={point}
96110
classes="absolute top-1/2 right-5 transform -translate-x-1/2 -translate-y-1/2 text-xl"

src/components/routes/RoutePage.jsx

Lines changed: 26 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,19 @@
11
import { React, useEffect, useState, useContext } from "react";
22
import { Link, useParams } from "react-router-dom";
3-
import { faPlayCircle } from "@fortawesome/free-solid-svg-icons";
4-
import { FontAwesomeIcon } from "@fortawesome/react-fontawesome";
5-
import useFetch from "../../util/useFetch";
3+
import PermissionContext from "../../context/permission-context";
64
import RouteContext from "../../context/RouteContext";
5+
import useFetch from "../../util/useFetch";
76
import MapWrapper from "../map/MapWrapper";
87
import TagList from "../tags/TagList";
8+
import { FontAwesomeIcon } from "@fortawesome/react-fontawesome";
9+
import { faPlayCircle } from "@fortawesome/free-solid-svg-icons";
910

1011
function RoutePage() {
1112
const { id } = useParams();
13+
const { openStreetMapConsent, setOpenStreetMapConsent } = useContext(PermissionContext);
1214
const { selectedRoute, setSelectedRoute, setListOfUnlocked } = useContext(RouteContext);
1315
const [dataFetched, setDataFetched] = useState(false);
16+
const [focusOnText, setFocusOnText] = useState(false);
1417
function isRouteAlreadySet() {
1518
return selectedRoute === null && dataFetched;
1619
}
@@ -35,7 +38,14 @@ function RoutePage() {
3538

3639
if (selectedRoute === null) return null;
3740

41+
function resetPermission() {
42+
setFocusOnText(false);
43+
setOpenStreetMapConsent(null);
44+
}
45+
3846
const { title, tags, points, totalDuration, distance, description } = selectedRoute;
47+
const consentText =
48+
"Du har ikke givet samtykke, derfor kan vi ikke vise et kort her. Vil du ændre det, kan du trykke her.";
3949

4050
return (
4151
<>
@@ -46,7 +56,19 @@ function RoutePage() {
4656
<h1 className="text-4xl font-extrabold z-50 relative word-break">{title}</h1>
4757
</div>
4858
<div className="flex flex-col items-end">
49-
<div className="w-3/5 mb-10 text-end">Tryk på kortet for at undersøge ruten</div>
59+
{openStreetMapConsent && <div className="w-3/5 mb-10 text-end">Tryk på kortet for at undersøge ruten</div>}
60+
61+
{!openStreetMapConsent && !focusOnText && (
62+
<button type="button" onClick={() => setFocusOnText(true)} className="opacity-35 mb-10 text-center">
63+
{consentText}
64+
</button>
65+
)}
66+
{!openStreetMapConsent && focusOnText && (
67+
<button type="button" onClick={() => resetPermission()} className="mb-10 text-center">
68+
{consentText}
69+
</button>
70+
)}
71+
5072
<div className="bg-emerald-400 w-full dark:bg-emerald-800 mb-3 rounded-md p-3 flex z-50 relative">
5173
<div>
5274
<div className="font-bold">Distance</div>

0 commit comments

Comments
 (0)