diff --git a/backend/public/_expo/static/js/web/entry-fc23290c11efc46275b69afc178fc68b.js b/backend/public/_expo/static/js/web/entry-ebdfb52a053bc6bb6819abb98d4a3d46.js similarity index 99% rename from backend/public/_expo/static/js/web/entry-fc23290c11efc46275b69afc178fc68b.js rename to backend/public/_expo/static/js/web/entry-ebdfb52a053bc6bb6819abb98d4a3d46.js index 3dd166a..7df2d0e 100644 --- a/backend/public/_expo/static/js/web/entry-fc23290c11efc46275b69afc178fc68b.js +++ b/backend/public/_expo/static/js/web/entry-ebdfb52a053bc6bb6819abb98d4a3d46.js @@ -773,7 +773,7 @@ __d((function(g,_r,i,a,m,_e,d){var e=_r(d[0]);Object.defineProperty(_e,"__esModu __d((function(g,_r,i,a,m,_e,d){function e(r){var t,f,n="";if("string"==typeof r||"number"==typeof r)n+=r;else if("object"==typeof r)if(Array.isArray(r))for(t=0;t1&&void 0!==arguments[1]&&arguments[1],l=o(t,n);window.open(l,"_blank")},e.openFullscreen=function(t){t.requestFullscreen?t.requestFullscreen():t.webkitRequestFullscreen?t.webkitRequestFullscreen():t.msRequestFullscreen&&t.msRequestFullscreen()},e.wakePcUp=void 0;var n=t(r(d[1])),l=t(r(d[2])),u=r(d[3]),s=r(d[4]),c=t(r(d[5]));e.wakePcUp=(function(){var t=(0,n.default)((function*(){try{yield l.default.apps.wakepc.$post(),(0,u.showToast)("Waking up PC...")}catch(t){(0,u.showToast)("Cannot wake up the PC!",{type:"danger"})}}));return function(){return t.apply(this,arguments)}})();function o(t){var n=arguments.length>1&&void 0!==arguments[1]&&arguments[1],l="string"==typeof t?t:t.path,u=new URL(s.API_BASEURL+"/files/download"+l);return u.searchParams.set("token",c.default.getState().token),n&&u.searchParams.set("dl","true"),u.toString()}}),698,[34,6,699,658,700,651]); __d((function(g,_r,_i,_a,m,_e,d){var t=_r(d[0]);Object.defineProperty(_e,"__esModule",{value:!0}),_e.default=_e.ApiError=void 0,_e.fetchAPI=v;var e=t(_r(d[1])),r=t(_r(d[2])),n=t(_r(d[3])),o=t(_r(d[4])),u=t(_r(d[5])),a=t(_r(d[6])),f=t(_r(d[7])),l=_r(d[8]),i=_r(d[9]),c=(function(t,e){if(!e&&t&&t.__esModule)return t;if(null===t||"object"!=typeof t&&"function"!=typeof t)return{default:t};var r=p(e);if(r&&r.has(t))return r.get(t);var n={__proto__:null},o=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var u in t)if("default"!==u&&Object.prototype.hasOwnProperty.call(t,u)){var a=o?Object.getOwnPropertyDescriptor(t,u):null;a&&(a.get||a.set)?Object.defineProperty(n,u,a):n[u]=t[u]}return n.default=t,r&&r.set(t,n),n})(_r(d[10]));function p(t){if("function"!=typeof WeakMap)return null;var e=new WeakMap,r=new WeakMap;return(p=function(t){return t?r:e})(t)}function s(){try{var t=!Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){})))}catch(t){}return(s=function(){return!!t})()}var y=(0,i.hc)(l.API_BASEURL,{fetch:v}),h=_e.ApiError=(function(t){function e(t,r){var a;(0,n.default)(this,e);var f,l,i,c="string"==typeof r?r:"object"==typeof r?null==r?void 0:r.message:t.statusText;return f=this,l=e,i=[c],l=(0,u.default)(l),(a=(0,o.default)(f,s()?Reflect.construct(l,i||[],(0,u.default)(f).constructor):l.apply(f,i))).code=400,a.name="ApiError",a.code=t.status,a}return(0,a.default)(e,t),(0,r.default)(e)})((0,f.default)(Error));function v(t,e){return j.apply(this,arguments)}function j(){return(j=(0,e.default)((function*(t,e){var r=c.default.getState().token,n="object"==typeof t?t:e||{};n.headers=new Headers(n.headers),r&&n.headers.set("Authorization",`Bearer ${r}`);var o=yield fetch(t,n);return yield _(o),o}))).apply(this,arguments)}function _(t){return O.apply(this,arguments)}function O(){return(O=(0,e.default)((function*(t){if(!t.ok){var e=null;try{var r;e=(null==(r=t.headers.get("Content-Type"))?void 0:r.includes("application/json"))?yield t.json():yield t.text()}catch(t){}throw 401===t.status&&(0,c.logout)(),new h(t,e)}}))).apply(this,arguments)}_e.default=y}),699,[34,6,10,14,15,17,18,20,700,701,651]); __d((function(g,r,i,a,m,e,d){Object.defineProperty(e,"__esModule",{value:!0}),e.WS_BASEURL=e.BASEURL=e.APP_NAME=e.API_BASEURL=void 0;var o=e.BASEURL=location.protocol+"//"+location.host;e.API_BASEURL=o+"/api",e.WS_BASEURL=o.replace("https://","wss://").replace("http://","ws://"),e.APP_NAME="Home Lab"}),700,[]); diff --git a/backend/public/index.html b/backend/public/index.html index efd7e1c..45661e2 100644 --- a/backend/public/index.html +++ b/backend/public/index.html @@ -51,7 +51,7 @@
- + \ No newline at end of file diff --git a/backend/public/sw.js b/backend/public/sw.js index 6968b5d..f561295 100644 --- a/backend/public/sw.js +++ b/backend/public/sw.js @@ -1,2 +1,2 @@ -if(!self.define){let e,c={};const s=(s,i)=>(s=new URL(s+".js",i).href,c[s]||new Promise((c=>{if("document"in self){const e=document.createElement("script");e.src=s,e.onload=c,document.head.appendChild(e)}else e=s,importScripts(s),c()})).then((()=>{let e=c[s];if(!e)throw new Error(`Module ${s} didn’t register its module`);return e})));self.define=(i,f)=>{const a=e||("document"in self?document.currentScript.src:"")||location.href;if(c[a])return;let r={};const n=e=>s(e,a),o={module:{uri:a},exports:r,require:n};c[a]=Promise.all(i.map((e=>o[e]||n(e)))).then((e=>(f(...e),r)))}}define(["./workbox-9a84fccb"],(function(e){"use strict";self.addEventListener("message",(e=>{e.data&&"SKIP_WAITING"===e.data.type&&self.skipWaiting()})),e.precacheAndRoute([{url:"_expo/static/css/styles-ac02afca7a4f6b47cd4822455e9ef1e2.css",revision:"ac02afca7a4f6b47cd4822455e9ef1e2"},{url:"_expo/static/css/xterm-85f8ec7ddb3d8117e8ea88fe44ec1bcc.css",revision:"85f8ec7ddb3d8117e8ea88fe44ec1bcc"},{url:"_expo/static/js/web/entry-fc23290c11efc46275b69afc178fc68b.js",revision:"14b33661ff8c9c30ac971b297a5dc600"},{url:"apple-touch-icon.png",revision:"8668f7cf9e58f759e672dd81eabf1e89"},{url:"assets/src/assets/images/audioplayer-bg.d856ca6914e55cd1d83b5259af0ae439.jpeg",revision:"d856ca6914e55cd1d83b5259af0ae439"},{url:"favicon.ico",revision:"7e3f9db4b2961963925d10e6aef9ba47"},{url:"icon-192-maskable.png",revision:"c61df7f670bef41d26d7babc4daa1344"},{url:"icon-192.png",revision:"5be5ff0ac45d2c93fc15e03c21b87ce5"},{url:"icon-512-maskable.png",revision:"bb3e702963630ffbd21819b61e55f8ef"},{url:"icon-512.png",revision:"9cb5b08e4b6d09fc354f9d9566cc2b7d"},{url:"index.html",revision:"cd330bf3cb5c27e61534a6fd68539eec"},{url:"manifest.json",revision:"e5357a35e5205b044b5465f14af5a61b"},{url:"metadata.json",revision:"37cb2e8fcdd3b2523b9bd2f4b09087db"}],{ignoreURLParametersMatching:[/^utm_/,/^fbclid$/]})})); +if(!self.define){let e,c={};const s=(s,i)=>(s=new URL(s+".js",i).href,c[s]||new Promise((c=>{if("document"in self){const e=document.createElement("script");e.src=s,e.onload=c,document.head.appendChild(e)}else e=s,importScripts(s),c()})).then((()=>{let e=c[s];if(!e)throw new Error(`Module ${s} didn’t register its module`);return e})));self.define=(i,a)=>{const d=e||("document"in self?document.currentScript.src:"")||location.href;if(c[d])return;let f={};const r=e=>s(e,d),n={module:{uri:d},exports:f,require:r};c[d]=Promise.all(i.map((e=>n[e]||r(e)))).then((e=>(a(...e),f)))}}define(["./workbox-9a84fccb"],(function(e){"use strict";self.addEventListener("message",(e=>{e.data&&"SKIP_WAITING"===e.data.type&&self.skipWaiting()})),e.precacheAndRoute([{url:"_expo/static/css/styles-ac02afca7a4f6b47cd4822455e9ef1e2.css",revision:"ac02afca7a4f6b47cd4822455e9ef1e2"},{url:"_expo/static/css/xterm-85f8ec7ddb3d8117e8ea88fe44ec1bcc.css",revision:"85f8ec7ddb3d8117e8ea88fe44ec1bcc"},{url:"_expo/static/js/web/entry-ebdfb52a053bc6bb6819abb98d4a3d46.js",revision:"ccf0204bb962e82ae15dc44cd5e012da"},{url:"apple-touch-icon.png",revision:"8668f7cf9e58f759e672dd81eabf1e89"},{url:"assets/src/assets/images/audioplayer-bg.d856ca6914e55cd1d83b5259af0ae439.jpeg",revision:"d856ca6914e55cd1d83b5259af0ae439"},{url:"favicon.ico",revision:"7e3f9db4b2961963925d10e6aef9ba47"},{url:"icon-192-maskable.png",revision:"c61df7f670bef41d26d7babc4daa1344"},{url:"icon-192.png",revision:"5be5ff0ac45d2c93fc15e03c21b87ce5"},{url:"icon-512-maskable.png",revision:"bb3e702963630ffbd21819b61e55f8ef"},{url:"icon-512.png",revision:"9cb5b08e4b6d09fc354f9d9566cc2b7d"},{url:"index.html",revision:"d6a30d5a8df89cef782af20ad1b3ea37"},{url:"manifest.json",revision:"e5357a35e5205b044b5465f14af5a61b"},{url:"metadata.json",revision:"37cb2e8fcdd3b2523b9bd2f4b09087db"}],{ignoreURLParametersMatching:[/^utm_/,/^fbclid$/]})})); //# sourceMappingURL=sw.js.map diff --git a/backend/public/sw.js.map b/backend/public/sw.js.map index 7dbc9c1..ef837b8 100644 --- a/backend/public/sw.js.map +++ b/backend/public/sw.js.map @@ -1 +1 @@ -{"version":3,"file":"sw.js","sources":["../../../../../tmp/1bbc9156508141f556693dea59d63916/sw.js"],"sourcesContent":["import {precacheAndRoute as workbox_precaching_precacheAndRoute} from '/home/khai/projects/khai/home-monitoring/node_modules/workbox-precaching/precacheAndRoute.mjs';/**\n * Welcome to your Workbox-powered service worker!\n *\n * You'll need to register this file in your web app.\n * See https://goo.gl/nhQhGp\n *\n * The rest of the code is auto-generated. Please don't update this file\n * directly; instead, make changes to your Workbox build configuration\n * and re-run your build process.\n * See https://goo.gl/2aRDsh\n */\n\n\n\n\n\n\n\n\nself.addEventListener('message', (event) => {\n if (event.data && event.data.type === 'SKIP_WAITING') {\n self.skipWaiting();\n }\n});\n\n\n\n\n/**\n * The precacheAndRoute() method efficiently caches and responds to\n * requests for URLs in the manifest.\n * See https://goo.gl/S9QRab\n */\nworkbox_precaching_precacheAndRoute([\n {\n \"url\": \"_expo/static/css/styles-ac02afca7a4f6b47cd4822455e9ef1e2.css\",\n \"revision\": \"ac02afca7a4f6b47cd4822455e9ef1e2\"\n },\n {\n \"url\": \"_expo/static/css/xterm-85f8ec7ddb3d8117e8ea88fe44ec1bcc.css\",\n \"revision\": \"85f8ec7ddb3d8117e8ea88fe44ec1bcc\"\n },\n {\n \"url\": \"_expo/static/js/web/entry-fc23290c11efc46275b69afc178fc68b.js\",\n \"revision\": \"14b33661ff8c9c30ac971b297a5dc600\"\n },\n {\n \"url\": \"apple-touch-icon.png\",\n \"revision\": \"8668f7cf9e58f759e672dd81eabf1e89\"\n },\n {\n \"url\": \"assets/src/assets/images/audioplayer-bg.d856ca6914e55cd1d83b5259af0ae439.jpeg\",\n \"revision\": \"d856ca6914e55cd1d83b5259af0ae439\"\n },\n {\n \"url\": \"favicon.ico\",\n \"revision\": \"7e3f9db4b2961963925d10e6aef9ba47\"\n },\n {\n \"url\": \"icon-192-maskable.png\",\n \"revision\": \"c61df7f670bef41d26d7babc4daa1344\"\n },\n {\n \"url\": \"icon-192.png\",\n \"revision\": \"5be5ff0ac45d2c93fc15e03c21b87ce5\"\n },\n {\n \"url\": \"icon-512-maskable.png\",\n \"revision\": \"bb3e702963630ffbd21819b61e55f8ef\"\n },\n {\n \"url\": \"icon-512.png\",\n \"revision\": \"9cb5b08e4b6d09fc354f9d9566cc2b7d\"\n },\n {\n \"url\": \"index.html\",\n \"revision\": \"cd330bf3cb5c27e61534a6fd68539eec\"\n },\n {\n \"url\": \"manifest.json\",\n \"revision\": \"e5357a35e5205b044b5465f14af5a61b\"\n },\n {\n \"url\": \"metadata.json\",\n \"revision\": \"37cb2e8fcdd3b2523b9bd2f4b09087db\"\n }\n], {\n \"ignoreURLParametersMatching\": [/^utm_/, /^fbclid$/]\n});\n\n\n\n\n\n\n\n\n"],"names":["self","addEventListener","event","data","type","skipWaiting","workbox_precaching_precacheAndRoute","url","revision","ignoreURLParametersMatching"],"mappings":"0nBAmBAA,KAAKC,iBAAiB,WAAYC,IAC5BA,EAAMC,MAA4B,iBAApBD,EAAMC,KAAKC,MAC3BJ,KAAKK,aACP,IAWFC,EAAAA,iBAAoC,CAClC,CACEC,IAAO,+DACPC,SAAY,oCAEd,CACED,IAAO,8DACPC,SAAY,oCAEd,CACED,IAAO,gEACPC,SAAY,oCAEd,CACED,IAAO,uBACPC,SAAY,oCAEd,CACED,IAAO,gFACPC,SAAY,oCAEd,CACED,IAAO,cACPC,SAAY,oCAEd,CACED,IAAO,wBACPC,SAAY,oCAEd,CACED,IAAO,eACPC,SAAY,oCAEd,CACED,IAAO,wBACPC,SAAY,oCAEd,CACED,IAAO,eACPC,SAAY,oCAEd,CACED,IAAO,aACPC,SAAY,oCAEd,CACED,IAAO,gBACPC,SAAY,oCAEd,CACED,IAAO,gBACPC,SAAY,qCAEb,CACDC,4BAA+B,CAAC,QAAS"} \ No newline at end of file +{"version":3,"file":"sw.js","sources":["../../../../../tmp/4505ca1e33cd7fa6ef4ea48c34cae2cb/sw.js"],"sourcesContent":["import {precacheAndRoute as workbox_precaching_precacheAndRoute} from '/home/khai/projects/khai/home-monitoring/node_modules/workbox-precaching/precacheAndRoute.mjs';/**\n * Welcome to your Workbox-powered service worker!\n *\n * You'll need to register this file in your web app.\n * See https://goo.gl/nhQhGp\n *\n * The rest of the code is auto-generated. Please don't update this file\n * directly; instead, make changes to your Workbox build configuration\n * and re-run your build process.\n * See https://goo.gl/2aRDsh\n */\n\n\n\n\n\n\n\n\nself.addEventListener('message', (event) => {\n if (event.data && event.data.type === 'SKIP_WAITING') {\n self.skipWaiting();\n }\n});\n\n\n\n\n/**\n * The precacheAndRoute() method efficiently caches and responds to\n * requests for URLs in the manifest.\n * See https://goo.gl/S9QRab\n */\nworkbox_precaching_precacheAndRoute([\n {\n \"url\": \"_expo/static/css/styles-ac02afca7a4f6b47cd4822455e9ef1e2.css\",\n \"revision\": \"ac02afca7a4f6b47cd4822455e9ef1e2\"\n },\n {\n \"url\": \"_expo/static/css/xterm-85f8ec7ddb3d8117e8ea88fe44ec1bcc.css\",\n \"revision\": \"85f8ec7ddb3d8117e8ea88fe44ec1bcc\"\n },\n {\n \"url\": \"_expo/static/js/web/entry-ebdfb52a053bc6bb6819abb98d4a3d46.js\",\n \"revision\": \"ccf0204bb962e82ae15dc44cd5e012da\"\n },\n {\n \"url\": \"apple-touch-icon.png\",\n \"revision\": \"8668f7cf9e58f759e672dd81eabf1e89\"\n },\n {\n \"url\": \"assets/src/assets/images/audioplayer-bg.d856ca6914e55cd1d83b5259af0ae439.jpeg\",\n \"revision\": \"d856ca6914e55cd1d83b5259af0ae439\"\n },\n {\n \"url\": \"favicon.ico\",\n \"revision\": \"7e3f9db4b2961963925d10e6aef9ba47\"\n },\n {\n \"url\": \"icon-192-maskable.png\",\n \"revision\": \"c61df7f670bef41d26d7babc4daa1344\"\n },\n {\n \"url\": \"icon-192.png\",\n \"revision\": \"5be5ff0ac45d2c93fc15e03c21b87ce5\"\n },\n {\n \"url\": \"icon-512-maskable.png\",\n \"revision\": \"bb3e702963630ffbd21819b61e55f8ef\"\n },\n {\n \"url\": \"icon-512.png\",\n \"revision\": \"9cb5b08e4b6d09fc354f9d9566cc2b7d\"\n },\n {\n \"url\": \"index.html\",\n \"revision\": \"d6a30d5a8df89cef782af20ad1b3ea37\"\n },\n {\n \"url\": \"manifest.json\",\n \"revision\": \"e5357a35e5205b044b5465f14af5a61b\"\n },\n {\n \"url\": \"metadata.json\",\n \"revision\": \"37cb2e8fcdd3b2523b9bd2f4b09087db\"\n }\n], {\n \"ignoreURLParametersMatching\": [/^utm_/, /^fbclid$/]\n});\n\n\n\n\n\n\n\n\n"],"names":["self","addEventListener","event","data","type","skipWaiting","workbox_precaching_precacheAndRoute","url","revision","ignoreURLParametersMatching"],"mappings":"0nBAmBAA,KAAKC,iBAAiB,WAAYC,IAC5BA,EAAMC,MAA4B,iBAApBD,EAAMC,KAAKC,MAC3BJ,KAAKK,aACP,IAWFC,EAAAA,iBAAoC,CAClC,CACEC,IAAO,+DACPC,SAAY,oCAEd,CACED,IAAO,8DACPC,SAAY,oCAEd,CACED,IAAO,gEACPC,SAAY,oCAEd,CACED,IAAO,uBACPC,SAAY,oCAEd,CACED,IAAO,gFACPC,SAAY,oCAEd,CACED,IAAO,cACPC,SAAY,oCAEd,CACED,IAAO,wBACPC,SAAY,oCAEd,CACED,IAAO,eACPC,SAAY,oCAEd,CACED,IAAO,wBACPC,SAAY,oCAEd,CACED,IAAO,eACPC,SAAY,oCAEd,CACED,IAAO,aACPC,SAAY,oCAEd,CACED,IAAO,gBACPC,SAAY,oCAEd,CACED,IAAO,gBACPC,SAAY,qCAEb,CACDC,4BAA+B,CAAC,QAAS"} \ No newline at end of file diff --git a/src/components/containers/AudioPlayerProvider.tsx b/src/components/containers/AudioPlayerProvider.tsx index d187495..6f272ee 100644 --- a/src/components/containers/AudioPlayerProvider.tsx +++ b/src/components/containers/AudioPlayerProvider.tsx @@ -31,6 +31,12 @@ const AudioPlayerProvider = () => { sound.setIsLoopingAsync(repeat); sound.setOnPlaybackStatusUpdate((st: AVPlaybackStatusSuccess) => { const curDate = new Date(); + + if (st.didJustFinish) { + lastStatusRef.current = curDate; + return audioPlayer.next(); + } + const diff = curDate.getTime() - lastStatusRef.current.getTime(); if (diff < 1000) { return; @@ -38,10 +44,6 @@ const AudioPlayerProvider = () => { lastStatusRef.current = curDate; audioPlayerStore.setState({ status: st as any }); - - if (st.didJustFinish) { - audioPlayer.next(); - } }); await sound.playAsync();