Minimální Matrix chatovací klient Matrix, zaměřený na výkon, offline funkčnost a širokou podporu prohlížeče. Na tom se stále pracuje a ještě není připraveno na hlavní vysílací čas. Hlášení o chybách jsou vítána, ale nezadávejte prosím žádné požadavky na funkce ani jiné chybějící věci, abyste byli na stejné úrovni jako Element Web.
3 lines
11 KiB
JavaScript
3 lines
11 KiB
JavaScript
const k="icon.png",H=["config.json","assets/theme-element.json","index.html"],N=["assets/icon-maskable.965d12c4.png","assets/download-sandbox.48a866e9.html","assets/olm.cf9a793b.js","assets/olm.3fc8dbfe.wasm","assets/verification-error-3007923930.91f5da98.svg","assets/verified-3138359829.814d0123.svg","assets/encryption-status-2100926911.a90232b4.svg","assets/chevron-down-1956489915.3389f17f.svg","assets/room-members-871477030.90b799fe.svg","assets/mic-muted-2638557456.4d8c99b4.svg","assets/cam-muted-3489740486.a882d986.svg","assets/hangup-581771896.279a6adf.svg","assets/cam-unmuted-2274150835.69bcdbc4.svg","assets/mic-muted-3642419863.228ee86f.svg","assets/mic-unmuted-211198830.1fde69c5.svg","assets/clear-2743697487.2f1a17f1.svg","assets/element-logo-1551909733.1d59f06a.svg","assets/enable-grid-2288309723.f83895c8.svg","assets/settings-878939771.57cf3680.svg","assets/plus-3937109722.5c243914.svg","assets/disable-grid-4240599831.c8dc25a1.svg","assets/search-261439583.1bffaca1.svg","assets/chevron-left-2611498805.b5555a61.svg","assets/clear-4137897294.7b90e8df.svg","assets/dismiss-2476348673.d0f98560.svg","assets/chevron-right-2390431650.ec9bf561.svg","assets/send-3413346515.b0fb8626.svg","assets/vertical-ellipsis-487061581.e7709afd.svg","assets/paperclip-3961996319.da562307.svg","assets/chevron-small-4098047679.489e66cc.svg","assets/room-members-3084360280.6f64aaef.svg","assets/encryption-status-3449529405.c200a9bb.svg","assets/e2ee-normal-1448349558.af8f5484.svg","assets/e2ee-disabled-1470792300.6863c16d.svg","assets/chevron-thin-left-3078630092.d0d143e3.svg","assets/video-call-2591082837.8f09bafc.svg","assets/room-members-2999414798.6534e8ec.svg","assets/e2ee-normal-3923817510.8737e7ee.svg","assets/e2ee-normal-3127337641.2624a9c9.svg","assets/cam-muted-711199923.069dcf2b.svg","assets/verified-1676512664.5538d685.svg","assets/encryption-status-689620003.8086e625.svg","assets/chevron-down-3300400168.d1a083a1.svg","assets/room-members-3297708388.1a158fe2.svg","assets/mic-muted-2617055184.e8d1962f.svg","assets/cam-muted-2247331037.b0b2cf01.svg","assets/hangup-1798659826.d0cb8438.svg","assets/mic-muted-4213153786.513608a5.svg","assets/clear-2203718389.37dd36a5.svg","assets/cam-muted-1894081672.22150c2b.svg","assets/mic-unmuted-3178778883.b8f57412.svg","assets/element-logo-703176763.fc54fc8d.svg","assets/settings-2175246113.00804666.svg","assets/enable-grid-2071838379.ab4f40c5.svg","assets/cam-unmuted-2215154474.a82b7bf1.svg","assets/clear-426756705.361f7a30.svg","assets/plus-4190356069.084c5e3d.svg","assets/search-3263540198.1511780c.svg","assets/disable-grid-3304422220.8a79cfcb.svg","assets/chevron-left-3506338632.4e437777.svg","assets/chevron-right-847198822.23380c56.svg","assets/vertical-ellipsis-3416547705.f619a721.svg","assets/send-1171052351.caa5c494.svg","assets/paperclip-2441131778.1f5e29f3.svg","assets/chevron-small-781914114.936b4943.svg","assets/room-members-3847743605.9fcf4567.svg","assets/chevron-thin-left-3831175135.13f60c05.svg","assets/video-call-3307702325.5e74dd9a.svg","assets/room-members-1680968332.b4f57622.svg","assets/encryption-status-475927392.2fedc0bd.svg","assets/e2ee-normal-3652557173.2a97dccf.svg","assets/e2ee-normal-2713987956.215b3ddf.svg","assets/index.e65aa065.js","assets/theme-element-light.78427b5a.css","assets/theme-element-dark.a6fddb2f.css","assets/theme-element-runtime.054f90d4.css","assets/verification-error.80ad562b.svg","assets/verified.b90752ec.svg","assets/encryption-status.8054183e.svg","assets/chevron-down.9a7440b9.svg","assets/room-members.35ed0bf9.svg","assets/mic-muted.56aa03b9.svg","assets/cam-muted.9f690631.svg","assets/hangup.8b163c30.svg","assets/mic-unmuted.c180f63a.svg","assets/cam-unmuted.67e18332.svg","assets/clear.0d180c33.svg","assets/element-logo.86bc8565.svg","assets/enable-grid.eef43c65.svg","assets/settings.45b8e09f.svg","assets/plus.49560f96.svg","assets/disable-grid.371ceaaa.svg","assets/search.21e0fd39.svg","assets/chevron-left.b8b2c5fc.svg","assets/chevron-right.885731d1.svg","assets/vertical-ellipsis.70ab5d25.svg","assets/send.7a090949.svg","assets/paperclip.ec29fd9d.svg","assets/chevron-small.dfd7e618.svg","assets/e2ee-normal.bef76bd4.svg","assets/e2ee-disabled.8507165d.svg","assets/chevron-thin-left.d111869b.svg","assets/video-call.d3cb081e.svg","assets/icon.8024c299.png"],b=["assets/main.bdb9a925.js","assets/olm_legacy.bc22f405.js","assets/Inter-Thin.5d8e2ac4.woff2","assets/Inter-ThinItalic.6b3ded18.woff2","assets/Inter-ExtraLight.da47c335.woff2","assets/Inter-Light.0f7dfe72.woff2","assets/Inter-LightItalic.125c7e6a.woff2","assets/Inter-ExtraLightItalic.b3f94cfe.woff2","assets/Inter-MediumItalic.76551c20.woff2","assets/Inter-Regular.89d406b0.woff2","assets/Inter-Italic.bab4e808.woff2","assets/Inter-SemiBoldItalic.d376ade4.woff2","assets/Inter-Medium.5d308f3d.woff2","assets/Inter-BoldItalic.e09dcbe1.woff2","assets/Inter-SemiBold.c7c3befe.woff2","assets/Inter-ExtraBold.0ef4267e.woff2","assets/Inter-ExtraBoldItalic.d1e1f6a0.woff2","assets/Inter-Black.7f1f5616.woff2","assets/Inter-BlackItalic.72d5983b.woff2","assets/Inter-Bold.6f5e9a23.woff2","assets/Inter-Thin.5565b01e.woff","assets/Inter-ThinItalic.c413497b.woff","assets/Inter-ExtraLight.d7be68a4.woff","assets/Inter-Light.38326098.woff","assets/Inter-ExtraLightItalic.762fa4d2.woff","assets/Inter-MediumItalic.1458af9d.woff","assets/Inter-LightItalic.ec6c76a8.woff","assets/Inter-Regular.5b3a854b.woff","assets/Inter-Italic.7b187d57.woff","assets/Inter-Medium.0fc5d904.woff","assets/Inter-SemiBoldItalic.420db54a.woff","assets/Inter-BoldItalic.31a185fa.woff","assets/Inter-SemiBold.04cd699f.woff","assets/Inter-Black.067c82f7.woff","assets/Inter-ExtraBold.45bae435.woff","assets/Inter-ExtraBoldItalic.30a1af87.woff","assets/Inter-BlackItalic.c628a2cf.woff","assets/Inter-Bold.20d46cff.woff","assets/manifest.1f23c85b.json"],u=`hydrogen-assets-${"3895512102"}`,r="hydrogen-assets",A="hydrogen-media-thumbnails-v2";self.addEventListener("install",function(e){e.waitUntil((async()=>{await(await caches.open(u)).addAll(H);const a=await caches.open(r);await Promise.all(N.map(async n=>{await a.match(n)||await a.add(n)}))})())});self.addEventListener("activate",e=>{self.clients.claim(),e.waitUntil(I())});async function I(){const e=await caches.keys();for(const s of e)s!==u&&s!==r&&s!==A&&await caches.delete(s);const t=await caches.open(r),a=await t.keys(),n=N.concat(b).map(s=>new URL(s,self.registration.scope).href);for(const s of a)n.some(i=>i===s.url)||t.delete(s)}self.addEventListener("fetch",e=>{e.request.method==="GET"&&e.respondWith(D(e))});function C(e){if(e.pathname.startsWith("/_matrix/media/r0/thumbnail/")||e.pathname.startsWith("/_matrix/client/v1/media/thumbnail/")){const t=parseInt(e.searchParams.get("width"),10),a=parseInt(e.searchParams.get("height"),10);if(t<=50&&a<=50)return!0}return!1}const m=new URL(self.registration.scope);let w=new AbortController;async function D({request:e,clientId:t}){try{if(e.url.includes("config.json")||/theme-.+\.json/.test(e.url))return F(e);const a=new URL(e.url);if(a.origin===m.origin&&a.pathname===m.pathname&&(e=new Request(new URL("index.html",m.href))),a.pathname.indexOf("/_matrix/client/v1/media")===0){const i=await self.clients.get(t),{accessToken:o,homeserver:p}=await l(i,"getAuthInfo",{});if(!o)throw new Error("Token returned from getAuthInfo message in sw.js is null!");if(!p)throw new Error("homeserver returned from getAuthInfo message in sw.js is null!");if(new URL(p).origin===a.origin){const h=new Headers(e.headers);h.set("authorization",`Bearer ${o}`),e=new Request(e,{mode:"cors",credentials:"omit",headers:h})}}let s=await U(e);return s||(C(a)?s=await fetch(e,{signal:w.signal,mode:"cors",credentials:"omit"}):s=await fetch(e,{signal:w.signal}),await L(e,s)),s}catch(a){throw a.name!=="TypeError"&&a.name!=="AbortError"&&console.error("error in service worker",a),a}}async function F(e){let t=await U(e);const a=O(e);return t||await a}async function O(e){const t=await fetch(e,{signal:w.signal,headers:{"Cache-Control":"no-cache"}});return L(e,t.clone()),t}async function L(e,t){if(t.status>=400)return;const a=new URL(e.url),n=self.registration.scope;if(C(a))(await caches.open(A)).put(e,t.clone());else if(e.url.startsWith(n)){let s=e.url.substr(n.length),i;b.includes(s)?i=r:H.includes(s)&&(i=u),i&&await(await caches.open(i)).put(e,t.clone())}}async function U(e){let a=await(await caches.open(u)).match(e);if(a||(a=await(await caches.open(r)).match(e),a))return a;const s=new URL(e.url);if(C(s)){const i=await caches.open(A);a=await i.match(e),(a==null?void 0:a.status)>=400&&(await i.delete(e),a=null)}return a}self.addEventListener("message",e=>{var n;const t=s=>e.source.postMessage({replyTo:e.data.id,payload:s}),{replyTo:a}=e.data;if(a){const s=E.get(a);s&&(E.delete(a),s(e.data.payload))}else switch((n=e.data)==null?void 0:n.type){case"version":t({version:"0.5.1",buildHash:"3895512102"});break;case"skipWaiting":self.skipWaiting();break;case"haltRequests":e.waitUntil(v().finally(()=>t()));break;case"closeSession":e.waitUntil(M(e.data.payload.sessionId,e.source.id).finally(()=>t()));break}});const y="new_message";async function P(e){if(e.notification.tag!==y){console.log("clicked notif with tag",e.notification.tag);return}const{sessionId:t,roomId:a}=e.notification.data,s=`${`#/session/${t}`}/room/${a}`,i=await T(async o=>await l(o,"hasSessionOpen",{sessionId:t}));if(i){if(console.log("notificationclick: client has session open, showing room there"),i.postMessage({type:"openRoom",payload:{roomId:a}}),"focus"in i)try{await i.focus()}catch(o){console.error(o)}}else if(self.clients.openWindow){console.log("notificationclick: no client found with session open, opening new window");const o=new URL(`./${s}`,m).href;await self.clients.openWindow(o)}}self.addEventListener("notificationclick",e=>{e.notification.close(),e.waitUntil(P(e))});async function W(e){var n;console.log("got a push message",e);const t=e.session_id;let a=e.sender_display_name||e.sender;if(a&&e.event_id){const s=e.room_id;if(!!await T(async c=>{if(c.visibilityState==="visible"&&c.focused)return await l(c,"hasRoomOpen",{sessionId:t,roomId:s})})){console.log("client is focused, room is open, don't show notif");return}const o=Array.from(await self.registration.getNotifications({tag:y})),S=o.filter(c=>c.data.roomId===s).some(c=>c.data.multi),h=o.some(c=>!c.data.multi),f=e.room_name||e.room_alias;let R=!1,d,g;if(S){console.log("already have a multi message, don't do anything");return}else h?(console.log("showing multi message notification"),R=!0,d=f||a,g="New messages"):(console.log("showing new message notification"),f&&f!==a?d=`${a} in ${f}`:d=a,g=((n=e.content)==null?void 0:n.body)||"New message");await self.registration.showNotification(d,{body:g,data:{sessionId:t,roomId:s,multi:R},tag:y,badge:k})}}self.addEventListener("push",e=>{e.waitUntil(W(e.data.json()))});async function M(e,t){const a=await self.clients.matchAll();await Promise.all(a.map(async n=>{n.id!==t&&await l(n,"closeSession",{sessionId:e})}))}async function v(){const e=await self.clients.matchAll({type:"window"});await Promise.all(e.map(t=>l(t,"haltRequests"))),w.abort()}const E=new Map;let _=0;function l(e,t,a){_+=1;const n=_,s=new Promise(i=>{E.set(n,i)});return e.postMessage({type:t,id:n,payload:a}),s}async function T(e){const t=await self.clients.matchAll({type:"window"});for(const a of t)if(await e(a))return a}
|
|
//# sourceMappingURL=sw.js.map
|