mirror of
https://github.com/advplyr/audiobookshelf.git
synced 2026-05-13 23:11:29 +00:00
Merge def0cfb744 into 47ea6b5092
This commit is contained in:
commit
661e23c6bb
8 changed files with 109 additions and 0 deletions
|
|
@ -421,6 +421,27 @@ class MeController {
|
|||
res.json(req.user.toOldJSONForBrowser())
|
||||
}
|
||||
|
||||
/**
|
||||
* POST: /api/me/series/:id/hide
|
||||
*
|
||||
* @param {RequestWithUser} req
|
||||
* @param {Response} res
|
||||
*/
|
||||
async hideSeries(req, res) {
|
||||
if (!(await Database.seriesModel.checkExistsById(req.params.id))) {
|
||||
Logger.error(`[MeController] hideSeries: Series ${req.params.id} not found`)
|
||||
return res.sendStatus(404)
|
||||
}
|
||||
|
||||
const { makeHidden } = req.body
|
||||
|
||||
const hasUpdated = await req.user.hideSeries(req.params.id, makeHidden)
|
||||
if (hasUpdated) {
|
||||
SocketAuthority.clientEmitter(req.user.id, 'user_updated', req.user.toOldJSONForBrowser())
|
||||
}
|
||||
res.json(req.user.toOldJSONForBrowser())
|
||||
}
|
||||
|
||||
/**
|
||||
* GET: api/me/progress/:id/remove-from-continue-listening
|
||||
*
|
||||
|
|
|
|||
|
|
@ -178,6 +178,7 @@ class UserController {
|
|||
permissions,
|
||||
bookmarks: [],
|
||||
extraData: {
|
||||
hiddenSeries: [],
|
||||
seriesHideFromContinueListening: []
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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,
|
||||
|
|
@ -945,6 +947,30 @@ class User extends Model {
|
|||
return true
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
* @param {string} seriesId
|
||||
* @param {boolean} makeHidden
|
||||
* @returns {Promise<boolean>}
|
||||
*/
|
||||
async hideSeries(seriesId, makeHidden) {
|
||||
if (!this.extraData) this.extraData = {}
|
||||
let hiddenSeries = this.extraData.hiddenSeries || []
|
||||
|
||||
if (makeHidden) {
|
||||
if (hiddenSeries.includes(seriesId)) return false
|
||||
hiddenSeries.push(seriesId)
|
||||
} else {
|
||||
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
|
||||
*
|
||||
|
|
|
|||
|
|
@ -186,6 +186,7 @@ class ApiRouter {
|
|||
this.router.get('/me/items-in-progress', MeController.getAllLibraryItemsInProgress.bind(this))
|
||||
this.router.get('/me/series/:id/remove-from-continue-listening', MeController.removeSeriesFromContinueListening.bind(this))
|
||||
this.router.get('/me/series/:id/readd-to-continue-listening', MeController.readdSeriesFromContinueListening.bind(this))
|
||||
this.router.post('/me/series/:id/hide', MeController.hideSeries.bind(this))
|
||||
this.router.get('/me/stats/year/:year', MeController.getStatsForYear.bind(this))
|
||||
this.router.post('/me/ereader-devices', MeController.updateUserEReaderDevices.bind(this))
|
||||
|
||||
|
|
|
|||
|
|
@ -106,6 +106,15 @@ module.exports = {
|
|||
}
|
||||
}
|
||||
|
||||
// Don't return hidden series
|
||||
if (user.extraData.hiddenSeries) {
|
||||
seriesWhere.push({
|
||||
id: {
|
||||
[Sequelize.Op.notIn]: user.extraData.hiddenSeries
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
if (attrQuery) {
|
||||
seriesWhere.push(
|
||||
Sequelize.where(Sequelize.literal(`(${attrQuery})`), {
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue