{% extends 'base.html' %} {% block app_content %} <meta name="csrf-token" content="{{ csrf_token() }}"> {% block player_app_content %}{% endblock %} {% endblock %} {% block scripts %} {{ super() }} <script> $(document).ready(sendLocation) function sendLocation(){ if (navigator.geolocation) { navigator.geolocation.getCurrentPosition(postCoordinates, showError); } else { console.log('Geolocation is not supported by this browser.') } } setInterval(function() {sendLocation()}, 65 * 1000); function postCoordinates(position) { $.ajax({ type: "POST", url: "{{ url_for('main.send_location', username=current_user.name) }}", data:{ lat: position.coords.latitude, long: position.coords.longitude }, error: function(error) { console.log(error); } }); } var csrftoken = $('meta[name=csrf-token]').attr('content') $.ajaxSetup({ beforeSend: function(xhr, settings) { if (!/^(GET|HEAD|OPTIONS|TRACE)$/i.test(settings.type) && !this.crossDomain) { xhr.setRequestHeader("X-CSRFToken", csrftoken) } } }) function showError(error) { switch(error.code) { case error.PERMISSION_DENIED: console.log("User denied the request for Geolocation.") alert("Please refresh page and allow location sharing, otherwise the game won't work :'(") break; case error.POSITION_UNAVAILABLE: console.log("Location information is unavailable.") break; case error.TIMEOUT: console.log("The request to get user location timed out.") break; case error.UNKNOWN_ERROR: console.log("An unknown error occurred.") break; } } </script> {% endblock %}