From 1b06dbd78ce28b126ac52987103b728b40803c9a Mon Sep 17 00:00:00 2001 From: Tony Edwards Date: Thu, 30 Nov 2023 13:07:30 +0000 Subject: [PATCH 01/16] Adds basic low feedback mode implementation --- .../audiobookshelf/app/data/DeviceClasses.kt | 5 +++-- pages/item/_id/index.vue | 5 ++++- pages/settings.vue | 21 ++++++++++++++++++- store/index.js | 3 +++ 4 files changed, 30 insertions(+), 4 deletions(-) diff --git a/android/app/src/main/java/com/audiobookshelf/app/data/DeviceClasses.kt b/android/app/src/main/java/com/audiobookshelf/app/data/DeviceClasses.kt index 078b5b09..22362ad5 100644 --- a/android/app/src/main/java/com/audiobookshelf/app/data/DeviceClasses.kt +++ b/android/app/src/main/java/com/audiobookshelf/app/data/DeviceClasses.kt @@ -122,7 +122,8 @@ data class DeviceSettings( var sleepTimerLength: Long, // Time in milliseconds var disableSleepTimerFadeOut: Boolean, var disableSleepTimerResetFeedback: Boolean, - var languageCode: String + var languageCode: String, + var enableLowFeedbackMode: Boolean ) { companion object { // Static method to get default device settings @@ -145,7 +146,7 @@ data class DeviceSettings( autoSleepTimerAutoRewindTime = 300000L, // 5 minutes disableSleepTimerFadeOut = false, disableSleepTimerResetFeedback = false, - languageCode = "en-us" + enableLowFeedbackMode = false ) } } diff --git a/pages/item/_id/index.vue b/pages/item/_id/index.vue index 26829c7b..25e124ae 100644 --- a/pages/item/_id/index.vue +++ b/pages/item/_id/index.vue @@ -27,7 +27,7 @@

{{ subtitle }}

-
+

{{ $strings.MessageMediaNotLinkedToServer }}

@@ -454,6 +454,9 @@ export default { if (width * this.bookCoverAspectRatio > 325) width = 325 / this.bookCoverAspectRatio return width + }, + isLowFeedback() { + return this.$store.state.deviceData.deviceSettings.enableLowFeedbackMode } }, methods: { diff --git a/pages/settings.vue b/pages/settings.vue index 3ffef09a..bb08087c 100644 --- a/pages/settings.vue +++ b/pages/settings.vue @@ -15,6 +15,12 @@

{{ $strings.LabelLockOrientation }}

+
+
+ +
+

Low Feedback Mode

+

{{ $strings.LabelHapticFeedback }}

@@ -158,7 +164,8 @@ export default { disableSleepTimerResetFeedback: false, autoSleepTimerAutoRewind: false, autoSleepTimerAutoRewindTime: 300000, // 5 minutes - languageCode: 'en-us' + languageCode: 'en-us', // 5 minutes + enableLowFeedbackMode: false }, lockCurrentOrientation: false, settingInfo: { @@ -185,6 +192,12 @@ export default { enableMp3IndexSeeking: { name: this.$strings.LabelEnableMp3IndexSeeking, message: this.$strings.LabelEnableMp3IndexSeekingHelp + name: 'Enable mp3 index seeking', + message: 'This setting should only be enabled if you have mp3 files that are not seeking correctly. Inaccurate seeking is most likely due to Variable birate (VBR) MP3 files. This setting will force index seeking, in which a time-to-byte mapping is built as the file is read. In some cases with large MP3 files there will be a delay when seeking towards the end of the file.' + }, + enableLowFeedbackMode: { + name: 'Low feedback mode', + message: 'Danger. This setting will hide confirmation messages, error messages, notifications and feedback within the apps interface. With low feedback enabled, you WILL miss important messages. You WILL experience unexpected behavior. Proceed with caution.' } }, hapticFeedbackItems: [ @@ -423,6 +436,10 @@ export default { this.settings.jumpBackwardsTime = this.jumpBackwardsItems[next].value this.saveSettings() }, + toggleLowFeedbackMode() { + this.settings.enableLowFeedbackMode = !this.settings.enableLowFeedbackMode + this.saveSettings() + }, async saveSettings() { await this.$hapticsImpact() const updatedDeviceData = await this.$db.updateDeviceSettings({ ...this.settings }) @@ -459,6 +476,8 @@ export default { this.settings.autoSleepTimerAutoRewindTime = !isNaN(deviceSettings.autoSleepTimerAutoRewindTime) ? deviceSettings.autoSleepTimerAutoRewindTime : 300000 // 5 minutes this.settings.languageCode = deviceSettings.languageCode || 'en-us' + + this.settings.enableLowFeedbackMode = !!deviceSettings.enableLowFeedbackMode } }, mounted() { diff --git a/store/index.js b/store/index.js index 847c23f2..1d1a59ff 100644 --- a/store/index.js +++ b/store/index.js @@ -75,6 +75,9 @@ export const getters = { }, getOrientationLockSetting: state => { return state.deviceData?.deviceSettings?.lockOrientation + }, + getLowFeedbackModeSetting: state => { + return state.deviceData?.deviceSettings?.enableLowFeebackMode } } From e6c1874cbbbf2b67a1ffe061b03bbe0812d62e03 Mon Sep 17 00:00:00 2001 From: Tony Edwards Date: Thu, 30 Nov 2023 13:23:36 +0000 Subject: [PATCH 02/16] Adds download success toasts to low feedback mode --- .../tables/podcast/LatestEpisodeRow.vue | 23 ++++++++++++------- .../widgets/DownloadProgressIndicator.vue | 2 +- 2 files changed, 16 insertions(+), 9 deletions(-) diff --git a/components/tables/podcast/LatestEpisodeRow.vue b/components/tables/podcast/LatestEpisodeRow.vue index a63fa182..aff2ab3b 100644 --- a/components/tables/podcast/LatestEpisodeRow.vue +++ b/components/tables/podcast/LatestEpisodeRow.vue @@ -158,6 +158,9 @@ export default { }, podcast() { return this.episode.podcast || {} + }, + isLowFeedback() { + return this.$store.state.deviceData.deviceSettings.enableLowFeedbackMode } }, methods: { @@ -215,15 +218,19 @@ export default { } console.log('Local folder', JSON.stringify(localFolder)) - - var startDownloadMessage = `Start download for "${this.title}" to folder ${localFolder.name}?` - const { value } = await Dialog.confirm({ - title: 'Confirm', - message: startDownloadMessage - }) - if (value) { + + if (isLowFeedback) { this.startDownload(localFolder) - } + } else { + var startDownloadMessage = `Start download for "${this.title}" to folder ${localFolder.name}?` + const { value } = await Dialog.confirm({ + title: 'Confirm', + message: startDownloadMessage + }) + if (value) { + this.startDownload(localFolder) + } + } }, async startDownload(localFolder) { var payload = { diff --git a/components/widgets/DownloadProgressIndicator.vue b/components/widgets/DownloadProgressIndicator.vue index 130007c7..0dcc218b 100644 --- a/components/widgets/DownloadProgressIndicator.vue +++ b/components/widgets/DownloadProgressIndicator.vue @@ -56,7 +56,7 @@ export default { if (!data.localLibraryItem) { this.$toast.error(this.$strings.MessageItemDownloadCompleteFailedToCreate) } else { - this.$toast.success(`Item "${data.localLibraryItem.media.metadata.title}" download finished`) + if (!isLowFeedback) this.$toast.success(`Item "${data.localLibraryItem.media.metadata.title}" download finished`) this.$eventBus.$emit('new-local-library-item', data.localLibraryItem) } From aca348e7837e1789d5564e247cb044fbb7cc2495 Mon Sep 17 00:00:00 2001 From: Tony Edwards Date: Thu, 30 Nov 2023 18:20:09 +0000 Subject: [PATCH 03/16] Adds low feedback mode to podcast downloads --- components/tables/podcast/EpisodeRow.vue | 20 +++++++++++++------ .../tables/podcast/LatestEpisodeRow.vue | 4 +++- .../widgets/DownloadProgressIndicator.vue | 8 +++++++- 3 files changed, 24 insertions(+), 8 deletions(-) diff --git a/components/tables/podcast/EpisodeRow.vue b/components/tables/podcast/EpisodeRow.vue index fa688fba..44b6e84e 100644 --- a/components/tables/podcast/EpisodeRow.vue +++ b/components/tables/podcast/EpisodeRow.vue @@ -152,6 +152,9 @@ export default { }, localEpisodeId() { return this.localEpisode?.id || null + }, + isLowFeedback() { + return this.$store.state.deviceData.deviceSettings.enableLowFeedbackMode } }, methods: { @@ -210,14 +213,19 @@ export default { console.log('Local folder', JSON.stringify(localFolder)) - var startDownloadMessage = `Start download for "${this.title}" to folder ${localFolder.name}?` - const { value } = await Dialog.confirm({ - title: 'Confirm', - message: startDownloadMessage - }) - if (value) { + if (this.isLowFeedback) { this.startDownload(localFolder) + } else { + var startDownloadMessage = `Start download for "${this.title}" to folder ${localFolder.name}?` + const { value } = await Dialog.confirm({ + title: 'Confirm', + message: startDownloadMessage + }) + if (value) { + this.startDownload(localFolder) + } } + }, async startDownload(localFolder) { var payload = { diff --git a/components/tables/podcast/LatestEpisodeRow.vue b/components/tables/podcast/LatestEpisodeRow.vue index aff2ab3b..140426c4 100644 --- a/components/tables/podcast/LatestEpisodeRow.vue +++ b/components/tables/podcast/LatestEpisodeRow.vue @@ -219,7 +219,7 @@ export default { console.log('Local folder', JSON.stringify(localFolder)) - if (isLowFeedback) { + if (this.isLowFeedback) { this.startDownload(localFolder) } else { var startDownloadMessage = `Start download for "${this.title}" to folder ${localFolder.name}?` @@ -245,6 +245,8 @@ export default { var errorMsg = downloadRes.error || 'Unknown error' console.error('Download error', errorMsg) this.$toast.error(errorMsg) + } else { + console.log('Download completed', JSON.stringify(downloadRes)) } }, async playClick() { diff --git a/components/widgets/DownloadProgressIndicator.vue b/components/widgets/DownloadProgressIndicator.vue index 0dcc218b..4018aa03 100644 --- a/components/widgets/DownloadProgressIndicator.vue +++ b/components/widgets/DownloadProgressIndicator.vue @@ -40,6 +40,10 @@ export default { }, isIos() { return this.$platform === 'ios' + }, + isLowFeedback() { + console.log('isLowFeedback', this.$store.state.deviceData.deviceSettings.enableLowFeedbackMode) + return this.$store.state.deviceData.deviceSettings.enableLowFeedbackMode } }, methods: { @@ -56,7 +60,9 @@ export default { if (!data.localLibraryItem) { this.$toast.error(this.$strings.MessageItemDownloadCompleteFailedToCreate) } else { - if (!isLowFeedback) this.$toast.success(`Item "${data.localLibraryItem.media.metadata.title}" download finished`) + if (!this.isLowFeedback) { + this.$toast.success(`Item "${data.localLibraryItem.media.metadata.title}" download finished`) + } this.$eventBus.$emit('new-local-library-item', data.localLibraryItem) } From 78448894d26e4246e1c0831405b78aca6f194719 Mon Sep 17 00:00:00 2001 From: Tony Edwards Date: Thu, 30 Nov 2023 19:02:51 +0000 Subject: [PATCH 04/16] Adds hiding audio book feedback promt/toast --- pages/item/_id/_episode/index.vue | 16 ++++++++++------ pages/item/_id/index.vue | 31 +++++++++++++++++-------------- 2 files changed, 27 insertions(+), 20 deletions(-) diff --git a/pages/item/_id/_episode/index.vue b/pages/item/_id/_episode/index.vue index 9baa81f3..82029af9 100644 --- a/pages/item/_id/_episode/index.vue +++ b/pages/item/_id/_episode/index.vue @@ -398,13 +398,17 @@ export default { console.log('Local folder', JSON.stringify(localFolder)) - const startDownloadMessage = `Start download for "${this.title}" to folder ${localFolder.name}?` - const { value } = await Dialog.confirm({ - title: 'Confirm', - message: startDownloadMessage - }) - if (value) { + if (this.isLowFeedback) { this.startDownload(localFolder) + } else { + const startDownloadMessage = `Start download for "${this.title}" to folder ${localFolder.name}?` + const { value } = await Dialog.confirm({ + title: 'Confirm', + message: startDownloadMessage + }) + if (value) { + this.startDownload(localFolder) + } } }, async selectFolder() { diff --git a/pages/item/_id/index.vue b/pages/item/_id/index.vue index 25e124ae..515f6b1b 100644 --- a/pages/item/_id/index.vue +++ b/pages/item/_id/index.vue @@ -618,21 +618,24 @@ export default { } console.log('Local folder', JSON.stringify(localFolder)) - - let startDownloadMessage = `Start download for "${this.title}" with ${this.numTracks} audio track${this.numTracks == 1 ? '' : 's'} to folder ${localFolder.name}?` - if (!this.isIos && this.showRead) { - if (this.numTracks > 0) { - startDownloadMessage = `Start download for "${this.title}" with ${this.numTracks} audio track${this.numTracks == 1 ? '' : 's'} and ebook file to folder ${localFolder.name}?` - } else { - startDownloadMessage = `Start download for "${this.title}" with ebook file to folder ${localFolder.name}?` - } - } - const { value } = await Dialog.confirm({ - title: 'Confirm', - message: startDownloadMessage - }) - if (value) { + if (this.isLowFeedback) { this.startDownload(localFolder) + } else { + let startDownloadMessage = `Start download for "${this.title}" with ${this.numTracks} audio track${this.numTracks == 1 ? '' : 's'} to folder ${localFolder.name}?` + if (!this.isIos && this.showRead) { + if (this.numTracks > 0) { + startDownloadMessage = `Start download for "${this.title}" with ${this.numTracks} audio track${this.numTracks == 1 ? '' : 's'} and ebook file to folder ${localFolder.name}?` + } else { + startDownloadMessage = `Start download for "${this.title}" with ebook file to folder ${localFolder.name}?` + } + } + const { value } = await Dialog.confirm({ + title: 'Confirm', + message: startDownloadMessage + }) + if (value) { + this.startDownload(localFolder) + } } }, async startDownload(localFolder = null) { From 9a32396daa9dd3728eff2b048e95859262305516 Mon Sep 17 00:00:00 2001 From: Tony Edwards Date: Fri, 8 Dec 2023 07:15:14 +0000 Subject: [PATCH 05/16] Removes low feedback toggle --- .../audiobookshelf/app/data/DeviceClasses.kt | 6 ++-- components/tables/podcast/EpisodeRow.vue | 20 ++++------- .../tables/podcast/LatestEpisodeRow.vue | 21 ++++------- .../widgets/DownloadProgressIndicator.vue | 8 +---- pages/item/_id/_episode/index.vue | 16 ++++----- pages/item/_id/index.vue | 35 ++++++++----------- pages/settings.vue | 19 +--------- store/index.js | 3 -- 8 files changed, 37 insertions(+), 91 deletions(-) diff --git a/android/app/src/main/java/com/audiobookshelf/app/data/DeviceClasses.kt b/android/app/src/main/java/com/audiobookshelf/app/data/DeviceClasses.kt index 22362ad5..dd2b7804 100644 --- a/android/app/src/main/java/com/audiobookshelf/app/data/DeviceClasses.kt +++ b/android/app/src/main/java/com/audiobookshelf/app/data/DeviceClasses.kt @@ -122,8 +122,7 @@ data class DeviceSettings( var sleepTimerLength: Long, // Time in milliseconds var disableSleepTimerFadeOut: Boolean, var disableSleepTimerResetFeedback: Boolean, - var languageCode: String, - var enableLowFeedbackMode: Boolean + var languageCode: String ) { companion object { // Static method to get default device settings @@ -145,8 +144,7 @@ data class DeviceSettings( autoSleepTimerAutoRewind = false, autoSleepTimerAutoRewindTime = 300000L, // 5 minutes disableSleepTimerFadeOut = false, - disableSleepTimerResetFeedback = false, - enableLowFeedbackMode = false + disableSleepTimerResetFeedback = false ) } } diff --git a/components/tables/podcast/EpisodeRow.vue b/components/tables/podcast/EpisodeRow.vue index 44b6e84e..fa688fba 100644 --- a/components/tables/podcast/EpisodeRow.vue +++ b/components/tables/podcast/EpisodeRow.vue @@ -152,9 +152,6 @@ export default { }, localEpisodeId() { return this.localEpisode?.id || null - }, - isLowFeedback() { - return this.$store.state.deviceData.deviceSettings.enableLowFeedbackMode } }, methods: { @@ -213,19 +210,14 @@ export default { console.log('Local folder', JSON.stringify(localFolder)) - if (this.isLowFeedback) { + var startDownloadMessage = `Start download for "${this.title}" to folder ${localFolder.name}?` + const { value } = await Dialog.confirm({ + title: 'Confirm', + message: startDownloadMessage + }) + if (value) { this.startDownload(localFolder) - } else { - var startDownloadMessage = `Start download for "${this.title}" to folder ${localFolder.name}?` - const { value } = await Dialog.confirm({ - title: 'Confirm', - message: startDownloadMessage - }) - if (value) { - this.startDownload(localFolder) - } } - }, async startDownload(localFolder) { var payload = { diff --git a/components/tables/podcast/LatestEpisodeRow.vue b/components/tables/podcast/LatestEpisodeRow.vue index 140426c4..682b046d 100644 --- a/components/tables/podcast/LatestEpisodeRow.vue +++ b/components/tables/podcast/LatestEpisodeRow.vue @@ -158,9 +158,6 @@ export default { }, podcast() { return this.episode.podcast || {} - }, - isLowFeedback() { - return this.$store.state.deviceData.deviceSettings.enableLowFeedbackMode } }, methods: { @@ -219,18 +216,14 @@ export default { console.log('Local folder', JSON.stringify(localFolder)) - if (this.isLowFeedback) { + var startDownloadMessage = `Start download for "${this.title}" to folder ${localFolder.name}?` + const { value } = await Dialog.confirm({ + title: 'Confirm', + message: startDownloadMessage + }) + if (value) { this.startDownload(localFolder) - } else { - var startDownloadMessage = `Start download for "${this.title}" to folder ${localFolder.name}?` - const { value } = await Dialog.confirm({ - title: 'Confirm', - message: startDownloadMessage - }) - if (value) { - this.startDownload(localFolder) - } - } + } }, async startDownload(localFolder) { var payload = { diff --git a/components/widgets/DownloadProgressIndicator.vue b/components/widgets/DownloadProgressIndicator.vue index 4018aa03..130007c7 100644 --- a/components/widgets/DownloadProgressIndicator.vue +++ b/components/widgets/DownloadProgressIndicator.vue @@ -40,10 +40,6 @@ export default { }, isIos() { return this.$platform === 'ios' - }, - isLowFeedback() { - console.log('isLowFeedback', this.$store.state.deviceData.deviceSettings.enableLowFeedbackMode) - return this.$store.state.deviceData.deviceSettings.enableLowFeedbackMode } }, methods: { @@ -60,9 +56,7 @@ export default { if (!data.localLibraryItem) { this.$toast.error(this.$strings.MessageItemDownloadCompleteFailedToCreate) } else { - if (!this.isLowFeedback) { - this.$toast.success(`Item "${data.localLibraryItem.media.metadata.title}" download finished`) - } + this.$toast.success(`Item "${data.localLibraryItem.media.metadata.title}" download finished`) this.$eventBus.$emit('new-local-library-item', data.localLibraryItem) } diff --git a/pages/item/_id/_episode/index.vue b/pages/item/_id/_episode/index.vue index 82029af9..9baa81f3 100644 --- a/pages/item/_id/_episode/index.vue +++ b/pages/item/_id/_episode/index.vue @@ -398,17 +398,13 @@ export default { console.log('Local folder', JSON.stringify(localFolder)) - if (this.isLowFeedback) { + const startDownloadMessage = `Start download for "${this.title}" to folder ${localFolder.name}?` + const { value } = await Dialog.confirm({ + title: 'Confirm', + message: startDownloadMessage + }) + if (value) { this.startDownload(localFolder) - } else { - const startDownloadMessage = `Start download for "${this.title}" to folder ${localFolder.name}?` - const { value } = await Dialog.confirm({ - title: 'Confirm', - message: startDownloadMessage - }) - if (value) { - this.startDownload(localFolder) - } } }, async selectFolder() { diff --git a/pages/item/_id/index.vue b/pages/item/_id/index.vue index 515f6b1b..05819ed9 100644 --- a/pages/item/_id/index.vue +++ b/pages/item/_id/index.vue @@ -27,7 +27,7 @@

{{ subtitle }}

-
+

{{ $strings.MessageMediaNotLinkedToServer }}

@@ -454,9 +454,6 @@ export default { if (width * this.bookCoverAspectRatio > 325) width = 325 / this.bookCoverAspectRatio return width - }, - isLowFeedback() { - return this.$store.state.deviceData.deviceSettings.enableLowFeedbackMode } }, methods: { @@ -618,24 +615,20 @@ export default { } console.log('Local folder', JSON.stringify(localFolder)) - if (this.isLowFeedback) { + let startDownloadMessage = `Start download for "${this.title}" with ${this.numTracks} audio track${this.numTracks == 1 ? '' : 's'} to folder ${localFolder.name}?` + if (!this.isIos && this.showRead) { + if (this.numTracks > 0) { + startDownloadMessage = `Start download for "${this.title}" with ${this.numTracks} audio track${this.numTracks == 1 ? '' : 's'} and ebook file to folder ${localFolder.name}?` + } else { + startDownloadMessage = `Start download for "${this.title}" with ebook file to folder ${localFolder.name}?` + } + } + const { value } = await Dialog.confirm({ + title: 'Confirm', + message: startDownloadMessage + }) + if (value) { this.startDownload(localFolder) - } else { - let startDownloadMessage = `Start download for "${this.title}" with ${this.numTracks} audio track${this.numTracks == 1 ? '' : 's'} to folder ${localFolder.name}?` - if (!this.isIos && this.showRead) { - if (this.numTracks > 0) { - startDownloadMessage = `Start download for "${this.title}" with ${this.numTracks} audio track${this.numTracks == 1 ? '' : 's'} and ebook file to folder ${localFolder.name}?` - } else { - startDownloadMessage = `Start download for "${this.title}" with ebook file to folder ${localFolder.name}?` - } - } - const { value } = await Dialog.confirm({ - title: 'Confirm', - message: startDownloadMessage - }) - if (value) { - this.startDownload(localFolder) - } } }, async startDownload(localFolder = null) { diff --git a/pages/settings.vue b/pages/settings.vue index bb08087c..b5d40094 100644 --- a/pages/settings.vue +++ b/pages/settings.vue @@ -15,12 +15,6 @@

{{ $strings.LabelLockOrientation }}

-
-
- -
-

Low Feedback Mode

-

{{ $strings.LabelHapticFeedback }}

@@ -164,8 +158,7 @@ export default { disableSleepTimerResetFeedback: false, autoSleepTimerAutoRewind: false, autoSleepTimerAutoRewindTime: 300000, // 5 minutes - languageCode: 'en-us', // 5 minutes - enableLowFeedbackMode: false + languageCode: 'en-us' // 5 minutes }, lockCurrentOrientation: false, settingInfo: { @@ -194,10 +187,6 @@ export default { message: this.$strings.LabelEnableMp3IndexSeekingHelp name: 'Enable mp3 index seeking', message: 'This setting should only be enabled if you have mp3 files that are not seeking correctly. Inaccurate seeking is most likely due to Variable birate (VBR) MP3 files. This setting will force index seeking, in which a time-to-byte mapping is built as the file is read. In some cases with large MP3 files there will be a delay when seeking towards the end of the file.' - }, - enableLowFeedbackMode: { - name: 'Low feedback mode', - message: 'Danger. This setting will hide confirmation messages, error messages, notifications and feedback within the apps interface. With low feedback enabled, you WILL miss important messages. You WILL experience unexpected behavior. Proceed with caution.' } }, hapticFeedbackItems: [ @@ -436,10 +425,6 @@ export default { this.settings.jumpBackwardsTime = this.jumpBackwardsItems[next].value this.saveSettings() }, - toggleLowFeedbackMode() { - this.settings.enableLowFeedbackMode = !this.settings.enableLowFeedbackMode - this.saveSettings() - }, async saveSettings() { await this.$hapticsImpact() const updatedDeviceData = await this.$db.updateDeviceSettings({ ...this.settings }) @@ -476,8 +461,6 @@ export default { this.settings.autoSleepTimerAutoRewindTime = !isNaN(deviceSettings.autoSleepTimerAutoRewindTime) ? deviceSettings.autoSleepTimerAutoRewindTime : 300000 // 5 minutes this.settings.languageCode = deviceSettings.languageCode || 'en-us' - - this.settings.enableLowFeedbackMode = !!deviceSettings.enableLowFeedbackMode } }, mounted() { diff --git a/store/index.js b/store/index.js index 1d1a59ff..847c23f2 100644 --- a/store/index.js +++ b/store/index.js @@ -75,9 +75,6 @@ export const getters = { }, getOrientationLockSetting: state => { return state.deviceData?.deviceSettings?.lockOrientation - }, - getLowFeedbackModeSetting: state => { - return state.deviceData?.deviceSettings?.enableLowFeebackMode } } From 89938ab120c39bbbabd4074867c4be69a48f2204 Mon Sep 17 00:00:00 2001 From: Tony Edwards Date: Fri, 8 Dec 2023 07:25:51 +0000 Subject: [PATCH 06/16] Removes download success toast --- components/widgets/DownloadProgressIndicator.vue | 1 - 1 file changed, 1 deletion(-) diff --git a/components/widgets/DownloadProgressIndicator.vue b/components/widgets/DownloadProgressIndicator.vue index 130007c7..28bde581 100644 --- a/components/widgets/DownloadProgressIndicator.vue +++ b/components/widgets/DownloadProgressIndicator.vue @@ -56,7 +56,6 @@ export default { if (!data.localLibraryItem) { this.$toast.error(this.$strings.MessageItemDownloadCompleteFailedToCreate) } else { - this.$toast.success(`Item "${data.localLibraryItem.media.metadata.title}" download finished`) this.$eventBus.$emit('new-local-library-item', data.localLibraryItem) } From 5067c0f6d7fe993a32061c9b76370ba35fab4777 Mon Sep 17 00:00:00 2001 From: Tony Edwards Date: Fri, 8 Dec 2023 07:30:54 +0000 Subject: [PATCH 07/16] Removes download confirmation prompt --- components/tables/podcast/EpisodeRow.vue | 9 +-------- components/tables/podcast/LatestEpisodeRow.vue | 9 +-------- 2 files changed, 2 insertions(+), 16 deletions(-) diff --git a/components/tables/podcast/EpisodeRow.vue b/components/tables/podcast/EpisodeRow.vue index fa688fba..989b9efc 100644 --- a/components/tables/podcast/EpisodeRow.vue +++ b/components/tables/podcast/EpisodeRow.vue @@ -210,14 +210,7 @@ export default { console.log('Local folder', JSON.stringify(localFolder)) - var startDownloadMessage = `Start download for "${this.title}" to folder ${localFolder.name}?` - const { value } = await Dialog.confirm({ - title: 'Confirm', - message: startDownloadMessage - }) - if (value) { - this.startDownload(localFolder) - } + this.startDownload(localFolder) }, async startDownload(localFolder) { var payload = { diff --git a/components/tables/podcast/LatestEpisodeRow.vue b/components/tables/podcast/LatestEpisodeRow.vue index 682b046d..30111ae4 100644 --- a/components/tables/podcast/LatestEpisodeRow.vue +++ b/components/tables/podcast/LatestEpisodeRow.vue @@ -216,14 +216,7 @@ export default { console.log('Local folder', JSON.stringify(localFolder)) - var startDownloadMessage = `Start download for "${this.title}" to folder ${localFolder.name}?` - const { value } = await Dialog.confirm({ - title: 'Confirm', - message: startDownloadMessage - }) - if (value) { - this.startDownload(localFolder) - } + this.startDownload(localFolder) }, async startDownload(localFolder) { var payload = { From 02746bc35f74cdbc56cd69d56971df9573f72721 Mon Sep 17 00:00:00 2001 From: Tony Edwards Date: Fri, 8 Dec 2023 07:53:35 +0000 Subject: [PATCH 08/16] Fixes my introduced errors --- .../src/main/java/com/audiobookshelf/app/data/DeviceClasses.kt | 3 ++- pages/settings.vue | 2 +- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/android/app/src/main/java/com/audiobookshelf/app/data/DeviceClasses.kt b/android/app/src/main/java/com/audiobookshelf/app/data/DeviceClasses.kt index dd2b7804..078b5b09 100644 --- a/android/app/src/main/java/com/audiobookshelf/app/data/DeviceClasses.kt +++ b/android/app/src/main/java/com/audiobookshelf/app/data/DeviceClasses.kt @@ -144,7 +144,8 @@ data class DeviceSettings( autoSleepTimerAutoRewind = false, autoSleepTimerAutoRewindTime = 300000L, // 5 minutes disableSleepTimerFadeOut = false, - disableSleepTimerResetFeedback = false + disableSleepTimerResetFeedback = false, + languageCode = "en-us" ) } } diff --git a/pages/settings.vue b/pages/settings.vue index b5d40094..9444a8cd 100644 --- a/pages/settings.vue +++ b/pages/settings.vue @@ -184,7 +184,7 @@ export default { }, enableMp3IndexSeeking: { name: this.$strings.LabelEnableMp3IndexSeeking, - message: this.$strings.LabelEnableMp3IndexSeekingHelp + message: this.$strings.LabelEnableMp3IndexSeekingHelp, name: 'Enable mp3 index seeking', message: 'This setting should only be enabled if you have mp3 files that are not seeking correctly. Inaccurate seeking is most likely due to Variable birate (VBR) MP3 files. This setting will force index seeking, in which a time-to-byte mapping is built as the file is read. In some cases with large MP3 files there will be a delay when seeking towards the end of the file.' } From 0c72889917edf92e2fa699b836ba4469eabd398e Mon Sep 17 00:00:00 2001 From: Tony Edwards Date: Fri, 8 Dec 2023 07:56:45 +0000 Subject: [PATCH 09/16] Remove successfully connected media link message --- pages/item/_id/index.vue | 6 ------ 1 file changed, 6 deletions(-) diff --git a/pages/item/_id/index.vue b/pages/item/_id/index.vue index 05819ed9..8a65cda5 100644 --- a/pages/item/_id/index.vue +++ b/pages/item/_id/index.vue @@ -40,12 +40,6 @@

Media is linked to a different server connection config. Downloaded User Id: {{ localLibraryItem.serverUserId }}. Downloaded Server Address: {{ localLibraryItem.serverAddress }}. Currently connected User Id: {{ user.id }}. Currently connected server address: {{ currentServerAddress }}.

-
-

{{ $strings.MessageMediaLinkedToThisServer }}

-
-
-

{{ $getString('MessageMediaLinkedToServer', [libraryItem.serverAddress]) }}

-
From be23c6703fd4383bc3710828985755a1e11b023b Mon Sep 17 00:00:00 2001 From: Tony Edwards Date: Fri, 8 Dec 2023 09:08:51 +0000 Subject: [PATCH 10/16] Shows media link status when connected to a server --- pages/item/_id/index.vue | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/pages/item/_id/index.vue b/pages/item/_id/index.vue index 8a65cda5..feebe9d5 100644 --- a/pages/item/_id/index.vue +++ b/pages/item/_id/index.vue @@ -27,7 +27,7 @@

{{ subtitle }}

-
+

{{ $strings.MessageMediaNotLinkedToServer }}

@@ -448,6 +448,9 @@ export default { if (width * this.bookCoverAspectRatio > 325) width = 325 / this.bookCoverAspectRatio return width + }, + socketConnected () { + return this.$store.state.socketConnected } }, methods: { From 837981b8b6f64f464e795888d335962cc442fe17 Mon Sep 17 00:00:00 2001 From: Tony Edwards Date: Fri, 8 Dec 2023 09:56:07 +0000 Subject: [PATCH 11/16] Removes download prompt on podcast ep page --- pages/item/_id/_episode/index.vue | 9 +-------- 1 file changed, 1 insertion(+), 8 deletions(-) diff --git a/pages/item/_id/_episode/index.vue b/pages/item/_id/_episode/index.vue index 9baa81f3..bc087f09 100644 --- a/pages/item/_id/_episode/index.vue +++ b/pages/item/_id/_episode/index.vue @@ -398,14 +398,7 @@ export default { console.log('Local folder', JSON.stringify(localFolder)) - const startDownloadMessage = `Start download for "${this.title}" to folder ${localFolder.name}?` - const { value } = await Dialog.confirm({ - title: 'Confirm', - message: startDownloadMessage - }) - if (value) { - this.startDownload(localFolder) - } + this.startDownload(localFolder) }, async selectFolder() { const folderObj = await AbsFileSystem.selectFolder({ mediaType: this.mediaType }) From 78170d4e10de06e694800d53ca314924385d36f2 Mon Sep 17 00:00:00 2001 From: Tony Edwards Date: Fri, 8 Dec 2023 09:59:22 +0000 Subject: [PATCH 12/16] Potential toasts for removal --- components/modals/ItemMoreMenuModal.vue | 8 ++++++-- pages/item/_id/_episode/index.vue | 8 ++++++-- 2 files changed, 12 insertions(+), 4 deletions(-) diff --git a/components/modals/ItemMoreMenuModal.vue b/components/modals/ItemMoreMenuModal.vue index d2886f3c..3787e2a2 100644 --- a/components/modals/ItemMoreMenuModal.vue +++ b/components/modals/ItemMoreMenuModal.vue @@ -388,7 +388,9 @@ export default { if (value) { const res = await AbsFileSystem.deleteTrackFromItem({ id: this.localLibraryItemId, trackLocalFileId: localFile.id, trackContentUrl: localEpisodeAudioTrack.contentUrl }) if (res?.id) { - this.$toast.success('Deleted episode successfully') + + //this.$toast.success('Deleted episode successfully') + if (this.isLocal) { // If this is local episode then redirect to server episode when available if (this.serverEpisodeId) { @@ -414,7 +416,9 @@ export default { if (value) { const res = await AbsFileSystem.deleteItem(this.localLibraryItem) if (res?.success) { - this.$toast.success('Deleted successfully') + + //this.$toast.success('Deleted successfully') + if (this.isLocal) { // If local then redirect to server version when available if (this.serverLibraryItemId) { diff --git a/pages/item/_id/_episode/index.vue b/pages/item/_id/_episode/index.vue index bc087f09..f14f72ca 100644 --- a/pages/item/_id/_episode/index.vue +++ b/pages/item/_id/_episode/index.vue @@ -316,7 +316,9 @@ export default { if (value) { const res = await AbsFileSystem.deleteTrackFromItem({ id: this.localLibraryItemId, trackLocalFileId: localFile.id, trackContentUrl: localEpisodeAudioTrack.contentUrl }) if (res?.id) { - this.$toast.success('Deleted episode successfully') + + // this.$toast.success('Deleted episode successfully') + if (this.isLocal) { // If this is local episode then redirect to server episode when available if (this.serverEpisodeId) { @@ -511,7 +513,9 @@ export default { this.$nativeHttp .delete(`/api/podcasts/${this.serverLibraryItemId}/episode/${this.serverEpisodeId}?hard=1`) .then(() => { - this.$toast.success('Episode deleted from server') + + //this.$toast.success('Episode deleted from server') + this.$router.replace(`/item/${this.serverLibraryItemId}`) }) .catch((error) => { From 1822b21af81c936a48f7e6ffeab1d265888b1cff Mon Sep 17 00:00:00 2001 From: advplyr Date: Fri, 8 Dec 2023 16:49:12 -0600 Subject: [PATCH 13/16] Remove socketConnected check on local items alert --- pages/item/_id/index.vue | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/pages/item/_id/index.vue b/pages/item/_id/index.vue index feebe9d5..8a65cda5 100644 --- a/pages/item/_id/index.vue +++ b/pages/item/_id/index.vue @@ -27,7 +27,7 @@

{{ subtitle }}

-
+

{{ $strings.MessageMediaNotLinkedToServer }}

@@ -448,9 +448,6 @@ export default { if (width * this.bookCoverAspectRatio > 325) width = 325 / this.bookCoverAspectRatio return width - }, - socketConnected () { - return this.$store.state.socketConnected } }, methods: { From 84e376a7cf33fd37ba9384222a120815b890bc2d Mon Sep 17 00:00:00 2001 From: advplyr Date: Fri, 8 Dec 2023 17:03:08 -0600 Subject: [PATCH 14/16] Remove commented out toasts --- components/modals/ItemMoreMenuModal.vue | 6 ------ components/tables/podcast/EpisodeRow.vue | 1 - components/tables/podcast/LatestEpisodeRow.vue | 3 +-- pages/item/_id/_episode/index.vue | 6 ------ 4 files changed, 1 insertion(+), 15 deletions(-) diff --git a/components/modals/ItemMoreMenuModal.vue b/components/modals/ItemMoreMenuModal.vue index 3787e2a2..319598bc 100644 --- a/components/modals/ItemMoreMenuModal.vue +++ b/components/modals/ItemMoreMenuModal.vue @@ -388,9 +388,6 @@ export default { if (value) { const res = await AbsFileSystem.deleteTrackFromItem({ id: this.localLibraryItemId, trackLocalFileId: localFile.id, trackContentUrl: localEpisodeAudioTrack.contentUrl }) if (res?.id) { - - //this.$toast.success('Deleted episode successfully') - if (this.isLocal) { // If this is local episode then redirect to server episode when available if (this.serverEpisodeId) { @@ -416,9 +413,6 @@ export default { if (value) { const res = await AbsFileSystem.deleteItem(this.localLibraryItem) if (res?.success) { - - //this.$toast.success('Deleted successfully') - if (this.isLocal) { // If local then redirect to server version when available if (this.serverLibraryItemId) { diff --git a/components/tables/podcast/EpisodeRow.vue b/components/tables/podcast/EpisodeRow.vue index 989b9efc..36312d13 100644 --- a/components/tables/podcast/EpisodeRow.vue +++ b/components/tables/podcast/EpisodeRow.vue @@ -58,7 +58,6 @@ \ No newline at end of file