Add ability to hide and unhide series

List of hidden series IDs is stored in user.extraData and hidden series
are filtered out of the query on the server side.
This commit is contained in:
DoctorDalek1963 2025-11-03 22:05:13 +00:00
parent 9b92b5de34
commit e40efee589
No known key found for this signature in database
8 changed files with 133 additions and 0 deletions

View file

@ -131,6 +131,10 @@ export default {
{
text: this.isSeriesFinished ? this.$strings.MessageMarkAsNotFinished : this.$strings.MessageMarkAsFinished,
action: 'mark-series-finished'
},
{
text: !this.isSeriesHidden ? this.$strings.LabelHideSeries : this.$strings.LabelUnhideSeries,
action: 'hide-series'
}
]
@ -301,6 +305,10 @@ export default {
if (!this.seriesId) return false
return this.$store.getters['user/getIsSeriesRemovedFromContinueListening'](this.seriesId)
},
isSeriesHidden() {
if (!this.seriesId) return false
return this.$store.getters['user/getIsSeriesHidden'](this.seriesId)
},
filterBy() {
return this.$store.getters['user/getUserSetting']('filterBy')
},
@ -439,6 +447,12 @@ export default {
return
}
this.markSeriesFinished()
} else if (action === 'hide-series') {
if (this.processingSeries) {
console.warn('Already processing series')
return
}
this.markSeriesHidden()
} else if (this.handleSubtitlesAction(action)) {
return
} else if (this.handleCollapseSubSeriesAction(action)) {
@ -566,6 +580,33 @@ export default {
}
this.$store.commit('globals/setConfirmPrompt', payload)
},
markSeriesHidden() {
const newIsHidden = !this.isSeriesHidden;
const payload = {
message: newIsHidden ? this.$strings.MessageConfirmHideSeries : this.$strings.MessageConfirmUnhideSeries,
callback: (confirmed) => {
if (confirmed) {
this.processingSeries = true
const endpoint = newIsHidden ? 'hide' : 'unhide'
this.$axios
.$get(`/api/me/series/${this.seriesId}/${endpoint}`)
.then(() => {
this.$toast.success(this.$strings.ToastSeriesUpdateSuccess)
})
.catch((error) => {
this.$toast.error(this.$strings.ToastSeriesUpdateFailed)
console.error('Failed to batch update read/not read', error)
})
.finally(() => {
this.processingSeries = false
})
}
},
type: 'yesNo'
}
this.$store.commit('globals/setConfirmPrompt', payload)
},
updateOrder() {
this.saveSettings()
},