agenda-paper
Version:
Show your daily agenda on an ePaper display
2 lines • 12.2 kB
JavaScript
(this["webpackJsonpagenda-paper"]=this["webpackJsonpagenda-paper"]||[]).push([[0],{78:function(e,t,n){},94:function(e,t,n){"use strict";n.r(t);var r=n(0),a=n.n(r),c=n(56),s=n.n(c),i=(n(78),n(66)),o=n(15),u=n(65),j=n(118),h=n(117),b=n(119),l=n(10),f=n.n(l),p=n(9),d=n(16),O=n(19),v=n(86),x=n(121),g=n(120),w=n(59),m=n(1),k=["children","fullHeight"],y=function(e){var t,n=e.children,r=e.fullHeight,a=Object(w.a)(e,k);return r&&(t="100vh"),Object(m.jsx)(b.a,Object(p.a)(Object(p.a)({display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",textAlign:"center",minHeight:t},a),{},{children:n}))},E=function(){return Object(m.jsx)(y,{fullHeight:!0,lineHeight:2,children:Object(m.jsxs)(b.a,{maxWidth:600,children:[Object(m.jsx)(g.a,{variant:"h3",children:"To set this up, please go to"}),Object(m.jsx)(g.a,{variant:"h4",children:Object(m.jsx)("pre",{children:"http://localhost:3000/setup"})}),Object(m.jsx)(g.a,{variant:"h3",children:"using the browser on your Raspberry Pi's desktop"})]})})},L=n(35),S=n.n(L);function P(e){return S()(e).format("HH:mm")}var F=function(e){var t=e.calendarEvent,n=e.showLocation,r=e.isShownFirst,a=Object(v.a)(),c=Object(x.a)(a.breakpoints.up("sm"));return Object(m.jsxs)(b.a,{mb:4,children:[Object(m.jsx)(g.a,{component:"h2",variant:r&&c?"h2":"h3",fontWeight:700,lineHeight:1.4,noWrap:!0,children:t.title}),Object(m.jsxs)(g.a,{component:"h3",variant:r||!c?"h3":"h4",fontWeight:700,noWrap:!0,children:[P(t.start),"-",P(t.end)]}),n&&c&&Object(m.jsx)(b.a,{children:Object(m.jsx)(g.a,{variant:"h4",fontWeight:500,noWrap:!0,children:t.location})})]})},I=function(e){var t=Object.assign({},e),n=S()().date();return Object(m.jsxs)(b.a,Object(p.a)(Object(p.a)({position:"relative"},t),{},{children:[Object(m.jsx)("img",{src:"empty_calendar.png",alt:"empty calendar",style:{maxWidth:"100%",maxHeight:"100%"}}),Object(m.jsx)(b.a,{position:"absolute",top:"60%",left:"50%",textAlign:"center",style:{transform:"translate(-50%, -50%)"},children:Object(m.jsx)(g.a,{variant:"h3",fontWeight:500,children:n})})]}))},W=function(e,t){var n=Object(r.useRef)(e);Object(r.useLayoutEffect)((function(){n.current=e}),[e]),Object(r.useEffect)((function(){if(null!==t){var e=setInterval((function(){n.current()}),t);return function(){return clearInterval(e)}}}),[t])},H=function(e){return new Promise((function(t){return setTimeout(t,e)}))};function C(e){return T.apply(this,arguments)}function T(){return T=Object(O.a)(f.a.mark((function e(t){var n,r=arguments;return f.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return n=r.length>1&&void 0!==r[1]?r[1]:0,e.prev=1,e.next=4,t();case 4:return e.abrupt("return",e.sent);case 7:if(e.prev=7,e.t0=e.catch(1),!(n>5)){e.next=11;break}throw e.t0;case 11:return e.next=13,H(100*Math.pow(2,n));case 13:return e.abrupt("return",C(t,n+1));case 14:case"end":return e.stop()}}),e,null,[[1,7]])}))),T.apply(this,arguments)}var J=9e5;function N(){return D.apply(this,arguments)}function D(){return(D=Object(O.a)(f.a.mark((function e(){var t,n,r;return f.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,fetch("/api/auth/login-status");case 2:if(!(t=e.sent).ok){e.next=9;break}return e.next=6,t.json();case 6:return n=e.sent,r=n.isLoggedIn,e.abrupt("return",r);case 9:return e.abrupt("return",!1);case 10:case"end":return e.stop()}}),e)})))).apply(this,arguments)}function M(){return A.apply(this,arguments)}function A(){return(A=Object(O.a)(f.a.mark((function e(){var t,n;return f.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,fetch("/api/settings");case 2:if(!(t=e.sent).ok){e.next=8;break}return e.next=6,t.json();case 6:return n=e.sent,e.abrupt("return",n);case 8:return e.abrupt("return");case 9:case"end":return e.stop()}}),e)})))).apply(this,arguments)}function B(){return R.apply(this,arguments)}function R(){return(R=Object(O.a)(f.a.mark((function e(){var t,n;return f.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,fetch("/api/calendar/events");case 2:if(!(t=e.sent).ok){e.next=8;break}return e.next=6,t.json();case 6:return n=e.sent,e.abrupt("return",n);case 8:return e.abrupt("return",void 0);case 9:case"end":return e.stop()}}),e)})))).apply(this,arguments)}function G(e){var t=e.minute(),n=(t+15-t%15)%60,r=e.minute(n).second(0);return n<t&&r.add(1,"hour"),r}var _=function(){var e=Object(v.a)(),t=Object(x.a)(e.breakpoints.up("sm")),n=Object(r.useState)({isLoading:!0,isLoggedIn:!1,autoFetchInterval:1e3}),a=Object(d.a)(n,2),c=a[0],s=a[1],i=c.isLoading,o=c.isLoggedIn,u=c.autoFetchInterval,j=c.settings,h=c.calendarEvents,l=c.epaperSocket;return Object(r.useEffect)((function(){var e=function(){var e=Object(O.a)(f.a.mark((function e(){var t,n,r,a;return f.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,C(M);case 2:return t=e.sent,e.next=5,N();case 5:n=e.sent,s((function(e){return Object(p.a)(Object(p.a)({},e),{},{settings:t,isLoggedIn:n,isLoading:!1})})),(r=new WebSocket("ws://localhost:8081")).addEventListener("open",(function(){r.send("render")})),s((function(e){return Object(p.a)(Object(p.a)({},e),{},{epaperSocket:r})})),(a=new WebSocket("ws://localhost:3000/ws")).onopen=function(e){a.send("listen")},a.onmessage=function(){var e=Object(O.a)(f.a.mark((function e(t){var n,r;return f.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if("loggedIn"!==t.data){e.next=5;break}return e.next=3,N();case 3:n=e.sent,s((function(e){return Object(p.a)(Object(p.a)({},e),{},{isLoggedIn:n})}));case 5:if("settingsChanged"!==t.data){e.next=10;break}return e.next=8,M();case 8:r=e.sent,s((function(e){return Object(p.a)(Object(p.a)({},e),{},{settings:r})}));case 10:case"end":return e.stop()}}),e)})));return function(t){return e.apply(this,arguments)}}();case 13:case"end":return e.stop()}}),e)})));return function(){return e.apply(this,arguments)}}();i&&e()}),[i]),W(Object(O.a)(f.a.mark((function e(){var t,n,r;return f.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(!o){e.next=13;break}return t=S()(),1e3===u||t.minute()%15!==0?(n=G(t),s((function(e){return Object(p.a)(Object(p.a)({},e),{},{autoFetchInterval:n.diff(t)})}))):u!==J&&s((function(e){return Object(p.a)(Object(p.a)({},e),{},{autoFetchInterval:J})})),e.prev=3,e.next=6,C(B);case 6:r=e.sent,(!h||r&&(a=h.slice(0,3),c=r.slice(0,3),JSON.stringify(a)!==JSON.stringify(c)))&&s((function(e){return Object(p.a)(Object(p.a)({},e),{},{calendarEvents:r})})),e.next=13;break;case 10:e.prev=10,e.t0=e.catch(3),console.error(e.t0);case 13:case"end":return e.stop()}var a,c}),e,null,[[3,10]])}))),u),Object(r.useEffect)((function(){h&&l&&l.readyState===WebSocket.OPEN&&l.send("render")}),[h,l]),i?null:o?h?h.length?Object(m.jsxs)(b.a,{p:4,children:[Object(m.jsx)(b.a,{mb:4,children:Object(m.jsx)(F,{calendarEvent:h[0],showLocation:null===j||void 0===j?void 0:j.showLocation,isShownFirst:!0})}),Object(m.jsxs)(b.a,{display:"flex",children:[t&&Object(m.jsx)(b.a,{width:110,flexShrink:0,mr:6,children:Object(m.jsx)(I,{})}),Object(m.jsxs)(b.a,{flex:6,overflow:"hidden",children:[h[1]&&Object(m.jsx)(F,{calendarEvent:h[1],showLocation:null===j||void 0===j?void 0:j.showLocation}),h[2]&&!(null===j||void 0===j?void 0:j.showLocation)&&t&&Object(m.jsx)(b.a,{children:Object(m.jsx)(F,{calendarEvent:h[2]})})]})]})]}):Object(m.jsxs)(y,{children:[Object(m.jsx)(b.a,{mb:6,children:Object(m.jsx)(g.a,{variant:"h1",children:"No upcoming events"})}),Object(m.jsx)(b.a,{children:Object(m.jsx)(I,{height:100})})]}):null:Object(m.jsx)(E,{})},q=n(122),z=function(){var e=function(){var e=Object(O.a)(f.a.mark((function e(){return f.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:window.location.href="/api/auth/login";case 1:case"end":return e.stop()}}),e)})));return function(){return e.apply(this,arguments)}}();return Object(m.jsx)(y,{fullHeight:!0,children:Object(m.jsx)(b.a,{width:300,children:Object(m.jsx)(q.a,{variant:"contained",color:"primary",onClick:e,children:"Login with Google"})})})},K=n(4),Q=n(123),U=n(124),V=n(125),X=n(116),Y=n(115);function Z(){return $.apply(this,arguments)}function $(){return($=Object(O.a)(f.a.mark((function e(){var t,n;return f.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,fetch("/api/settings");case 2:if(!(t=e.sent).ok){e.next=8;break}return e.next=6,t.json();case 6:return n=e.sent,e.abrupt("return",n);case 8:return e.abrupt("return");case 9:case"end":return e.stop()}}),e)})))).apply(this,arguments)}function ee(e){return te.apply(this,arguments)}function te(){return(te=Object(O.a)(f.a.mark((function e(t){var n,r,a,c;return f.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return n=t,r={method:"POST",body:JSON.stringify(n),headers:{"Content-Type":"application/json"}},e.next=4,fetch("/api/settings",r);case 4:if(!(a=e.sent).ok){e.next=10;break}return e.next=8,a.json();case 8:return c=e.sent,e.abrupt("return",c);case 10:return e.abrupt("return",{success:!1,error:"could not update settings"});case 11:case"end":return e.stop()}}),e)})))).apply(this,arguments)}var ne=function(){var e=Object(r.useState)({isLoading:!0,isProcessing:!1,showLocation:!1,showFreeEvents:!1,maskPrivateEvents:!1}),t=Object(d.a)(e,2),n=t[0],a=t[1];Object(r.useEffect)((function(){var e=function(){var e=Object(O.a)(f.a.mark((function e(){var t;return f.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,Z();case 2:t=e.sent,a(t?function(e){return Object(p.a)(Object(p.a)(Object(p.a)({},e),t),{},{isLoading:!1})}:function(e){return Object(p.a)(Object(p.a)({},e),{},{error:"could not load settings"})});case 4:case"end":return e.stop()}}),e)})));return function(){return e.apply(this,arguments)}}();e()}),[]),Object(r.useEffect)((function(){var e=function(){var e=Object(O.a)(f.a.mark((function e(){var t,r,c,s;return f.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return t=n.showLocation,r=n.showFreeEvents,c=n.maskPrivateEvents,e.next=3,ee({showLocation:t,showFreeEvents:r,maskPrivateEvents:c});case 3:(s=e.sent).success?a((function(e){return Object(p.a)(Object(p.a)({},e),{},{isProcessing:!1})})):a((function(e){return Object(p.a)(Object(p.a)({},e),{},{error:s.error,isProcessing:!1})}));case 5:case"end":return e.stop()}}),e)})));return function(){return e.apply(this,arguments)}}();n.isProcessing&&e()}),[n]);var c=function(){var e=Object(O.a)(f.a.mark((function e(t){var r;return f.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:a(Object(p.a)(Object(p.a)({},n),{},(r={},Object(K.a)(r,t.target.name,t.target.checked),Object(K.a)(r,"isProcessing",!0),Object(K.a)(r,"error",void 0),r)));case 1:case"end":return e.stop()}}),e)})));return function(t){return e.apply(this,arguments)}}(),s=n.isLoading,i=n.isProcessing,o=n.showLocation,u=n.showFreeEvents,j=n.maskPrivateEvents,h=n.error;return s?Object(m.jsx)(b.a,{p:4,children:Object(m.jsx)(y,{children:Object(m.jsx)(Q.a,{})})}):Object(m.jsxs)(y,{children:[Object(m.jsx)(g.a,{variant:"h1",children:"Settings"}),Object(m.jsxs)(b.a,{display:"flex",flexDirection:"column",children:[Object(m.jsx)(U.a,{children:Object(m.jsx)(V.a,{control:Object(m.jsx)(X.a,{name:"showLocation",checked:o,disabled:i,onChange:c}),label:"Show Event Location"})}),Object(m.jsx)(U.a,{children:Object(m.jsx)(V.a,{control:Object(m.jsx)(X.a,{name:"showFreeEvents",checked:u,disabled:i,onChange:c}),label:"Show Free Events"})}),Object(m.jsx)(U.a,{children:Object(m.jsx)(V.a,{control:Object(m.jsx)(X.a,{name:"maskPrivateEvents",checked:j,disabled:i,onChange:c}),label:"Mask Private Events"})}),h&&Object(m.jsx)(Y.a,{severity:"error",children:h})]})]})},re=Object(u.a)();re=Object(j.a)(re);var ae=function(){return Object(m.jsx)(h.a,{theme:re,children:Object(m.jsx)(b.a,{minHeight:"100vh",children:Object(m.jsxs)(i.a,{children:[Object(m.jsx)(o.a,{path:"/",exact:!0,component:_}),Object(m.jsx)(o.a,{path:"/setup",component:z}),Object(m.jsx)(o.a,{path:"/settings",component:ne})]})})})},ce=function(e){e&&e instanceof Function&&import("web-vitals").then((function(t){var n=t.getCLS,r=t.getFID,a=t.getFCP,c=t.getLCP,s=t.getTTFB;n(e),r(e),a(e),c(e),s(e)}))};n(92),n(93);s.a.render(Object(m.jsx)(a.a.StrictMode,{children:Object(m.jsx)(ae,{})}),document.getElementById("root")),ce()}},[[94,1,2]]]);
//# sourceMappingURL=main.39ff811c.chunk.js.map