Skip to content

Commit 2bf0088

Browse files
committed
TraktTools4: add helpers to get show watchlist, watched/collection list
1 parent 0e37cb7 commit 2bf0088

File tree

1 file changed

+34
-12
lines changed

1 file changed

+34
-12
lines changed

app/src/main/java/com/battlelancer/seriesguide/traktapi/TraktTools4.kt

Lines changed: 34 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -3,18 +3,19 @@
33

44
package com.battlelancer.seriesguide.traktapi
55

6+
import com.battlelancer.seriesguide.traktapi.TraktTools4.awaitTraktCall
67
import com.battlelancer.seriesguide.util.Errors
78
import com.uwetrottmann.trakt5.TraktV2
89
import com.uwetrottmann.trakt5.entities.AddNoteRequest
910
import com.uwetrottmann.trakt5.entities.BaseShow
1011
import com.uwetrottmann.trakt5.entities.Note
1112
import com.uwetrottmann.trakt5.entities.Show
1213
import com.uwetrottmann.trakt5.entities.ShowIds
14+
import com.uwetrottmann.trakt5.enums.Extended
1315
import com.uwetrottmann.trakt5.services.Notes
1416
import com.uwetrottmann.trakt5.services.Sync
1517
import retrofit2.Call
1618
import retrofit2.awaitResponse
17-
import kotlin.collections.set
1819

1920
/**
2021
* Uses response classes inheriting from a Kotlin sealed interface.
@@ -48,31 +49,39 @@ object TraktTools4 {
4849
class Other<T> : TraktResponse<T>, TraktNonNullResponse<T>
4950
}
5051

51-
suspend fun getWatchedShowsByTmdbId(
52-
traktSync: Sync
53-
): TraktNonNullResponse<Map<Int, BaseShow>> {
54-
val response = awaitTraktCallNonNull(
55-
traktSync.watchedShows(null),
52+
suspend fun getWatchedShows(
53+
traktSync: Sync,
54+
noSeasons: Boolean
55+
): TraktNonNullResponse<List<BaseShow>> {
56+
return awaitTraktCallNonNull(
57+
traktSync.watchedShows(if (noSeasons) Extended.NOSEASONS else null),
5658
"get watched shows",
5759
reportIsNotVip = true // Should work even if not VIP
5860
)
61+
}
5962

63+
suspend fun getWatchedShowsByTmdbId(
64+
traktSync: Sync
65+
): TraktNonNullResponse<Map<Int, BaseShow>> {
66+
val response = getWatchedShows(traktSync, noSeasons = false)
6067
return mapResponseData(response) { mapByTmdbId(it) }
6168
}
6269

63-
/**
64-
* Get collected shows mapped by their TMDB ID.
65-
*/
66-
suspend fun getCollectedShowsByTmdbId(
70+
suspend fun getCollectedShows(
6771
traktSync: Sync
68-
): TraktNonNullResponse<Map<Int, BaseShow>> {
69-
val response = fetchAllPages(
72+
): TraktNonNullResponse<List<BaseShow>> {
73+
return fetchAllPages(
7074
action = "get collected shows",
7175
reportIsNotVip = true // Should work even if not VIP
7276
) { page ->
7377
traktSync.collectionShows(page, 1000, null)
7478
}
79+
}
7580

81+
suspend fun getCollectedShowsByTmdbId(
82+
traktSync: Sync
83+
): TraktNonNullResponse<Map<Int, BaseShow>> {
84+
val response = getCollectedShows(traktSync)
7685
return mapResponseData(response) { mapByTmdbId(it) }
7786
}
7887

@@ -106,6 +115,7 @@ object TraktTools4 {
106115
totalPageCount = response.pageCount
107116
currentPage++
108117
}
118+
109119
is TraktErrorResponse.IsNotVip -> return TraktErrorResponse.IsNotVip()
110120
is TraktErrorResponse.IsUnauthorized -> return TraktErrorResponse.IsUnauthorized()
111121
is TraktErrorResponse.IsAccountLimitExceeded -> return TraktErrorResponse.IsAccountLimitExceeded()
@@ -128,6 +138,17 @@ object TraktTools4 {
128138
return traktShowsMap
129139
}
130140

141+
suspend fun getShowsOnWatchlist(
142+
traktSync: Sync
143+
): TraktNonNullResponse<List<BaseShow>> {
144+
return awaitTraktCallNonNull(
145+
// Use Extended.FULL to get show metadata
146+
traktSync.watchlistShows(Extended.FULL),
147+
"get shows on watchlist",
148+
reportIsNotVip = true // Should work even if not VIP
149+
)
150+
}
151+
131152
/**
132153
* Adds or updates the note for the given show.
133154
*
@@ -256,6 +277,7 @@ object TraktTools4 {
256277
transform(response.data),
257278
response.pageCount
258279
)
280+
259281
is TraktErrorResponse.IsNotVip -> TraktErrorResponse.IsNotVip()
260282
is TraktErrorResponse.IsUnauthorized -> TraktErrorResponse.IsUnauthorized()
261283
is TraktErrorResponse.IsAccountLimitExceeded -> TraktErrorResponse.IsAccountLimitExceeded()

0 commit comments

Comments
 (0)