Fix: more sync issues, Add: link audiobooks with folder names in selected download folder

This commit is contained in:
advplyr
2021-11-20 10:59:34 -06:00
parent 3b6e7e1ce2
commit f40e971b90
15 changed files with 95 additions and 293 deletions
+2
View File
@@ -394,6 +394,7 @@ export default {
this.isPaused = !data.isPlaying
this.currentTime = Number((data.currentTime / 1000).toFixed(2))
this.totalDuration = Number((data.duration / 1000).toFixed(2))
this.$emit('setTotalDuration', this.totalDuration)
this.timeupdate()
if (data.isPlaying) {
console.log('playing - continue')
@@ -496,6 +497,7 @@ export default {
onMetadata(data) {
console.log('Native Audio On Metadata', JSON.stringify(data))
this.totalDuration = Number((data.duration / 1000).toFixed(2))
this.$emit('setTotalDuration', this.totalDuration)
this.currentTime = Number((data.currentTime / 1000).toFixed(2))
this.stateName = data.stateName
+16 -40
View File
@@ -12,6 +12,7 @@
:sleep-timeout-current-time="sleepTimeoutCurrentTime"
@close="cancelStream"
@sync="sync"
@setTotalDuration="setTotalDuration"
@selectPlaybackSpeed="showPlaybackSpeedModal = true"
@selectChapter="clickChapterBtn"
@showSleepTimer="showSleepTimer"
@@ -49,7 +50,8 @@ export default {
sleepTimerEndOfChapterTime: 0,
onSleepTimerEndedListener: null,
sleepInterval: null,
currentEndOfChapterTime: 0
currentEndOfChapterTime: 0,
totalDuration: 0
}
},
watch: {
@@ -66,7 +68,7 @@ export default {
},
userAudiobook() {
if (!this.audiobookId) return
return this.$store.getters['user/getMostRecentUserAudiobookData'](this.audiobookId)
return this.$store.getters['user/getUserAudiobookData'](this.audiobookId)
},
bookmarks() {
if (!this.userAudiobook) return []
@@ -274,7 +276,7 @@ export default {
audiobookId: syncData.audiobookId,
currentTime: syncData.currentTime,
totalDuration: syncData.totalDuration,
progress: Number((syncData.currentTime / syncData.totalDuration).toFixed(3)),
progress: syncData.totalDuration ? Number((syncData.currentTime / syncData.totalDuration).toFixed(3)) : 0,
lastUpdate: Date.now(),
isRead: false
}
@@ -283,45 +285,21 @@ export default {
this.$server.socket.emit('progress_update', progressUpdate)
} else {
this.$store.dispatch('user/updateUserAudiobookData', progressUpdate)
// this.$localStore.updateUserAudiobookData(progressUpdate).then(() => {
// console.log('Updated user audiobook progress', currentTime)
// })
}
}
},
updateTime(currentTime) {
this.currentTime = currentTime
var diff = currentTime - this.lastProgressTimeUpdate
if (diff > 4 || diff < 0) {
this.lastProgressTimeUpdate = currentTime
if (this.stream) {
var updatePayload = {
currentTime,
streamId: this.stream.id
}
this.$server.socket.emit('stream_update', updatePayload)
} else if (this.download) {
var progressUpdate = {
audiobookId: this.download.id,
currentTime: currentTime,
totalDuration: this.download.audiobook.duration,
progress: Number((currentTime / this.download.audiobook.duration).toFixed(3)),
lastUpdate: Date.now(),
isRead: false
}
if (this.$server.connected) {
this.$server.socket.emit('progress_update', progressUpdate)
}
this.$localStore.updateUserAudiobookData(progressUpdate).then(() => {
console.log('Updated user audiobook progress', currentTime)
})
}
}
this.sync({
currentTime,
audiobookId: this.audiobookId,
streamId: this.stream ? this.stream.id : null,
timeListened: 0,
totalDuration: this.totalDuration || 0
})
},
setTotalDuration(duration) {
this.totalDuration = duration
},
closeStream() {},
streamClosed(audiobookId) {
console.log('Stream Closed')
if (this.stream.audiobook.id === audiobookId || audiobookId === 'n/a') {
@@ -349,7 +327,7 @@ export default {
}
},
async getDownloadStartTime() {
var userAudiobook = await this.$localStore.getMostRecentUserAudiobook(this.audiobookId)
var userAudiobook = this.$store.getters['user/getUserAudiobookData'](this.audiobookId)
if (!userAudiobook) {
console.log('[StreamContainer] getDownloadStartTime no user audiobook record found')
return 0
@@ -505,7 +483,6 @@ export default {
this.setListeners()
this.$store.commit('user/addSettingsListener', { id: 'streamContainer', meth: this.settingsUpdated })
// this.$store.commit('user/addUserAudiobookListener', { id: 'streamContainer', meth: this.userAudiobooksUpdated })
this.$store.commit('setStreamListener', this.streamUpdated)
},
beforeDestroy() {
@@ -520,7 +497,6 @@ export default {
}
this.$store.commit('user/removeSettingsListener', 'streamContainer')
// this.$store.commit('user/removeUserAudiobookListener', 'streamContainer')
this.$store.commit('removeStreamListener')
}
}
+1 -1
View File
@@ -70,7 +70,7 @@ export default {
return this.audiobook.id
},
mostRecentUserProgress() {
return this.$store.getters['user/getMostRecentUserAudiobookData'](this.audiobookId)
return this.$store.getters['user/getUserAudiobookData'](this.audiobookId)
},
userProgressPercent() {
return this.mostRecentUserProgress ? this.mostRecentUserProgress.progress || 0 : 0
+1 -1
View File
@@ -82,7 +82,7 @@ export default {
return this.$store.getters['user/getUserSetting']('mobileOrderBy')
},
mostRecentUserProgress() {
return this.$store.getters['user/getMostRecentUserAudiobookData'](this.audiobookId)
return this.$store.getters['user/getUserAudiobookData'](this.audiobookId)
},
userProgressPercent() {
return this.mostRecentUserProgress ? this.mostRecentUserProgress.progress || 0 : 0
+3 -3
View File
@@ -158,7 +158,7 @@ export default {
return this.$store.state.downloads.downloads
},
mediaScanResults() {
return this.$store.state.mediaScanResults
return this.$store.state.downloads.mediaScanResults
}
},
methods: {
@@ -210,7 +210,7 @@ export default {
}
return sr
})
this.$store.commit('setMediaScanResults', searchResults)
this.$store.commit('downloads/setMediaScanResults', searchResults)
} else {
this.$toast.warning('No audio or image files found')
}
@@ -218,7 +218,7 @@ export default {
},
async resetFolder() {
await this.$localStore.setDownloadFolder(null)
this.$store.commit('setMediaScanResults', {})
this.$store.commit('downloads/setMediaScanResults', {})
this.$toast.info('Unlinked Folder')
},
updateDownloadProgress({ audiobookId, progress }) {