From d2f01f963a1c18020969e5d8a4584e3e16c5641d Mon Sep 17 00:00:00 2001 From: marudor Date: Sat, 11 May 2019 12:43:04 +0200 Subject: Do not nag directly for geolocation --- public/static/js/geolocation.js | 31 ++++++++++++++++++++++++------- 1 file changed, 24 insertions(+), 7 deletions(-) (limited to 'public/static/js/geolocation.js') diff --git a/public/static/js/geolocation.js b/public/static/js/geolocation.js index ccc8c3a..cb16e72 100644 --- a/public/static/js/geolocation.js +++ b/public/static/js/geolocation.js @@ -1,9 +1,9 @@ $(document).ready(function() { - var prePlaceholder = $('p.geolocationhint'); - var placeholder = $('div.geolocation div.progress'); + function getPlaceholder() { + return $('div.geolocation div.progress'); + } var showError = function(header, message, code) { - prePlaceholder.remove(); - placeholder.remove(); + getPlaceholder().remove(); var errnode = $(document.createElement('div')); errnode.attr('class', 'error'); errnode.text(message); @@ -36,7 +36,7 @@ $(document).ready(function() { resultBody.append('' + name + ''); }); - placeholder.replaceWith(resultTable); + getPlaceholder().replaceWith(resultTable); } }; @@ -56,9 +56,26 @@ $(document).ready(function() { } }; - if ($('div.geolocation').length) { + var geoLocationButton = $('div.geolocation > button'); + var getGeoLocation = function() { + geoLocationButton.replaceWith($('

Stationen in der Umgebung:

')); + navigator.geolocation.getCurrentPosition(processLocation, processError); + } + + if (geoLocationButton.length) { if (navigator.geolocation) { - navigator.geolocation.getCurrentPosition(processLocation, processError); + if (navigator.permissions) { + navigator.permissions.query({ name:'geolocation' }).then(function(value) { + if (value.state === 'prompt') { + geoLocationButton.on('click', getGeoLocation); + } else { + // User either rejected or granted permission. User wont get prompted and we can show stations/error + getGeoLocation(); + } + }); + } else { + geoLocationButton.on('click', getGeoLocation); + } } else { showError('Standortanfragen werden von diesem Browser nicht unterstützt', '', null); } -- cgit v1.2.3