diff --git a/data/api/trakt/src/main/java/io/filmtime/data/api/trakt/TraktSearchRemoteSource.kt b/data/api/trakt/src/main/java/io/filmtime/data/api/trakt/TraktSearchRemoteSource.kt index 1a22cd87..87de52b0 100644 --- a/data/api/trakt/src/main/java/io/filmtime/data/api/trakt/TraktSearchRemoteSource.kt +++ b/data/api/trakt/src/main/java/io/filmtime/data/api/trakt/TraktSearchRemoteSource.kt @@ -12,5 +12,5 @@ enum class TmdbType { interface TraktSearchRemoteSource { - suspend fun getByTmdbId(id: String, type: TmdbType? = null): Result + suspend fun getByTmdbId(id: Int, type: TmdbType? = null): Result } diff --git a/data/api/trakt/src/main/java/io/filmtime/data/api/trakt/TraktSearchRemoteSourceImpl.kt b/data/api/trakt/src/main/java/io/filmtime/data/api/trakt/TraktSearchRemoteSourceImpl.kt index 18d0f8d7..ae6135be 100644 --- a/data/api/trakt/src/main/java/io/filmtime/data/api/trakt/TraktSearchRemoteSourceImpl.kt +++ b/data/api/trakt/src/main/java/io/filmtime/data/api/trakt/TraktSearchRemoteSourceImpl.kt @@ -9,7 +9,8 @@ import javax.inject.Inject class TraktSearchRemoteSourceImpl @Inject constructor( private val traktIDLookupService: TraktSearchService, ) : TraktSearchRemoteSource { - override suspend fun getByTmdbId(id: String, type: TmdbType?): Result { + + override suspend fun getByTmdbId(id: Int, type: TmdbType?): Result { return when (val result = traktIDLookupService.movieIDLookup(idType = "tmdb", id = id)) { is NetworkResponse.ApiError -> { val errorResponse = result.body @@ -18,7 +19,7 @@ class TraktSearchRemoteSourceImpl @Inject constructor( is NetworkResponse.NetworkError -> Result.Failure(GeneralError.NetworkError) is NetworkResponse.Success -> { val body = result.body ?: emptyList() - val movieItemId = body.find { it.movie.ids.tmdb == id.toLong() }?.movie?.ids?.trakt ?: -1 + val movieItemId = body.find { it.movie.ids.tmdb == id }?.movie?.ids?.trakt ?: -1 return Result.Success(movieItemId) } diff --git a/data/api/trakt/src/main/java/io/filmtime/data/api/trakt/TraktSyncRemoteSource.kt b/data/api/trakt/src/main/java/io/filmtime/data/api/trakt/TraktSyncRemoteSource.kt index 20579979..ed2b4bca 100644 --- a/data/api/trakt/src/main/java/io/filmtime/data/api/trakt/TraktSyncRemoteSource.kt +++ b/data/api/trakt/src/main/java/io/filmtime/data/api/trakt/TraktSyncRemoteSource.kt @@ -7,7 +7,7 @@ interface TraktSyncRemoteSource { suspend fun getAllHistories(): Result - suspend fun getHistoryById(id: String): Result + suspend fun getHistoryById(id: Int): Result - suspend fun addToHistory(id: String): Result + suspend fun addToHistory(id: Int): Result } diff --git a/data/api/trakt/src/main/java/io/filmtime/data/api/trakt/TraktSyncRemoteSourceImpl.kt b/data/api/trakt/src/main/java/io/filmtime/data/api/trakt/TraktSyncRemoteSourceImpl.kt index 939d0c46..416268b8 100644 --- a/data/api/trakt/src/main/java/io/filmtime/data/api/trakt/TraktSyncRemoteSourceImpl.kt +++ b/data/api/trakt/src/main/java/io/filmtime/data/api/trakt/TraktSyncRemoteSourceImpl.kt @@ -31,7 +31,7 @@ class TraktSyncRemoteSourceImpl } } - override suspend fun getHistoryById(id: String): Result { + override suspend fun getHistoryById(id: Int): Result { // TODO: move check token in a function val tokens = traktAuthLocalSource.tokens.firstOrNull() ?: return Result.Failure(GeneralError.ApiError("Unauthorized", 401)) @@ -45,13 +45,13 @@ class TraktSyncRemoteSourceImpl is NetworkResponse.NetworkError -> Result.Failure(GeneralError.NetworkError) is NetworkResponse.UnknownError -> Result.Failure(GeneralError.UnknownError(result.error)) is NetworkResponse.Success -> { - val watched = result.body?.any { it.movie.ids.trakt == id.toLong() } ?: false + val watched = result.body?.any { it.movie.ids.trakt == id } ?: false Result.Success(watched) } } } - override suspend fun addToHistory(id: String): Result { + override suspend fun addToHistory(id: Int): Result { val tokens = traktAuthLocalSource.tokens.firstOrNull() ?: return Result.Failure(GeneralError.ApiError("Unauthorized", 401)) val result = traktSyncService.addMovieToHistory( @@ -60,7 +60,7 @@ class TraktSyncRemoteSourceImpl movies = listOf( MovieHistory( ids = HistoryIDS( - trakt = id.toLong(), + trakt = id, ), ), ), diff --git a/data/network/src/main/java/io/filmtime/data/network/trakt/AddHistoryRequest.kt b/data/network/src/main/java/io/filmtime/data/network/trakt/AddHistoryRequest.kt index b95dba99..cd96dfc2 100644 --- a/data/network/src/main/java/io/filmtime/data/network/trakt/AddHistoryRequest.kt +++ b/data/network/src/main/java/io/filmtime/data/network/trakt/AddHistoryRequest.kt @@ -20,10 +20,10 @@ data class MovieHistory( @Serializable data class HistoryIDS( - val trakt: Long? = null, - val tvdb: Long? = null, + val trakt: Int? = null, + val tvdb: Int? = null, val imdb: String? = null, - val tmdb: Long? = null, + val tmdb: Int? = null, val slug: String? = null, ) diff --git a/data/network/src/main/java/io/filmtime/data/network/trakt/TraktMovieIDLookupResponse.kt b/data/network/src/main/java/io/filmtime/data/network/trakt/TraktMovieIDLookupResponse.kt index b79b1435..db5afe01 100644 --- a/data/network/src/main/java/io/filmtime/data/network/trakt/TraktMovieIDLookupResponse.kt +++ b/data/network/src/main/java/io/filmtime/data/network/trakt/TraktMovieIDLookupResponse.kt @@ -18,8 +18,8 @@ data class Movie( @Serializable data class IDS( - val trakt: Long, + val trakt: Int, val slug: String, val imdb: String, - val tmdb: Long, + val tmdb: Int, ) diff --git a/data/network/src/main/java/io/filmtime/data/network/trakt/TraktSearchService.kt b/data/network/src/main/java/io/filmtime/data/network/trakt/TraktSearchService.kt index afb02d29..5e5b8a3a 100644 --- a/data/network/src/main/java/io/filmtime/data/network/trakt/TraktSearchService.kt +++ b/data/network/src/main/java/io/filmtime/data/network/trakt/TraktSearchService.kt @@ -9,6 +9,6 @@ interface TraktSearchService { @GET("search/{id_type}/{id}?type=movie") suspend fun movieIDLookup( @Path("id_type") idType: String, - @Path("id") id: String, + @Path("id") id: Int, ): NetworkResponse, TraktErrorResponse> } diff --git a/data/network/src/main/java/io/filmtime/data/network/trakt/TraktSyncService.kt b/data/network/src/main/java/io/filmtime/data/network/trakt/TraktSyncService.kt index 581f014d..5a47b1e0 100644 --- a/data/network/src/main/java/io/filmtime/data/network/trakt/TraktSyncService.kt +++ b/data/network/src/main/java/io/filmtime/data/network/trakt/TraktSyncService.kt @@ -6,6 +6,7 @@ import retrofit2.http.GET import retrofit2.http.Header import retrofit2.http.POST import retrofit2.http.Path +import retrofit2.http.Query interface TraktSyncService { @@ -18,8 +19,9 @@ interface TraktSyncService { @GET("sync/history/{type}/{id}") suspend fun getHistoryById( @Path("type") type: String, - @Path("id") id: String, + @Path("id") id: Int, @Header("Authorization") accessToken: String, + @Query("limit") limit: Int = 240, ): NetworkResponse, TraktErrorResponse> @POST("sync/history") diff --git a/data/tmdb-movies/src/main/java/io/fimltime/data/tmdb/movies/TmdbMovieRepositoryImpl.kt b/data/tmdb-movies/src/main/java/io/fimltime/data/tmdb/movies/TmdbMovieRepositoryImpl.kt index b6d7adef..1b958d17 100644 --- a/data/tmdb-movies/src/main/java/io/fimltime/data/tmdb/movies/TmdbMovieRepositoryImpl.kt +++ b/data/tmdb-movies/src/main/java/io/fimltime/data/tmdb/movies/TmdbMovieRepositoryImpl.kt @@ -41,11 +41,11 @@ internal class TmdbMovieRepositoryImpl @Inject constructor( is Result.Failure -> result is Result.Success -> { movieDao.storeMovie(result.data.toEntity()) - when (val traktIdResult = traktMovieSearchRemoteSource.getByTmdbId(result.data.ids.tmdbId.toString())) { + when (val traktIdResult = traktMovieSearchRemoteSource.getByTmdbId(result.data.ids.tmdbId!!)) { is Result.Failure -> result is Result.Success -> { - val traktId = traktIdResult.data.toInt() - when (val watched = traktSyncRemoteSource.getHistoryById(traktId.toString())) { + val traktId = traktIdResult.data + when (val watched = traktSyncRemoteSource.getHistoryById(traktId)) { is Result.Failure -> result.run { copy( data = data.copy( diff --git a/data/trakt/src/main/java/io/filmtime/data/trakt/TraktHistoryRepository.kt b/data/trakt/src/main/java/io/filmtime/data/trakt/TraktHistoryRepository.kt index d14ce6dd..71507182 100644 --- a/data/trakt/src/main/java/io/filmtime/data/trakt/TraktHistoryRepository.kt +++ b/data/trakt/src/main/java/io/filmtime/data/trakt/TraktHistoryRepository.kt @@ -5,5 +5,5 @@ import io.filmtime.data.model.Result interface TraktHistoryRepository { - suspend fun addToHistory(id: String): Result + suspend fun addToHistory(traktId: Int): Result } diff --git a/data/trakt/src/main/java/io/filmtime/data/trakt/TraktHistoryRepositoryImpl.kt b/data/trakt/src/main/java/io/filmtime/data/trakt/TraktHistoryRepositoryImpl.kt index c6a890bb..49cf0f60 100644 --- a/data/trakt/src/main/java/io/filmtime/data/trakt/TraktHistoryRepositoryImpl.kt +++ b/data/trakt/src/main/java/io/filmtime/data/trakt/TraktHistoryRepositoryImpl.kt @@ -8,7 +8,8 @@ import javax.inject.Inject class TraktHistoryRepositoryImpl @Inject constructor( private val traktSyncRemoteSource: TraktSyncRemoteSource, ) : TraktHistoryRepository { - override suspend fun addToHistory(id: String): Result { - return traktSyncRemoteSource.addToHistory(id) + + override suspend fun addToHistory(traktId: Int): Result { + return traktSyncRemoteSource.addToHistory(traktId) } }