Skip to content

Commit 6187021

Browse files
committed
Improving code flow of waypointer
1 parent 589f718 commit 6187021

File tree

5 files changed

+54
-56
lines changed

5 files changed

+54
-56
lines changed

src/App.jsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -79,7 +79,7 @@ function App() {
7979
setSpeed(position.coords.speed);
8080
});
8181
updateLocation();
82-
}, 2000);
82+
}, 3000);
8383
};
8484

8585
const handlePermissions = async () => {

src/components/points-of-interest/PodcastWrapper.css

Whitespace-only changes.
Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
import React, { useEffect } from "react";
2+
3+
function PodcastWrapper({ IFrameUrl }) {
4+
useEffect(() => {}, []);
5+
6+
return (
7+
<iframe
8+
className="soundcloud-iframe"
9+
title="soundcloud-iframe"
10+
width="100%"
11+
height="300"
12+
scrolling="no"
13+
frameBorder="no"
14+
allow="autoplay"
15+
src={IFrameUrl}
16+
/>
17+
);
18+
}
19+
export default PodcastWrapper;

src/components/points-of-interest/PointOfInterest.jsx

Lines changed: 13 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,22 +1,30 @@
11
import { React, useState, useEffect, useContext } from "react";
22
import LatLongContext from "../../context/latitude-longitude-context";
33
import { getDistanceBetweenCoordinates } from "../../util/helper";
4+
import PodcastWrapper from "./PodcastWrapper";
45
import PermissionContext from "../../context/permission-context";
56
import AudioContext from "../../context/audio-context";
67
import Image from "../Image";
78

89
function PointOfInterest({
9-
pointOfInterest: { latitude, longitude, name, image, id, subtitles, podcast },
10+
pointOfInterest: {
11+
latitude,
12+
longitude,
13+
name,
14+
image,
15+
id,
16+
subtitles,
17+
podcast,
18+
IFrameUrl,
19+
},
1020
}) {
11-
const startBtn = document.querySelector(".start-btn");
1221
const { lat, long } = useContext(LatLongContext);
1322
const { setSource } = useContext(AudioContext);
1423
const [proximity, setProximity] = useState(null);
1524
const [unlocked, setUnlocked] = useState(false);
1625
const [viewSubtitles, setViewSubtitles] = useState(false);
1726

1827
const { geolocationAvailable } = useContext(PermissionContext);
19-
2028
useEffect(() => {
2129
if (
2230
latitude &&
@@ -32,7 +40,7 @@ function PointOfInterest({
3240
longitude
3341
);
3442
setProximity(distance);
35-
setUnlocked(distance < 10000); // todo magic number/get from config
43+
setUnlocked(distance < 5); // todo magic number/get from config
3644
}
3745
}, [latitude, longitude, lat, long, geolocationAvailable]);
3846

@@ -100,6 +108,7 @@ function PointOfInterest({
100108
)}
101109
{!unlocked && <div>kan ikke tilgås</div>}
102110
{viewSubtitles && <div>{subtitles}</div>}
111+
{unlocked && IFrameUrl && <PodcastWrapper IFrameUrl={IFrameUrl} />}
103112
</>
104113
);
105114
}

src/components/routes/RoutePage.jsx

Lines changed: 21 additions & 51 deletions
Original file line numberDiff line numberDiff line change
@@ -14,10 +14,7 @@ function RoutePage() {
1414
const [angle, setAngle] = useState(0);
1515
const [latitude, setLatitude] = useState(0);
1616
const [longitude, setLongitude] = useState(0);
17-
const [userLatitude, setUserLatitude] = useState(0);
18-
const [userLongitude, setUserLongitude] = useState(0);
19-
let handlerAvailable = true;
20-
let locationHandlerAvailable = true;
17+
const [destinationName, setDestinationName] = useState(null);
2118
const isIOS =
2219
navigator.userAgent.match(/(iPod|iPhone|iPad)/) &&
2320
navigator.userAgent.match(/AppleWebKit/);
@@ -36,32 +33,24 @@ function RoutePage() {
3633
}, [orientation, angle]);
3734

3835
function locationHandler(pos) {
39-
if (locationHandlerAvailable === false) return;
40-
locationHandlerAvailable = false;
4136
setTimeout(() => {
42-
locationHandlerAvailable = true;
43-
}, 750);
44-
setAngle(
45-
getAngleFromLocationToDestination(
46-
pos.coords.latitude,
47-
pos.coords.longitude,
48-
latitude,
49-
longitude
50-
)
51-
);
52-
setUserLatitude(pos.coords.latitude);
53-
setUserLongitude(pos.coords.longitude);
37+
setAngle(
38+
getAngleFromLocationToDestination(
39+
pos.coords.latitude,
40+
pos.coords.longitude,
41+
latitude,
42+
longitude
43+
)
44+
);
45+
}, 3000);
5446
}
5547

5648
function deviceOrientationHandler(e) {
57-
if (handlerAvailable === false) return;
58-
handlerAvailable = false;
5949
setTimeout(() => {
60-
handlerAvailable = true;
61-
}, 750);
62-
navigator.geolocation.getCurrentPosition(locationHandler);
63-
const orientaionValue = e.webkitCompassHeading || Math.abs(e.alpha - 360);
64-
setOrientation(orientaionValue);
50+
navigator.geolocation.getCurrentPosition(locationHandler);
51+
const orientaionValue = e.webkitCompassHeading || Math.abs(e.alpha - 360);
52+
setOrientation(orientaionValue);
53+
}, 3000);
6554
}
6655

6756
function startWaypointer() {
@@ -91,18 +80,11 @@ function RoutePage() {
9180
}, []);
9281

9382
useEffect(() => {
94-
console.log(pointsOfInterest);
9583
if (pointsOfInterest) {
96-
setLatitude(
97-
Object.values(pointsOfInterest)[
98-
Object.keys(pointsOfInterest).length - 1
99-
].latitude
100-
);
101-
setLongitude(
102-
Object.values(pointsOfInterest)[
103-
Object.keys(pointsOfInterest).length - 1
104-
].longitude
105-
);
84+
console.log(pointsOfInterest);
85+
setLatitude(pointsOfInterest[0].latitude);
86+
setLongitude(pointsOfInterest[0].longitude);
87+
setDestinationName(pointsOfInterest[0].name);
10688
}
10789
}, [pointsOfInterest]);
10890

@@ -129,29 +111,17 @@ function RoutePage() {
129111
}}
130112
src="data:image/png;base64,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"
131113
/>
132-
<p
133-
style={{
134-
width: 100,
135-
display: "block",
136-
margin: "auto",
137-
textAlign: "center",
138-
}}
139-
>
140-
user lat: {userLatitude} <br />
141-
user long: {userLongitude} <br />
142-
lat: {latitude} <br />
143-
long: {longitude} <br />
144-
</p>
145114
<button
146115
style={{
147-
width: 100,
116+
width: 300,
117+
height: 100,
148118
display: "block",
149119
margin: "auto",
150120
}}
151121
type="button"
152122
onClick={() => startWaypointer()}
153123
>
154-
Vis mig vej
124+
Vis mig vej til {destinationName}
155125
</button>
156126
</>
157127
);

0 commit comments

Comments
 (0)