+
Your Progress: {{ Math.round(progressPercent * 100) }}%
+
Finished {{ $formatDate(userProgressFinishedAt, 'MM/dd/yyyy') }}
+
{{ $elapsedPretty(userTimeRemaining) }} remaining
+
Started {{ $formatDate(userProgressStartedAt, 'MM/dd/yyyy') }}
+
close
@@ -372,7 +375,13 @@ export default {
return this.duration - this.userCurrentTime
},
progressPercent() {
- return this.userAudiobook ? this.userAudiobook.progress : 0
+ return this.userAudiobook ? Math.max(Math.min(1, this.userAudiobook.progress), 0) : 0
+ },
+ userProgressStartedAt() {
+ return this.userAudiobook ? this.userAudiobook.startedAt : 0
+ },
+ userProgressFinishedAt() {
+ return this.userAudiobook ? this.userAudiobook.finishedAt : 0
},
streamAudiobook() {
return this.$store.state.streamAudiobook
diff --git a/client/players/AudioTrack.js b/client/players/AudioTrack.js
index 5768092d..22aaf541 100644
--- a/client/players/AudioTrack.js
+++ b/client/players/AudioTrack.js
@@ -16,4 +16,14 @@ export default class AudioTrack {
}
return `${window.location.origin}${this.contentUrl}`
}
+
+ get relativeContentUrl() {
+ if (!this.contentUrl || this.contentUrl.startsWith('http')) return this.contentUrl
+
+ if (process.env.NODE_ENV === 'development') {
+ return `${process.env.serverUrl}${this.contentUrl}`
+ }
+
+ return this.contentUrl
+ }
}
\ No newline at end of file
diff --git a/client/players/LocalPlayer.js b/client/players/LocalPlayer.js
index 296f0940..5fbdad6d 100644
--- a/client/players/LocalPlayer.js
+++ b/client/players/LocalPlayer.js
@@ -99,7 +99,7 @@ export default class LocalPlayer extends EventEmitter {
if (!Hls.isSupported()) {
console.warn('HLS is not supported - fallback to using audio element')
this.usingNativeplayer = true
- this.player.src = this.currentTrack.contentUrl
+ this.player.src = this.currentTrack.relativeContentUrl
this.player.currentTime = this.currentTime
return
}
@@ -115,7 +115,7 @@ export default class LocalPlayer extends EventEmitter {
this.hlsInstance.attachMedia(this.player)
this.hlsInstance.on(Hls.Events.MEDIA_ATTACHED, () => {
- this.hlsInstance.loadSource(this.currentTrack.contentUrl)
+ this.hlsInstance.loadSource(this.currentTrack.relativeContentUrl)
this.hlsInstance.on(Hls.Events.MANIFEST_PARSED, () => {
console.log('[HLS] Manifest Parsed')