diff --git a/changes/changelog.d/1180.bugfix b/changes/changelog.d/1180.bugfix new file mode 100644 index 0000000000000000000000000000000000000000..262d1037efd9bac2251245c3b111d5db71013045 --- /dev/null +++ b/changes/changelog.d/1180.bugfix @@ -0,0 +1 @@ +Fix broken media support detection (#1180) \ No newline at end of file diff --git a/front/src/EmbedFrame.vue b/front/src/EmbedFrame.vue index 8dcccf3e5f96ef8293b5a1a38224d212dc4d78fb..67dc02303618afd72665918f31cd859cea0f5598 100644 --- a/front/src/EmbedFrame.vue +++ b/front/src/EmbedFrame.vue @@ -342,13 +342,19 @@ export default { }, getSources (uploads) { let self = this; - let sources = uploads.map(u => { + let a = document.createElement('audio') + let allowed = ['probably', 'maybe'] + let sources = uploads.filter(u => { + let canPlay = a.canPlayType(u.mimetype) + return allowed.indexOf(canPlay) > -1 + }).map(u => { return { type: u.mimetype, src: self.fullUrl(u.listen_url), duration: u.duration } }) + a.remove() if (sources.length > 0) { // We always add a transcoded MP3 src at the end // because transcoding is expensive, but we want browsers that do diff --git a/front/src/components/audio/Player.vue b/front/src/components/audio/Player.vue index b4cf6a385180e01093aae07f8a3b00b14fa07eb4..c67e6e5548f35843f7c6d029288b66d6237c0407 100644 --- a/front/src/components/audio/Player.vue +++ b/front/src/components/audio/Player.vue @@ -408,12 +408,18 @@ export default { return sound }, getSrcs: function (trackData) { - let sources = trackData.uploads.map(u => { + let a = document.createElement('audio') + let allowed = ['probably', 'maybe'] + let sources = trackData.uploads.filter(u => { + let canPlay = a.canPlayType(u.mimetype) + return allowed.indexOf(canPlay) > -1 + }).map(u => { return { type: u.extension, url: this.$store.getters['instance/absoluteUrl'](u.listen_url), } }) + a.remove() // We always add a transcoded MP3 src at the end // because transcoding is expensive, but we want browsers that do // not support other codecs to be able to play it :) @@ -721,7 +727,7 @@ export default { }, 500); // If the session is playing as a PWA, populate the notification // with details from the track - if ('mediaSession' in navigator) { + if (this.currentTrack && 'mediaSession' in navigator) { let metadata = { title: this.currentTrack.title, artist: this.currentTrack.artist.name, diff --git a/front/src/utils.js b/front/src/utils.js index 380f13e957d2f29faadac05ac9d4c6e45695a6d3..fb7117a20aeaca00dba89006aa0afb1493d8caf5 100644 --- a/front/src/utils.js +++ b/front/src/utils.js @@ -47,7 +47,6 @@ export function setCsrf(xhr) { } export function checkRedirectToLogin (store, router) { - console.log('HELLO', store.state.auth.authenticated, router.currentRoute.fullPath) if (!store.state.auth.authenticated) { router.push({name: 'login', query: {next: router.currentRoute.fullPath}}) }