mirror of
https://github.com/advplyr/audiobookshelf.git
synced 2026-05-21 02:41:30 +00:00
feat: implement smart speed UI and state persistence
This commit is contained in:
parent
4299fdce59
commit
fa2460868e
7 changed files with 150 additions and 2 deletions
|
|
@ -1,5 +1,11 @@
|
|||
<template>
|
||||
<div class="relative">
|
||||
<!-- Smart Speed Indicator -->
|
||||
<div v-if="isSmartSpeedEnabled && !isCasting" class="absolute -top-6 right-0 text-xs text-yellow-400 flex items-center bg-black/50 px-2 py-0.5 rounded shadow-sm z-10 pointer-events-none">
|
||||
<span class="material-symbols text-sm mr-1">bolt</span>
|
||||
<span>Smart Speed Active</span>
|
||||
</div>
|
||||
|
||||
<!-- Track -->
|
||||
<div ref="track" class="w-full h-2 bg-gray-700 relative cursor-pointer transform duration-100 hover:scale-y-125 overflow-hidden" @mousemove="mousemoveTrack" @mouseleave="mouseleaveTrack" @click.stop="clickTrack">
|
||||
<div ref="readyTrack" class="h-full bg-gray-600 absolute top-0 left-0 pointer-events-none" />
|
||||
|
|
@ -63,6 +69,12 @@ export default {
|
|||
}
|
||||
},
|
||||
computed: {
|
||||
isCasting() {
|
||||
return this.$store.state.globals.isCasting || false
|
||||
},
|
||||
isSmartSpeedEnabled() {
|
||||
return this.$store.getters['user/getUserSetting']('enableSmartSpeed') || false
|
||||
},
|
||||
_playbackRate() {
|
||||
if (!this.playbackRate || isNaN(this.playbackRate)) return 1
|
||||
return this.playbackRate
|
||||
|
|
|
|||
|
|
@ -326,11 +326,22 @@ export default {
|
|||
|
||||
if (this.$refs.trackbar) this.$refs.trackbar.setUseChapterTrack(this.useChapterTrack)
|
||||
this.setPlaybackRate(this.playbackRate)
|
||||
|
||||
const enableSmartSpeed = this.$store.getters['user/getUserSetting']('enableSmartSpeed')
|
||||
const smartSpeedRatio = this.$store.getters['user/getUserSetting']('smartSpeedRatio')
|
||||
if (this.playerHandler && this.playerHandler.isPlayingLocalItem) {
|
||||
this.playerHandler.setSmartSpeed(enableSmartSpeed || false, smartSpeedRatio || 2.5)
|
||||
}
|
||||
},
|
||||
settingsUpdated(settings) {
|
||||
if (settings.playbackRate && this.playbackRate !== settings.playbackRate) {
|
||||
this.setPlaybackRate(settings.playbackRate)
|
||||
}
|
||||
if (this.playerHandler && this.playerHandler.isPlayingLocalItem && (settings.enableSmartSpeed !== undefined || settings.smartSpeedRatio !== undefined)) {
|
||||
const enableSmartSpeed = settings.enableSmartSpeed !== undefined ? settings.enableSmartSpeed : this.$store.getters['user/getUserSetting']('enableSmartSpeed')
|
||||
const smartSpeedRatio = settings.smartSpeedRatio !== undefined ? settings.smartSpeedRatio : this.$store.getters['user/getUserSetting']('smartSpeedRatio')
|
||||
this.playerHandler.setSmartSpeed(enableSmartSpeed || false, smartSpeedRatio || 2.5)
|
||||
}
|
||||
},
|
||||
closePlayer() {
|
||||
if (this.isFullscreen) {
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue