diff --git a/CHANGELOG.md b/CHANGELOG.md
index c84ce2a..d8605df 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -7,6 +7,11 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
## Unreleased
+- [PR-59](https://github.com/itk-dev/aapodwalk/pull/59)
+ - Rename `ErrorComponent.jsx` to `MessageComponent.jsx`
+ - Rename `ErrorContext.jsx` to `MessageContext.jsx`
+ - Add `NavigationHelp.jsx`and write location services guide for safari/chrome 🥱
+ - Check user permission to evaluate whether to display the info box
- [PR-58](https://github.com/itk-dev/aapodwalk/pull/58)
- This pr handles accessibility
- Add [focus trap](https://www.npmjs.com/package/focus-trap-react) for "modals"
diff --git a/src/App.jsx b/src/App.jsx
index eb756c3..42af6ac 100644
--- a/src/App.jsx
+++ b/src/App.jsx
@@ -12,7 +12,9 @@ import Navbar from "./components/Navbar";
import SkipLinks from "./components/SkipLinks";
import FAQ from "./components/FAQ";
import SeeOnMap from "./components/SeeOnMap";
-import ErrorContext from "./context/ErrorContext";
+import MessageContext from "./context/MessageContext";
+import { Link } from "react-router-dom";
+import NavigationHelp from "./components/NavigationHelp";
function App() {
const [selectedRoute, setSelectedRoute] = useState(null);
@@ -21,6 +23,8 @@ function App() {
const [openStreetMapConsent, setOpenStreetMapConsent] = useState(null);
const [error, setError] = useState(false);
const [errorText, setErrorText] = useState("");
+ const [info, setInfo] = useState(false);
+ const [infoText, setInfoText] = useState("");
const [lat, setLat] = useState(null);
const [long, setLong] = useState(null);
const locationUpdateInterval = 30000;
@@ -33,6 +37,27 @@ function App() {
[lat, long],
);
+ function handlePermissionInfoBanner() {
+ navigator.permissions.query({ name: "geolocation" }).then((result) => {
+ if (result.state !== "granted") {
+ setInfo(true);
+ setInfoText(
+
+ Du har ikke accepteret, at vi må få adgang til din lokation. For at denne applikation skal fungere, skal den
+ bruge din lokation. Hvis du vil vide mere om hvordan du giver denne angang, kan du besøge{" "}
+
+ Hjælp til navigation
+
+ ,
+ );
+ }
+ });
+ }
+
+ useEffect(() => {
+ handlePermissionInfoBanner();
+ }, []);
+
function startLocationPrompter() {
setInterval(() => {
navigator.geolocation.getCurrentPosition((position) => {
@@ -83,15 +108,19 @@ function App() {
Hovedindhold
-
+ For alle browsere gælder det, at du kan ændre dine enhedens{" "} + lokationstjenesteindstillinger på systemniveau, hvilket vil påvirke + browserens adfærd. Du kan finde disse indstillinger i din enheds{" "} + Privatlivsindstillinger på både macOS, iOS og Windows. +
++ Herunder er der skrevet korte vejledninger om lokationstilladelse i{" "} + Google Chrome og Safari +
++ + Du kan læse mere om tilladelser og lokation i Google Chrome her + +
+ ++ + Du kan læse mere om tilladelser og lokation i Safari til IPhone her + +
+ > + ); +}; + +export default NavigationHelp; diff --git a/src/components/routes/RouteList.jsx b/src/components/routes/RouteList.jsx index d675c54..8dbe5c9 100644 --- a/src/components/routes/RouteList.jsx +++ b/src/components/routes/RouteList.jsx @@ -5,7 +5,7 @@ import SelectedTagContext from "../../context/SelectedTagContext"; import RoutesLoading from "./RoutesLoading"; import { sortByProximity, routesFilteredByTag } from "../../util/helper"; import LatLongContext from "../../context/latitude-longitude-context"; -import ErrorContext from "../../context/ErrorContext"; +import ErrorContext from "../../context/MessageContext"; function RouteList() { const { selectedTag } = useContext(SelectedTagContext); diff --git a/src/components/tags/TagFilterList.jsx b/src/components/tags/TagFilterList.jsx index b00b30a..da99710 100644 --- a/src/components/tags/TagFilterList.jsx +++ b/src/components/tags/TagFilterList.jsx @@ -2,7 +2,7 @@ import { React, useEffect, useState, useContext } from "react"; import useFetch from "../../util/useFetch"; import Tag from "./Tag"; import TagsLoading from "./TagsLoading"; -import ErrorContext from "../../context/ErrorContext"; +import ErrorContext from "../../context/MessageContext"; function TagFilterList() { const { setErrorText, setError } = useContext(ErrorContext); diff --git a/src/context/ErrorContext.jsx b/src/context/ErrorContext.jsx deleted file mode 100644 index 488b922..0000000 --- a/src/context/ErrorContext.jsx +++ /dev/null @@ -1,5 +0,0 @@ -import { createContext } from "react"; - -const ErrorContext = createContext({}); - -export default ErrorContext; diff --git a/src/context/MessageContext.jsx b/src/context/MessageContext.jsx new file mode 100644 index 0000000..9521de0 --- /dev/null +++ b/src/context/MessageContext.jsx @@ -0,0 +1,5 @@ +import { createContext } from "react"; + +const MessageContext = createContext({}); + +export default MessageContext;