diff --git a/app/src/main/java/com/nuvio/tv/data/repository/TraktProgressService.kt b/app/src/main/java/com/nuvio/tv/data/repository/TraktProgressService.kt index 13e86ef5..8c908d6f 100644 --- a/app/src/main/java/com/nuvio/tv/data/repository/TraktProgressService.kt +++ b/app/src/main/java/com/nuvio/tv/data/repository/TraktProgressService.kt @@ -360,9 +360,13 @@ class TraktProgressService @Inject constructor( traktApi.addHistory(authHeader, body) } ?: throw IllegalStateException("Trakt request failed") - if (!response.isSuccessful || !hasSuccessfulHistoryAdd(response.body())) { + val responseBody = response.body() + if (!response.isSuccessful || hasHistoryAddNotFound(responseBody)) { throw IllegalStateException("Failed to mark watched on Trakt (${response.code()})") } + if (!hasSuccessfulHistoryAdd(responseBody)) { + trace("markAsWatched: Trakt accepted request with no new history rows (code=${response.code()})") + } if (progress.contentType.equals("movie", ignoreCase = true)) { setMovieWatchedInCache(progress.contentId, watched = true) @@ -1082,6 +1086,14 @@ class TraktProgressService @Inject constructor( return addedCount > 0 } + private fun hasHistoryAddNotFound(body: TraktHistoryAddResponseDto?): Boolean { + val notFound = body?.notFound ?: return false + return !notFound.movies.isNullOrEmpty() || + !notFound.shows.isNullOrEmpty() || + !notFound.seasons.isNullOrEmpty() || + !notFound.episodes.isNullOrEmpty() + } + private fun buildHistoryAddRequest( progress: WatchProgress, title: String?,