From 475c67eed7a043857ce46459a3224ed0cc4bf1a5 Mon Sep 17 00:00:00 2001 From: Luke Berndt Date: Sat, 21 Sep 2024 10:19:01 -0400 Subject: [PATCH] handle play in background --- frontend/public/silence.m4a | Bin 0 -> 3428 bytes frontend/src/Call/components/GroupModal.js | 2 +- frontend/src/Call/components/MediaPlayer.js | 34 ++++++++++++++++++++ nginx-proxy/prod/vhosts/site.template | 19 +++++++++-- nginx-proxy/test/vhosts/site.template | 28 ++++++++++++---- 5 files changed, 73 insertions(+), 10 deletions(-) create mode 100644 frontend/public/silence.m4a diff --git a/frontend/public/silence.m4a b/frontend/public/silence.m4a new file mode 100644 index 0000000000000000000000000000000000000000..c5036b22983eef52bf5f3632b245c54d99b62d4f GIT binary patch literal 3428 zcmeHK$xg#C5FNLqMF_D75D4WEq;g_W*m^F40|z)E5FieOI)y^qM6p{5PW>GY`~{!E z6^X9^-Xtwugx~|nQ`}iIV^7?%Ohk6gJVZy^yADx~nAUZuFgA&3v=;k5kyTdGGp}^$ zwW?)zeQSNgbt&goCd7hM%tls&Y!CduJ&?77Ut1rV=a>q^7P@GlTDKCk5BYbZrb~kO z>0v;CdPuJHJb&VHM8zEwd-pJ2n)@VYzR$4}4S9PIiE=2<%Y>tw{YhRfrYx3jdC3$o0Rt9k=2I;Wb=<-aDAUc$qS}@ zyWL)f+X(1f#(5c`0^{c{y#QQt(8g*Xhj+jAcl zpP%@(_4Q2z+O_m`Tk@LHcrcwSKcVcl)PFGHFpIq?;)vf^t*577>B)pV4I5V^4#L^_ Krc~?Rl)eDy62&M0 literal 0 HcmV?d00001 diff --git a/frontend/src/Call/components/GroupModal.js b/frontend/src/Call/components/GroupModal.js index da70d4b..f2423fe 100644 --- a/frontend/src/Call/components/GroupModal.js +++ b/frontend/src/Call/components/GroupModal.js @@ -72,7 +72,7 @@ function GroupModal(props) { return ( - + handleDone(onClose)} size='tiny'> {system && system.name} diff --git a/frontend/src/Call/components/MediaPlayer.js b/frontend/src/Call/components/MediaPlayer.js index 7dba90e..7c4f374 100644 --- a/frontend/src/Call/components/MediaPlayer.js +++ b/frontend/src/Call/components/MediaPlayer.js @@ -33,6 +33,40 @@ const MediaPlayer = (props) => { const regionsPlugin = useMemo(() => RegionsPlugin.create(), []); const plugins = useMemo(() => [regionsPlugin], [regionsPlugin]); + + useEffect(() => { + setSourceIndex(0); + + if ('mediaSession' in navigator) { + navigator.mediaSession.metadata = new MediaMetadata({ + title: "Waiting for Call...", + album: 'OpenMHz', + artwork: [ + { src: '/favicon-32x32.png', sizes: '32x32', type: 'image/png' }, + { src: '/android-chrome-192x192.png', sizes: '192x192', type: 'image/png' }, + { src: '/android-chrome-192x192.png', sizes: '512x512', type: 'image/png' }, + ] + }); + } + + wavesurfer && wavesurfer.load("/silence.m4a"); + regionsPlugin.clearRegions(); + + // // In browsers that don’t yet support this functionality, + // // playPromise won’t be defined. + // if (playPromise !== undefined) { + // playPromise.then(function () { + + // }).catch(function (error) { + // console.log("Automatic playback failed: " + error); + // // Show a UI element to let the user manually start playback. + // }); + // } else { + // audio.src = false; + // } + + }, [playSilence]); + const onReady = (ws) => { setWavesurfer(ws) setIsPlaying(false) diff --git a/nginx-proxy/prod/vhosts/site.template b/nginx-proxy/prod/vhosts/site.template index 5d0f33a..17c8d7f 100644 --- a/nginx-proxy/prod/vhosts/site.template +++ b/nginx-proxy/prod/vhosts/site.template @@ -38,13 +38,26 @@ server { location /favicon.ico { proxy_pass http://frontend:3000; + expires 1M; + add_header Surrogate-Control "public, max-age=2629746"; + add_header Cache-Control "max-age=2629746, public"; access_log off; } location /*.png { - proxy_pass http://frontend:3000; - access_log off; - } + proxy_pass http://frontend:3000; + access_log off; + expires 1M; + add_header Cache-Control "max-age=2629746, public"; + } + + location /*.m4a { + proxy_pass http://frontend:3000; + access_log off; + expires 1M; + add_header Surrogate-Control "public, max-age=2629746"; + add_header Cache-Control "max-age=2629746, public"; + } location / { proxy_pass http://frontend:3000; diff --git a/nginx-proxy/test/vhosts/site.template b/nginx-proxy/test/vhosts/site.template index aa12004..e4d96d7 100644 --- a/nginx-proxy/test/vhosts/site.template +++ b/nginx-proxy/test/vhosts/site.template @@ -16,13 +16,29 @@ server { location /favicon.ico { proxy_pass http://frontend:3000; - access_log off; + expires 1M; + add_header Surrogate-Control "public, max-age=604800"; + add_header Cache-Control "max-age=604800, public"; + access_log /dev/stdout main; } - location /*.png { - proxy_pass http://frontend:3000; - access_log off; - } + location ~* \.(gif|jpg|png)$ { + proxy_pass http://frontend:3000; + + add_header Pragma public; + add_header Surrogate-Control "public, max-age=604800"; + add_header Cache-Control "max-age=604800, public"; + expires 1M; + } + + location /silence.m4a { + proxy_pass http://frontend:3000; + access_log /dev/stdout main; + + add_header Surrogate-Control "public, max-age=604800"; + add_header Cache-Control "max-age=604800, public"; + expires 1M; + } location / { proxy_pass http://frontend:3000; @@ -80,6 +96,6 @@ server { proxy_set_header Connection "upgrade"; proxy_set_header Host $host; proxy_cache_bypass $http_upgrade; - access_log off; + access_log /dev/stdout main; } }