Update:syncLocalMediaProgress API response payload

This commit is contained in:
advplyr 2023-01-28 14:46:01 -06:00
parent 49279430fc
commit f83dd29213
2 changed files with 13 additions and 7 deletions

View File

@ -192,7 +192,8 @@ class MeController {
} }
const updatedLocalMediaProgress = [] const updatedLocalMediaProgress = []
var numServerProgressUpdates = 0 var numServerProgressUpdates = 0
var localMediaProgress = req.body.localMediaProgress || [] const updatedServerMediaProgress = []
const localMediaProgress = req.body.localMediaProgress || []
localMediaProgress.forEach(localProgress => { localMediaProgress.forEach(localProgress => {
if (!localProgress.libraryItemId) { if (!localProgress.libraryItemId) {
@ -205,18 +206,22 @@ class MeController {
return return
} }
var mediaProgress = req.user.getMediaProgress(localProgress.libraryItemId, localProgress.episodeId) let mediaProgress = req.user.getMediaProgress(localProgress.libraryItemId, localProgress.episodeId)
if (!mediaProgress) { if (!mediaProgress) {
// New media progress from mobile // New media progress from mobile
Logger.debug(`[MeController] syncLocalMediaProgress local progress is new - creating ${localProgress.id}`) Logger.debug(`[MeController] syncLocalMediaProgress local progress is new - creating ${localProgress.id}`)
req.user.createUpdateMediaProgress(libraryItem, localProgress, localProgress.episodeId) req.user.createUpdateMediaProgress(libraryItem, localProgress, localProgress.episodeId)
mediaProgress = req.user.getMediaProgress(localProgress.libraryItemId, localProgress.episodeId)
updatedServerMediaProgress.push(mediaProgress)
numServerProgressUpdates++ numServerProgressUpdates++
} else if (mediaProgress.lastUpdate < localProgress.lastUpdate) { } else if (mediaProgress.lastUpdate < localProgress.lastUpdate) {
Logger.debug(`[MeController] syncLocalMediaProgress local progress is more recent - updating ${mediaProgress.id}`) Logger.debug(`[MeController] syncLocalMediaProgress local progress is more recent - updating ${mediaProgress.id}`)
req.user.createUpdateMediaProgress(libraryItem, localProgress, localProgress.episodeId) req.user.createUpdateMediaProgress(libraryItem, localProgress, localProgress.episodeId)
mediaProgress = req.user.getMediaProgress(localProgress.libraryItemId, localProgress.episodeId)
updatedServerMediaProgress.push(mediaProgress)
numServerProgressUpdates++ numServerProgressUpdates++
} else if (mediaProgress.lastUpdate > localProgress.lastUpdate) { } else if (mediaProgress.lastUpdate > localProgress.lastUpdate) {
var updateTimeDifference = mediaProgress.lastUpdate - localProgress.lastUpdate const updateTimeDifference = mediaProgress.lastUpdate - localProgress.lastUpdate
Logger.debug(`[MeController] syncLocalMediaProgress server progress is more recent by ${updateTimeDifference}ms - ${mediaProgress.id}`) Logger.debug(`[MeController] syncLocalMediaProgress server progress is more recent by ${updateTimeDifference}ms - ${mediaProgress.id}`)
for (const key in localProgress) { for (const key in localProgress) {
@ -240,7 +245,8 @@ class MeController {
res.json({ res.json({
numServerProgressUpdates, numServerProgressUpdates,
localProgressUpdates: updatedLocalMediaProgress localProgressUpdates: updatedLocalMediaProgress, // Array of LocalMediaProgress that were updated from server (server more recent)
serverProgressUpdates: updatedServerMediaProgress // Array of MediaProgress that made updates to server (local more recent)
}) })
} }

View File

@ -314,18 +314,18 @@ class User {
} }
createUpdateMediaProgress(libraryItem, updatePayload, episodeId = null) { createUpdateMediaProgress(libraryItem, updatePayload, episodeId = null) {
var itemProgress = this.mediaProgress.find(li => { const itemProgress = this.mediaProgress.find(li => {
if (episodeId && li.episodeId !== episodeId) return false if (episodeId && li.episodeId !== episodeId) return false
return li.libraryItemId === libraryItem.id return li.libraryItemId === libraryItem.id
}) })
if (!itemProgress) { if (!itemProgress) {
var newItemProgress = new MediaProgress() const newItemProgress = new MediaProgress()
newItemProgress.setData(libraryItem.id, updatePayload, episodeId) newItemProgress.setData(libraryItem.id, updatePayload, episodeId)
this.mediaProgress.push(newItemProgress) this.mediaProgress.push(newItemProgress)
return true return true
} }
var wasUpdated = itemProgress.update(updatePayload) const wasUpdated = itemProgress.update(updatePayload)
if (updatePayload.lastUpdate) itemProgress.lastUpdate = updatePayload.lastUpdate // For local to keep update times in sync if (updatePayload.lastUpdate) itemProgress.lastUpdate = updatePayload.lastUpdate // For local to keep update times in sync
return wasUpdated return wasUpdated