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 8498378bca
commit 8fb763d81e
No known key found for this signature in database
8 changed files with 133 additions and 0 deletions

View file

@ -603,6 +603,7 @@ class User extends Model {
*/
toOldJSONForBrowser(hideRootToken = false, minimal = false) {
const seriesHideFromContinueListening = this.extraData?.seriesHideFromContinueListening || []
const hiddenSeries = this.extraData?.hiddenSeries || []
const librariesAccessible = this.permissions?.librariesAccessible || []
const itemTagsSelected = this.permissions?.itemTagsSelected || []
const permissions = { ...this.permissions }
@ -621,6 +622,7 @@ class User extends Model {
isOldToken: this.isOldToken,
mediaProgress: this.mediaProgresses?.map((mp) => mp.getOldMediaProgress()) || [],
seriesHideFromContinueListening: [...seriesHideFromContinueListening],
hiddenSeries: [...hiddenSeries],
bookmarks: this.bookmarks?.map((b) => ({ ...b })) || [],
isActive: this.isActive,
isLocked: this.isLocked,
@ -938,6 +940,38 @@ class User extends Model {
return true
}
/**
*
* @param {string} seriesId
* @returns {Promise<boolean>}
*/
async hideSeries(seriesId) {
if (!this.extraData) this.extraData = {}
const hiddenSeries = this.extraData.hiddenSeries || []
if (hiddenSeries.includes(seriesId)) return false
hiddenSeries.push(seriesId)
this.extraData.hiddenSeries = hiddenSeries
this.changed('extraData', true)
await this.save()
return true
}
/**
*
* @param {string} seriesId
* @returns {Promise<boolean>}
*/
async unhideSeries(seriesId) {
if (!this.extraData) this.extraData = {}
let hiddenSeries = this.extraData.hiddenSeries || []
if (!hiddenSeries.includes(seriesId)) return false
hiddenSeries = hiddenSeries.filter((sid) => sid !== seriesId)
this.extraData.hiddenSeries = hiddenSeries
this.changed('extraData', true)
await this.save()
return true
}
/**
* Update user permissions from external JSON
*