From b1937939b5fdf40e3853adf26df9a6a3443c7059 Mon Sep 17 00:00:00 2001 From: Aaron Gutierrez Date: Thu, 1 Jun 2023 16:24:49 -0700 Subject: [PATCH] Fix screen wake lock, add https dev server --- server.py | 8 ++++++++ tuner.js | 23 ++++++++++++++++++++--- 2 files changed, 28 insertions(+), 3 deletions(-) create mode 100644 server.py diff --git a/server.py b/server.py new file mode 100644 index 0000000..435763d --- /dev/null +++ b/server.py @@ -0,0 +1,8 @@ +from http.server import ThreadingHTTPServer, SimpleHTTPRequestHandler +import ssl + +httpd = ThreadingHTTPServer(('', 8443), SimpleHTTPRequestHandler) +ssl_context = ssl.SSLContext(ssl.PROTOCOL_TLS_SERVER) +ssl_context.load_cert_chain('/Users/amgutier/certs/fullchain.pem', keyfile='/Users/amgutier/certs/privkey.pem') +httpd.socket = ssl_context.wrap_socket(httpd.socket, server_side=True) +httpd.serve_forever() diff --git a/tuner.js b/tuner.js index e79199d..2d76441 100644 --- a/tuner.js +++ b/tuner.js @@ -19,6 +19,9 @@ const NOTE_NAMES = [ // gives us finer-grained FFT buckets const TARGET_SAMPLE_RATE = 8000; +// 2 minute screen timeout +const TIMEOUT = 120; + let dom_frequency; let dom_rate; let dom_note; @@ -37,14 +40,26 @@ const setup = () => { }) .then(handleStream, err => { console.error("Error calling getUserMedia", err); - }); + }) + .then(aquireWakeLock); } +}; + +const aquireWakeLock = ({ interval, stream}) => { if (navigator.wakeLock && navigator.wakeLock.request) { try { navigator.wakeLock .request("screen") - .then(wakeLock => setTimeout(() => wakeLock.release(), 60000)); + .then(wakeLock => setTimeout(() => { + clearInterval(interval); + wakeLock.release(); + stream.getTracks().forEach(track => track.stop()); + dom_note.innerHTML = "Done"; + dom_note.onclick = () => { window.location.reload() }; + dom_tune.innerHTML = ""; + dom_frequency.innerHTML = ""; + }, TIMEOUT * 1000)); } catch (err) {} } }; @@ -65,7 +80,9 @@ const handleStream = stream => { const source = audioContext.createMediaStreamSource(stream); source.connect(analyser); - setInterval(tune(analyser, data), 500); + const interval = setInterval(tune(analyser, data), 500); + + return { interval, stream}; }; const tune = (analyser, data) => () => {