A music player that connects to your cloud/distributed storage.
5
fork

Configure Feed

Select the types of activity you want to include in your feed.

Fixes issue with authentication via audio & service worker

+14 -5
+3
.gitignore
··· 4 4 *.cabal 5 5 *.log 6 6 *.yaml.lock 7 + *.tar.gz 8 + *.zip 7 9 /.deploy* 8 10 /.stack-work 9 11 /build 12 + /diffuse 10 13 /elm-stuff 11 14 /node_modules 12 15 /src/Library/Css/Classes.elm
+6 -4
src/Javascript/Workers/service.js
··· 39 39 const whatToCache = [ href, "brain.elm.js", "ui.elm.js" ].concat(filteredTree) 40 40 return caches.open(KEY).then(c => Promise.all(whatToCache.map(x => c.add(x)))) 41 41 }) 42 + .then(_ => self.skipWaiting()) 42 43 43 44 event.waitUntil(promise) 44 45 }) ··· 88 89 newRequestWithAuth( 89 90 event, 90 91 url.toString(), 91 - "Bearer " + token, 92 - "cors" 92 + "Bearer " + token 93 93 ) 94 94 95 95 } ··· 102 102 103 103 function newRequestWithAuth(event, urlWithoutToken, authToken, mode) { 104 104 const newHeaders = new Headers(event.request.headers) 105 - newHeaders.set("Authorization", authToken) 105 + newHeaders.set("authorization", authToken) 106 106 107 107 const newRequest = new Request(new Request(urlWithoutToken, event.request), { 108 108 headers: newHeaders, 109 - mode: mode || "cors" 109 + mode: mode || "cors", 110 + cache: "no-cache", 111 + credentials: "include" 110 112 }) 111 113 112 114 event.respondWith(fetch(newRequest))
+5 -1
src/Javascript/audio-engine.js
··· 229 229 if (is) fn.call(orchestrion, event) 230 230 } 231 231 232 + const crossorigin = queueItem.url.includes("service_worker_authentication") 233 + ? "use-credentials" 234 + : "anonymous" 235 + 232 236 audio = new Audio() 233 - audio.setAttribute("crossorigin", "anonymous") 237 + audio.setAttribute("crossorigin", crossorigin) 234 238 audio.setAttribute("data-preload", isPreload ? "t" : "f") 235 239 audio.setAttribute("data-timestamp", timestampInMilliseconds) 236 240 audio.setAttribute("preload", SINGLE_AUDIO_NODE ? "none" : "auto")