mirror of
https://github.com/advplyr/audiobookshelf.git
synced 2024-12-20 19:06:06 +01:00
Change: AudiobookProgress becomes UserAudiobookData, Change: Delete audiobook progress route
This commit is contained in:
parent
ad4dad1c29
commit
ff92fbb849
@ -413,7 +413,7 @@ export default {
|
|||||||
if (confirm(`Are you sure you want to reset your progress?`)) {
|
if (confirm(`Are you sure you want to reset your progress?`)) {
|
||||||
this.resettingProgress = true
|
this.resettingProgress = true
|
||||||
this.$axios
|
this.$axios
|
||||||
.$delete(`/api/user/audiobook/${this.audiobookId}`)
|
.$patch(`/api/user/audiobook/${this.audiobookId}/reset-progress`)
|
||||||
.then(() => {
|
.then(() => {
|
||||||
console.log('Progress reset complete')
|
console.log('Progress reset complete')
|
||||||
this.$toast.success(`Your progress was reset`)
|
this.$toast.success(`Your progress was reset`)
|
||||||
|
@ -60,9 +60,12 @@ class ApiController {
|
|||||||
|
|
||||||
this.router.patch('/match/:id', this.match.bind(this))
|
this.router.patch('/match/:id', this.match.bind(this))
|
||||||
|
|
||||||
|
// Old Route : Wait until refactor of mobile app to replace with path /reset-progress
|
||||||
this.router.delete('/user/audiobook/:id', this.resetUserAudiobookProgress.bind(this))
|
this.router.delete('/user/audiobook/:id', this.resetUserAudiobookProgress.bind(this))
|
||||||
this.router.patch('/user/audiobook/:id', this.updateUserAudiobookProgress.bind(this))
|
|
||||||
this.router.patch('/user/audiobooks', this.batchUpdateUserAudiobooksProgress.bind(this))
|
this.router.patch('/user/audiobook/:id/reset-progress', this.resetUserAudiobookProgress.bind(this))
|
||||||
|
this.router.patch('/user/audiobook/:id', this.updateUserAudiobookData.bind(this))
|
||||||
|
this.router.patch('/user/audiobooks', this.batchUpdateUserAudiobookData.bind(this))
|
||||||
|
|
||||||
this.router.patch('/user/password', this.userChangePassword.bind(this))
|
this.router.patch('/user/password', this.userChangePassword.bind(this))
|
||||||
this.router.patch('/user/settings', this.userUpdateSettings.bind(this))
|
this.router.patch('/user/settings', this.userUpdateSettings.bind(this))
|
||||||
@ -342,7 +345,7 @@ class ApiController {
|
|||||||
// Remove audiobook from users
|
// Remove audiobook from users
|
||||||
for (let i = 0; i < this.db.users.length; i++) {
|
for (let i = 0; i < this.db.users.length; i++) {
|
||||||
var user = this.db.users[i]
|
var user = this.db.users[i]
|
||||||
var madeUpdates = user.deleteAudiobookProgress(audiobook.id)
|
var madeUpdates = user.deleteAudiobookData(audiobook.id)
|
||||||
if (madeUpdates) {
|
if (madeUpdates) {
|
||||||
await this.db.updateEntity('user', user)
|
await this.db.updateEntity('user', user)
|
||||||
}
|
}
|
||||||
@ -564,12 +567,12 @@ class ApiController {
|
|||||||
res.sendStatus(200)
|
res.sendStatus(200)
|
||||||
}
|
}
|
||||||
|
|
||||||
async updateUserAudiobookProgress(req, res) {
|
async updateUserAudiobookData(req, res) {
|
||||||
var audiobook = this.db.audiobooks.find(ab => ab.id === req.params.id)
|
var audiobook = this.db.audiobooks.find(ab => ab.id === req.params.id)
|
||||||
if (!audiobook) {
|
if (!audiobook) {
|
||||||
return res.status(404).send('Audiobook not found')
|
return res.status(404).send('Audiobook not found')
|
||||||
}
|
}
|
||||||
var wasUpdated = req.user.updateAudiobookProgress(audiobook, req.body)
|
var wasUpdated = req.user.updateAudiobookData(audiobook, req.body)
|
||||||
if (wasUpdated) {
|
if (wasUpdated) {
|
||||||
await this.db.updateEntity('user', req.user)
|
await this.db.updateEntity('user', req.user)
|
||||||
this.clientEmitter(req.user.id, 'user_updated', req.user.toJSONForBrowser())
|
this.clientEmitter(req.user.id, 'user_updated', req.user.toJSONForBrowser())
|
||||||
@ -577,17 +580,17 @@ class ApiController {
|
|||||||
res.sendStatus(200)
|
res.sendStatus(200)
|
||||||
}
|
}
|
||||||
|
|
||||||
async batchUpdateUserAudiobooksProgress(req, res) {
|
async batchUpdateUserAudiobookData(req, res) {
|
||||||
var abProgresses = req.body
|
var userAbDataPayloads = req.body
|
||||||
if (!abProgresses || !abProgresses.length) {
|
if (!userAbDataPayloads || !userAbDataPayloads.length) {
|
||||||
return res.sendStatus(500)
|
return res.sendStatus(500)
|
||||||
}
|
}
|
||||||
|
|
||||||
var shouldUpdate = false
|
var shouldUpdate = false
|
||||||
abProgresses.forEach((progress) => {
|
userAbDataPayloads.forEach((userAbData) => {
|
||||||
var audiobook = this.db.audiobooks.find(ab => ab.id === progress.audiobookId)
|
var audiobook = this.db.audiobooks.find(ab => ab.id === userAbData.audiobookId)
|
||||||
if (audiobook) {
|
if (audiobook) {
|
||||||
var wasUpdated = req.user.updateAudiobookProgress(audiobook, progress)
|
var wasUpdated = req.user.updateAudiobookData(audiobook, userAbData)
|
||||||
if (wasUpdated) shouldUpdate = true
|
if (wasUpdated) shouldUpdate = true
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
@ -462,14 +462,9 @@ class Server {
|
|||||||
Logger.error('[Server] audiobookProgressUpdate invalid socket client')
|
Logger.error('[Server] audiobookProgressUpdate invalid socket client')
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
var audiobookProgress = client.user.updateAudiobookProgress(progressPayload.audiobookId, progressPayload)
|
var audiobookProgress = client.user.updateAudiobookData(progressPayload.audiobookId, progressPayload)
|
||||||
if (audiobookProgress) {
|
if (audiobookProgress) {
|
||||||
await this.db.updateEntity('user', client.user)
|
await this.db.updateEntity('user', client.user)
|
||||||
|
|
||||||
// This audiobook progress is out of date, why?
|
|
||||||
// var userAudiobook = client.user.getAudiobookJSON(progressPayload.audiobookId)
|
|
||||||
// Logger.debug(`[Server] Emitting audiobook progress update to clients ${this.getClientsForUser(client.user.id).length}: ${JSON.stringify(userAudiobook)}`)
|
|
||||||
|
|
||||||
this.clientEmitter(client.user.id, 'current_user_audiobook_update', {
|
this.clientEmitter(client.user.id, 'current_user_audiobook_update', {
|
||||||
id: progressPayload.audiobookId,
|
id: progressPayload.audiobookId,
|
||||||
data: audiobookProgress || null
|
data: audiobookProgress || null
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
const Logger = require('../Logger')
|
const Logger = require('../Logger')
|
||||||
const AudiobookProgress = require('./AudiobookProgress')
|
const UserAudiobookData = require('./UserAudiobookData')
|
||||||
|
|
||||||
class User {
|
class User {
|
||||||
constructor(user) {
|
constructor(user) {
|
||||||
@ -141,7 +141,7 @@ class User {
|
|||||||
this.audiobooks = {}
|
this.audiobooks = {}
|
||||||
for (const key in user.audiobooks) {
|
for (const key in user.audiobooks) {
|
||||||
if (user.audiobooks[key]) {
|
if (user.audiobooks[key]) {
|
||||||
this.audiobooks[key] = new AudiobookProgress(user.audiobooks[key])
|
this.audiobooks[key] = new UserAudiobookData(user.audiobooks[key])
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -201,21 +201,21 @@ class User {
|
|||||||
updateAudiobookProgressFromStream(stream) {
|
updateAudiobookProgressFromStream(stream) {
|
||||||
if (!this.audiobooks) this.audiobooks = {}
|
if (!this.audiobooks) this.audiobooks = {}
|
||||||
if (!this.audiobooks[stream.audiobookId]) {
|
if (!this.audiobooks[stream.audiobookId]) {
|
||||||
this.audiobooks[stream.audiobookId] = new AudiobookProgress()
|
this.audiobooks[stream.audiobookId] = new UserAudiobookData()
|
||||||
}
|
}
|
||||||
this.audiobooks[stream.audiobookId].updateFromStream(stream)
|
this.audiobooks[stream.audiobookId].updateProgressFromStream(stream)
|
||||||
return this.audiobooks[stream.audiobookId]
|
return this.audiobooks[stream.audiobookId]
|
||||||
}
|
}
|
||||||
|
|
||||||
updateAudiobookProgress(audiobook, updatePayload) {
|
updateAudiobookData(audiobook, updatePayload) {
|
||||||
if (!this.audiobooks) this.audiobooks = {}
|
if (!this.audiobooks) this.audiobooks = {}
|
||||||
if (!this.audiobooks[audiobook.id]) {
|
if (!this.audiobooks[audiobook.id]) {
|
||||||
this.audiobooks[audiobook.id] = new AudiobookProgress()
|
this.audiobooks[audiobook.id] = new UserAudiobookData()
|
||||||
this.audiobooks[audiobook.id].audiobookId = audiobook.id
|
this.audiobooks[audiobook.id].audiobookId = audiobook.id
|
||||||
}
|
}
|
||||||
var wasUpdated = this.audiobooks[audiobook.id].update(updatePayload)
|
var wasUpdated = this.audiobooks[audiobook.id].update(updatePayload)
|
||||||
if (wasUpdated) {
|
if (wasUpdated) {
|
||||||
Logger.debug(`[User] Audiobook progress was updated ${JSON.stringify(this.audiobooks[audiobook.id])}`)
|
Logger.debug(`[User] UserAudiobookData was updated ${JSON.stringify(this.audiobooks[audiobook.id])}`)
|
||||||
return this.audiobooks[audiobook.id]
|
return this.audiobooks[audiobook.id]
|
||||||
}
|
}
|
||||||
return false
|
return false
|
||||||
@ -251,7 +251,7 @@ class User {
|
|||||||
if (!this.audiobooks || !this.audiobooks[audiobook.id]) {
|
if (!this.audiobooks || !this.audiobooks[audiobook.id]) {
|
||||||
return false
|
return false
|
||||||
}
|
}
|
||||||
return this.updateAudiobookProgress(audiobook, {
|
return this.updateAudiobookData(audiobook, {
|
||||||
progress: 0,
|
progress: 0,
|
||||||
currentTime: 0,
|
currentTime: 0,
|
||||||
isRead: false,
|
isRead: false,
|
||||||
@ -261,7 +261,7 @@ class User {
|
|||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
deleteAudiobookProgress(audiobookId) {
|
deleteAudiobookData(audiobookId) {
|
||||||
if (!this.audiobooks || !this.audiobooks[audiobookId]) {
|
if (!this.audiobooks || !this.audiobooks[audiobookId]) {
|
||||||
return false
|
return false
|
||||||
}
|
}
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
const Logger = require('../Logger')
|
const Logger = require('../Logger')
|
||||||
const AudioBookmark = require('./AudioBookmark')
|
const AudioBookmark = require('./AudioBookmark')
|
||||||
|
|
||||||
class AudiobookProgress {
|
class UserAudiobookData {
|
||||||
constructor(progress) {
|
constructor(progress) {
|
||||||
this.audiobookId = null
|
this.audiobookId = null
|
||||||
|
|
||||||
@ -24,7 +24,7 @@ class AudiobookProgress {
|
|||||||
if (!this.bookmarks) return []
|
if (!this.bookmarks) return []
|
||||||
return this.bookmarks.filter((b) => {
|
return this.bookmarks.filter((b) => {
|
||||||
if (!b.toJSON) {
|
if (!b.toJSON) {
|
||||||
Logger.error(`[AudiobookProgress] Invalid bookmark ${JSON.stringify(b)}`)
|
Logger.error(`[UserAudiobookData] Invalid bookmark ${JSON.stringify(b)}`)
|
||||||
return false
|
return false
|
||||||
}
|
}
|
||||||
return true
|
return true
|
||||||
@ -61,7 +61,7 @@ class AudiobookProgress {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
updateFromStream(stream) {
|
updateProgressFromStream(stream) {
|
||||||
this.audiobookId = stream.audiobookId
|
this.audiobookId = stream.audiobookId
|
||||||
this.totalDuration = stream.totalDuration
|
this.totalDuration = stream.totalDuration
|
||||||
this.progress = stream.clientProgress
|
this.progress = stream.clientProgress
|
||||||
@ -86,7 +86,7 @@ class AudiobookProgress {
|
|||||||
|
|
||||||
update(payload) {
|
update(payload) {
|
||||||
var hasUpdates = false
|
var hasUpdates = false
|
||||||
Logger.debug(`[AudiobookProgress] Update called ${JSON.stringify(payload)}`)
|
Logger.debug(`[UserAudiobookData] Update called ${JSON.stringify(payload)}`)
|
||||||
for (const key in payload) {
|
for (const key in payload) {
|
||||||
if (payload[key] !== this[key]) {
|
if (payload[key] !== this[key]) {
|
||||||
if (key === 'isRead') {
|
if (key === 'isRead') {
|
||||||
@ -135,4 +135,4 @@ class AudiobookProgress {
|
|||||||
this.bookmarks = this.bookmarks.filter(bm => bm.time !== time)
|
this.bookmarks = this.bookmarks.filter(bm => bm.time !== time)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
module.exports = AudiobookProgress
|
module.exports = UserAudiobookData
|
Loading…
Reference in New Issue
Block a user