mirror of
https://github.com/owenlejeune/TVTime.git
synced 2025-11-08 04:32:43 -05:00
replace tv credits with aggregate credits API
This commit is contained in:
@@ -1,9 +1,10 @@
|
||||
package com.owenlejeune.tvtime.api.tmdb.api.v3.model
|
||||
|
||||
import com.google.gson.annotations.SerializedName
|
||||
import java.util.Date
|
||||
|
||||
class BaseEpisode(
|
||||
@SerializedName("air_date") val airDate: String,
|
||||
@SerializedName("air_date") val airDate: Date?,
|
||||
@SerializedName("episode_number") val episodeNumber: Int,
|
||||
@SerializedName("id") val id: Int,
|
||||
@SerializedName("name") val name: String,
|
||||
|
||||
@@ -1,10 +1,11 @@
|
||||
package com.owenlejeune.tvtime.api.tmdb.api.v3.model
|
||||
|
||||
import com.google.gson.annotations.SerializedName
|
||||
import java.util.Date
|
||||
|
||||
data class BaseSeason(
|
||||
@SerializedName("id") val id: Int,
|
||||
@SerializedName("air_date") val airDate: String,
|
||||
@SerializedName("air_date") val airDate: Date?,
|
||||
@SerializedName("episode_count") val episodeCount: Int,
|
||||
@SerializedName("name") val name: String,
|
||||
@SerializedName("overview") val overview: String,
|
||||
|
||||
@@ -26,7 +26,7 @@ abstract class CreditMedia(
|
||||
@SerializedName("media_type") val mediaType: MediaViewType,
|
||||
@SerializedName("genre_ids") val genreIds: List<Int>,
|
||||
@SerializedName("popularity") val popularity: Float,
|
||||
@SerializedName("release_date", alternate = ["first_air_date"]) val releaseDate: Date,
|
||||
@SerializedName("release_date", alternate = ["first_air_date"]) val releaseDate: Date?,
|
||||
@SerializedName("vote_average") val voteAverage: Float,
|
||||
@SerializedName("vote_count") val voteCount: Int,
|
||||
@SerializedName("character") val character: String
|
||||
@@ -73,7 +73,7 @@ class CreditTv(
|
||||
MediaViewType.TV, genreIds, popularity, releaseDate, voteAverage, voteCount, character)
|
||||
|
||||
class CreditEpisode(
|
||||
@SerializedName("air_date") val airDate: Date,
|
||||
@SerializedName("air_date") val airDate: Date?,
|
||||
@SerializedName("episode_number") val episodeNumber: Int,
|
||||
@SerializedName("id") val id: Int,
|
||||
@SerializedName("name") val name: String,
|
||||
@@ -86,7 +86,7 @@ class CreditEpisode(
|
||||
)
|
||||
|
||||
class CreditSeason(
|
||||
@SerializedName("air_date") val airDate: Date,
|
||||
@SerializedName("air_date") val airDate: Date?,
|
||||
@SerializedName("episode_count") val episodeCount: Int,
|
||||
@SerializedName("id") val id: Int,
|
||||
@SerializedName("name") val name: String,
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
package com.owenlejeune.tvtime.api.tmdb.api.v3.model
|
||||
|
||||
import com.google.gson.annotations.SerializedName
|
||||
import java.util.Date
|
||||
|
||||
class DetailedMovie(
|
||||
id: Int,
|
||||
@@ -21,7 +22,7 @@ class DetailedMovie(
|
||||
spokenLanguages: List<SpokenLanguage>,
|
||||
@SerializedName("adult") val isAdult: Boolean,
|
||||
@SerializedName("budget") val budget: Int,
|
||||
@SerializedName("release_date") val releaseDate: String,
|
||||
@SerializedName("release_date") val releaseDate: Date?,
|
||||
@SerializedName("revenue") val revenue: Long,
|
||||
@SerializedName("runtime") val runtime: Int?,
|
||||
@SerializedName("imdb_id") val imdbId: String?,
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
package com.owenlejeune.tvtime.api.tmdb.api.v3.model
|
||||
|
||||
import com.google.gson.annotations.SerializedName
|
||||
import java.util.Date
|
||||
|
||||
class DetailedTv(
|
||||
id: Int,
|
||||
@@ -20,8 +21,8 @@ class DetailedTv(
|
||||
popularity: Float,
|
||||
spokenLanguages: List<SpokenLanguage>,
|
||||
@SerializedName("created_by") val createdBy: List<Person>,
|
||||
@SerializedName("first_air_date") val firstAirDate: String,
|
||||
@SerializedName("last_air_date") val lastAirDate: String,
|
||||
@SerializedName("first_air_date") val firstAirDate: Date?,
|
||||
@SerializedName("last_air_date") val lastAirDate: Date?,
|
||||
@SerializedName("in_production") val inProduction: Boolean,
|
||||
@SerializedName("networks") val networks: List<Network>,
|
||||
@SerializedName("number_of_episodes") val numberOfEpisodes: Int,
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
package com.owenlejeune.tvtime.api.tmdb.api.v3.model
|
||||
|
||||
import com.google.gson.annotations.SerializedName
|
||||
import java.util.Date
|
||||
|
||||
abstract class FavoriteMedia(
|
||||
@SerializedName("poster_path") val posterPath: String?,
|
||||
@@ -9,7 +10,7 @@ abstract class FavoriteMedia(
|
||||
@SerializedName("backdrop_path") val backdropPath: String?,
|
||||
@SerializedName("vote_average") val voteAverage: Float,
|
||||
@SerializedName("overview") val overview: String,
|
||||
@SerializedName("release_date", alternate = ["first_air_date"]) val releaseDate: String,
|
||||
@SerializedName("release_date", alternate = ["first_air_date"]) val releaseDate: Date?,
|
||||
@SerializedName("genre_ids") val genreIds: List<Int>,
|
||||
@SerializedName("original_language") val originalLanguage: String,
|
||||
@SerializedName("vote_count") val voteCount: Int,
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
package com.owenlejeune.tvtime.api.tmdb.api.v3.model
|
||||
|
||||
import com.google.gson.annotations.SerializedName
|
||||
import java.util.Date
|
||||
|
||||
class FavoriteMovie(
|
||||
posterPath: String?,
|
||||
@@ -9,7 +10,7 @@ class FavoriteMovie(
|
||||
backdropPath: String?,
|
||||
voteAverage: Float,
|
||||
overview: String,
|
||||
releaseDate: String,
|
||||
releaseDate: Date?,
|
||||
genreIds: List<Int>,
|
||||
originalLanguage: String,
|
||||
voteCount: Int,
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
package com.owenlejeune.tvtime.api.tmdb.api.v3.model
|
||||
|
||||
import com.google.gson.annotations.SerializedName
|
||||
import java.util.Date
|
||||
|
||||
class FavoriteTvSeries(
|
||||
posterPath: String?,
|
||||
@@ -9,7 +10,7 @@ class FavoriteTvSeries(
|
||||
backdropPath: String?,
|
||||
voteAverage: Float,
|
||||
overview: String,
|
||||
releaseDate: String,
|
||||
releaseDate: Date?,
|
||||
genreIds: List<Int>,
|
||||
originalLanguage: String,
|
||||
voteCount: Int,
|
||||
|
||||
@@ -2,10 +2,11 @@ package com.owenlejeune.tvtime.api.tmdb.api.v3.model
|
||||
|
||||
import com.google.gson.annotations.SerializedName
|
||||
import com.owenlejeune.tvtime.utils.types.MediaViewType
|
||||
import java.util.Date
|
||||
|
||||
abstract class KnownFor(
|
||||
@SerializedName("backdrop_path") val backdropPath: String?,
|
||||
@SerializedName("release_date", alternate = ["first_air_date"]) val releaseDate: String,
|
||||
@SerializedName("release_date", alternate = ["first_air_date"]) val releaseDate: Date?,
|
||||
@SerializedName("genre_ids") val genreIds: List<Int>,
|
||||
@SerializedName("id") val id: Int,
|
||||
@SerializedName("media_type") val mediaType: MediaViewType,
|
||||
|
||||
@@ -2,10 +2,11 @@ package com.owenlejeune.tvtime.api.tmdb.api.v3.model
|
||||
|
||||
import com.google.gson.annotations.SerializedName
|
||||
import com.owenlejeune.tvtime.utils.types.MediaViewType
|
||||
import java.util.Date
|
||||
|
||||
class KnownForMovie(
|
||||
backdropPath: String?,
|
||||
releaseDate: String,
|
||||
releaseDate: Date?,
|
||||
genreIds: List<Int>,
|
||||
id: Int,
|
||||
mediaType: MediaViewType,
|
||||
|
||||
@@ -2,10 +2,11 @@ package com.owenlejeune.tvtime.api.tmdb.api.v3.model
|
||||
|
||||
import com.google.gson.annotations.SerializedName
|
||||
import com.owenlejeune.tvtime.utils.types.MediaViewType
|
||||
import java.util.Date
|
||||
|
||||
class KnownForTv(
|
||||
backdropPath: String?,
|
||||
releaseDate: String,
|
||||
releaseDate: Date?,
|
||||
genreIds: List<Int>,
|
||||
id: Int,
|
||||
mediaType: MediaViewType,
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
package com.owenlejeune.tvtime.api.tmdb.api.v3.model
|
||||
|
||||
import com.google.gson.annotations.SerializedName
|
||||
import java.util.Date
|
||||
|
||||
data class MovieReleaseResults(
|
||||
@SerializedName("results") val releaseDates: List<ReleaseDateResult>
|
||||
@@ -13,7 +14,7 @@ data class MovieReleaseResults(
|
||||
|
||||
inner class ReleaseDate(
|
||||
@SerializedName("certification") val certification: String,
|
||||
@SerializedName("release_date") val releaseDate: String
|
||||
@SerializedName("release_date") val releaseDate: Date?
|
||||
)
|
||||
|
||||
}
|
||||
|
||||
@@ -1,12 +1,13 @@
|
||||
package com.owenlejeune.tvtime.api.tmdb.api.v3.model
|
||||
|
||||
import com.google.gson.annotations.SerializedName
|
||||
import java.util.Date
|
||||
|
||||
class Review(
|
||||
@SerializedName("id") val id: String,
|
||||
@SerializedName("author") val author: String,
|
||||
@SerializedName("author_details") val authorDetails: AuthorDetails,
|
||||
@SerializedName("content") val content: String,
|
||||
@SerializedName("created_at") val createdAt: String,
|
||||
@SerializedName("updated_at") val updatedAt: String
|
||||
@SerializedName("created_at") val createdAt: Date?,
|
||||
@SerializedName("updated_at") val updatedAt: Date?
|
||||
)
|
||||
@@ -2,12 +2,13 @@ package com.owenlejeune.tvtime.api.tmdb.api.v3.model
|
||||
|
||||
import com.google.gson.annotations.SerializedName
|
||||
import com.owenlejeune.tvtime.utils.types.MediaViewType
|
||||
import java.util.Date
|
||||
|
||||
abstract class SearchResultMedia(
|
||||
@SerializedName("overview") val overview: String,
|
||||
@SerializedName("vote_average") val voteAverage: Float,
|
||||
@SerializedName("vote_count") val voteCount: Int,
|
||||
@SerializedName("release_date", alternate = ["first_air_date", "air_date"]) val releaseDate: String,
|
||||
@SerializedName("release_date", alternate = ["first_air_date", "air_date"]) val releaseDate: Date?,
|
||||
@SerializedName("backdrop_path") val backdropPath: String?,
|
||||
@SerializedName("genre_ids") val genreIds: List<Int>,
|
||||
@SerializedName("original_language") val originalLanguage: String,
|
||||
|
||||
@@ -2,6 +2,7 @@ package com.owenlejeune.tvtime.api.tmdb.api.v3.model
|
||||
|
||||
import com.google.gson.annotations.SerializedName
|
||||
import com.owenlejeune.tvtime.utils.types.MediaViewType
|
||||
import java.util.Date
|
||||
|
||||
class SearchResultMovie(
|
||||
id: Int,
|
||||
@@ -15,7 +16,7 @@ class SearchResultMovie(
|
||||
originalName: String,
|
||||
posterPath: String?,
|
||||
popularity: Float,
|
||||
releaseDate: String,
|
||||
releaseDate: Date?,
|
||||
@SerializedName("adult") val isAdult: Boolean,
|
||||
@SerializedName("video") val video: Boolean,
|
||||
): SearchResultMedia(
|
||||
|
||||
@@ -2,6 +2,7 @@ package com.owenlejeune.tvtime.api.tmdb.api.v3.model
|
||||
|
||||
import com.google.gson.annotations.SerializedName
|
||||
import com.owenlejeune.tvtime.utils.types.MediaViewType
|
||||
import java.util.Date
|
||||
|
||||
class SearchResultTv(
|
||||
id: Int,
|
||||
@@ -15,7 +16,7 @@ class SearchResultTv(
|
||||
originalName: String,
|
||||
posterPath: String?,
|
||||
popularity: Float,
|
||||
releaseDate: String,
|
||||
releaseDate: Date?,
|
||||
@SerializedName("origin_country") val originCountry: List<String>,
|
||||
): SearchResultMedia(
|
||||
overview, voteAverage, voteCount, releaseDate, backdropPath, genreIds,
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
package com.owenlejeune.tvtime.api.tmdb.api.v3.model
|
||||
|
||||
import com.google.gson.annotations.SerializedName
|
||||
import java.util.Date
|
||||
|
||||
abstract class WatchlistMedia(
|
||||
@SerializedName("poster_path") val posterPath: String?,
|
||||
@@ -9,7 +10,7 @@ abstract class WatchlistMedia(
|
||||
@SerializedName("backdrop_path") val backdropPath: String?,
|
||||
@SerializedName("vote_average") val voteAverage: Float,
|
||||
@SerializedName("overview") val overview: String,
|
||||
@SerializedName("release_date", alternate = ["first_air_date"]) val releaseDate: String,
|
||||
@SerializedName("release_date", alternate = ["first_air_date"]) val releaseDate: Date?,
|
||||
@SerializedName("genre_ids") val genreIds: List<Int>,
|
||||
@SerializedName("original_language") val originalLanguage: String,
|
||||
@SerializedName("vote_count") val voteCount: Int,
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
package com.owenlejeune.tvtime.api.tmdb.api.v3.model
|
||||
|
||||
import com.google.gson.annotations.SerializedName
|
||||
import java.util.Date
|
||||
|
||||
class WatchlistMovie(
|
||||
posterPath: String?,
|
||||
@@ -9,7 +10,7 @@ class WatchlistMovie(
|
||||
backdropPath: String?,
|
||||
voteAverage: Float,
|
||||
overview: String,
|
||||
releaseDate: String,
|
||||
releaseDate: Date?,
|
||||
genreIds: List<Int>,
|
||||
originalLanguage: String,
|
||||
voteCount: Int,
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
package com.owenlejeune.tvtime.api.tmdb.api.v3.model
|
||||
|
||||
import com.google.gson.annotations.SerializedName
|
||||
import java.util.Date
|
||||
|
||||
class WatchlistTvSeries(
|
||||
posterPath: String?,
|
||||
@@ -9,7 +10,7 @@ class WatchlistTvSeries(
|
||||
backdropPath: String?,
|
||||
voteAverage: Float,
|
||||
overview: String,
|
||||
releaseDate: String,
|
||||
releaseDate: Date?,
|
||||
genreIds: List<Int>,
|
||||
originalLanguage: String,
|
||||
voteCount: Int,
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
package com.owenlejeune.tvtime.api.tmdb.api.v4.model
|
||||
|
||||
import com.google.gson.annotations.SerializedName
|
||||
import java.util.Date
|
||||
|
||||
class AccountList(
|
||||
@SerializedName("iso_639_1") val languageCode: String,
|
||||
@@ -10,8 +11,8 @@ class AccountList(
|
||||
@SerializedName("revenue") val revenue: String,
|
||||
@SerializedName("public") val public: Int,
|
||||
@SerializedName("name") val name: String,
|
||||
@SerializedName("updated_at") val updatedAt: String,
|
||||
@SerializedName("created_at") val createdAt: String,
|
||||
@SerializedName("updated_at") val updatedAt: Date?,
|
||||
@SerializedName("created_at") val createdAt: Date?,
|
||||
// @SerializedName("sort_by")
|
||||
@SerializedName("backdrop_path") val backdropPath: String,
|
||||
@SerializedName("runtime") val runtime: Int,
|
||||
|
||||
@@ -2,10 +2,11 @@ package com.owenlejeune.tvtime.api.tmdb.api.v4.model
|
||||
|
||||
import com.google.gson.annotations.SerializedName
|
||||
import com.owenlejeune.tvtime.utils.types.MediaViewType
|
||||
import java.util.Date
|
||||
|
||||
abstract class ListItem(
|
||||
@SerializedName("backdrop_path") val backdropPath: String?,
|
||||
@SerializedName("release_date", alternate = ["first_air_date"]) val releaseDate: String,
|
||||
@SerializedName("release_date", alternate = ["first_air_date"]) val releaseDate: Date?,
|
||||
@SerializedName("genre_ids") val genreIds: List<Int>,
|
||||
@SerializedName("id") val id: Int,
|
||||
@SerializedName("media_type") val mediaType: MediaViewType,
|
||||
|
||||
@@ -2,10 +2,11 @@ package com.owenlejeune.tvtime.api.tmdb.api.v4.model
|
||||
|
||||
import com.google.gson.annotations.SerializedName
|
||||
import com.owenlejeune.tvtime.utils.types.MediaViewType
|
||||
import java.util.Date
|
||||
|
||||
class ListMovie(
|
||||
backdropPath: String?,
|
||||
releaseDate: String,
|
||||
releaseDate: Date?,
|
||||
genreIds: List<Int>,
|
||||
id: Int,
|
||||
mediaType: MediaViewType,
|
||||
|
||||
@@ -2,10 +2,11 @@ package com.owenlejeune.tvtime.api.tmdb.api.v4.model
|
||||
|
||||
import com.google.gson.annotations.SerializedName
|
||||
import com.owenlejeune.tvtime.utils.types.MediaViewType
|
||||
import java.util.Date
|
||||
|
||||
class ListTv(
|
||||
backdropPath: String?,
|
||||
releaseDate: String,
|
||||
releaseDate: Date?,
|
||||
genreIds: List<Int>,
|
||||
id: Int,
|
||||
mediaType: MediaViewType,
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
package com.owenlejeune.tvtime.api.tmdb.api.v4.model
|
||||
|
||||
import com.google.gson.annotations.SerializedName
|
||||
import java.util.Date
|
||||
|
||||
abstract class RatedMedia(
|
||||
var type: RatedType,
|
||||
@@ -10,7 +11,7 @@ abstract class RatedMedia(
|
||||
@SerializedName("vote_average") val voteAverage: Float,
|
||||
@SerializedName("vote_count") val voteCount: Int,
|
||||
@SerializedName("account_rating") val rating: AccountRating,
|
||||
@SerializedName("release_date", alternate = ["first_air_date", "air_date"]) val releaseDate: String,
|
||||
@SerializedName("release_date", alternate = ["first_air_date", "air_date"]) val releaseDate: Date?,
|
||||
@SerializedName("backdrop_path") val backdropPath: String?,
|
||||
@SerializedName("genre_ids") val genreIds: List<Int>,
|
||||
@SerializedName("original_language") val originalLanguage: String,
|
||||
@@ -26,6 +27,6 @@ abstract class RatedMedia(
|
||||
|
||||
inner class AccountRating(
|
||||
@SerializedName("value") val value: Float,
|
||||
@SerializedName("created_at") val createdAt: String
|
||||
@SerializedName("created_at") val createdAt: Date?
|
||||
)
|
||||
}
|
||||
@@ -1,6 +1,7 @@
|
||||
package com.owenlejeune.tvtime.api.tmdb.api.v4.model
|
||||
|
||||
import com.google.gson.annotations.SerializedName
|
||||
import java.util.Date
|
||||
|
||||
class RatedMovie(
|
||||
id: Int,
|
||||
@@ -15,7 +16,7 @@ class RatedMovie(
|
||||
originalName: String,
|
||||
posterPath: String?,
|
||||
popularity: Float,
|
||||
releaseDate: String,
|
||||
releaseDate: Date?,
|
||||
@SerializedName("adult") val isAdult: Boolean,
|
||||
@SerializedName("video") val video: Boolean
|
||||
): RatedMedia(
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
package com.owenlejeune.tvtime.api.tmdb.api.v4.model
|
||||
|
||||
import com.google.gson.annotations.SerializedName
|
||||
import java.util.Date
|
||||
|
||||
class RatedTv(
|
||||
id: Int,
|
||||
@@ -15,7 +16,7 @@ class RatedTv(
|
||||
originalName: String,
|
||||
posterPath: String?,
|
||||
popularity: Float,
|
||||
releaseDate: String,
|
||||
releaseDate: Date?,
|
||||
@SerializedName("origin_country") val originCountry: List<String>,
|
||||
): RatedMedia(
|
||||
RatedType.SERIES, id, overview, name, voteAverage, voteCount, rating, releaseDate,
|
||||
|
||||
@@ -2,6 +2,7 @@ package com.owenlejeune.tvtime.api.tmdb.api.v4.model
|
||||
|
||||
import com.google.gson.annotations.SerializedName
|
||||
import com.owenlejeune.tvtime.api.tmdb.api.v3.model.TmdbItem
|
||||
import java.util.Date
|
||||
|
||||
abstract class RecommendedMedia(
|
||||
id: Int,
|
||||
@@ -25,7 +26,7 @@ abstract class RecommendedMedia(
|
||||
@SerializedName("popularity")
|
||||
val popularity: Float,
|
||||
@SerializedName("release_date", alternate = ["first_air_date"])
|
||||
val releaseDate: String,
|
||||
val releaseDate: Date?,
|
||||
@SerializedName("vote_average")
|
||||
val voteAverage: Float,
|
||||
@SerializedName("vote_count")
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
package com.owenlejeune.tvtime.api.tmdb.api.v4.model
|
||||
|
||||
import com.google.gson.annotations.SerializedName
|
||||
import java.util.Date
|
||||
|
||||
class RecommendedMovie (
|
||||
id: Int,
|
||||
@@ -14,7 +15,7 @@ class RecommendedMovie (
|
||||
mediaType: String,
|
||||
genreIds: List<Int>,
|
||||
popularity: Float,
|
||||
releaseDate: String,
|
||||
releaseDate: Date?,
|
||||
voteAverage: Float,
|
||||
voteCount: Int,
|
||||
@SerializedName("video")
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
package com.owenlejeune.tvtime.api.tmdb.api.v4.model
|
||||
|
||||
import com.google.gson.annotations.SerializedName
|
||||
import java.util.Date
|
||||
|
||||
class RecommendedTv(
|
||||
id: Int,
|
||||
@@ -14,7 +15,7 @@ class RecommendedTv(
|
||||
mediaType: String,
|
||||
genreIds: List<Int>,
|
||||
popularity: Float,
|
||||
releaseDate: String,
|
||||
releaseDate: Date?,
|
||||
voteAverage: Float,
|
||||
voteCount: Int,
|
||||
@SerializedName("origin_country")
|
||||
|
||||
@@ -145,12 +145,12 @@ fun PosterItem(
|
||||
)
|
||||
}
|
||||
|
||||
@OptIn(ExperimentalMaterial3Api::class)
|
||||
@Composable
|
||||
fun PosterItem(
|
||||
url: String?,
|
||||
modifier: Modifier = Modifier,
|
||||
width: Dp = POSTER_WIDTH,
|
||||
height: Dp = POSTER_HEIGHT,
|
||||
onClick: () -> Unit = {},
|
||||
enabled: Boolean = true,
|
||||
placeholder: ImageVector = Icons.Filled.Movie,
|
||||
@@ -164,6 +164,7 @@ fun PosterItem(
|
||||
elevation = CardDefaults.elevatedCardElevation(defaultElevation = elevation),
|
||||
modifier = modifier
|
||||
.width(width = width)
|
||||
.height(height = height)
|
||||
.wrapContentHeight()
|
||||
.clickable(
|
||||
enabled = enabled,
|
||||
@@ -176,7 +177,7 @@ fun PosterItem(
|
||||
val m = if (backgroundColor == Color.Transparent) {
|
||||
Modifier.wrapContentHeight()
|
||||
} else {
|
||||
Modifier.height(POSTER_HEIGHT)
|
||||
Modifier.height(height)
|
||||
}
|
||||
Box(
|
||||
modifier = m
|
||||
|
||||
@@ -34,6 +34,7 @@ import com.owenlejeune.tvtime.api.tmdb.api.v4.model.AccountList
|
||||
import com.owenlejeune.tvtime.api.tmdb.api.v4.model.RatedMedia
|
||||
import com.owenlejeune.tvtime.api.tmdb.api.v4.model.RatedMovie
|
||||
import com.owenlejeune.tvtime.api.tmdb.api.v4.model.RatedTv
|
||||
import com.owenlejeune.tvtime.extensions.getCalendarYear
|
||||
import com.owenlejeune.tvtime.extensions.lazyPagingItems
|
||||
import com.owenlejeune.tvtime.extensions.unlessEmpty
|
||||
import com.owenlejeune.tvtime.ui.components.AccountIcon
|
||||
@@ -47,6 +48,7 @@ import com.owenlejeune.tvtime.utils.SessionManager
|
||||
import com.owenlejeune.tvtime.utils.TmdbUtils
|
||||
import com.owenlejeune.tvtime.utils.types.MediaViewType
|
||||
import kotlinx.coroutines.launch
|
||||
import java.util.Date
|
||||
import kotlin.reflect.KClass
|
||||
|
||||
@OptIn(ExperimentalMaterial3Api::class)
|
||||
@@ -281,19 +283,23 @@ private fun MediaItemRow(
|
||||
mediaViewType: MediaViewType,
|
||||
id: Int,
|
||||
name: String,
|
||||
date: String,
|
||||
date: Date?,
|
||||
description: String,
|
||||
posterPath: String? = null,
|
||||
backdropPath: String? = null,
|
||||
rating: Float? = null
|
||||
) {
|
||||
var title = "$name •"
|
||||
date?.let {
|
||||
title += " (${date.getCalendarYear()})"
|
||||
}
|
||||
MediaResultCard(
|
||||
appNavController = appNavController,
|
||||
mediaViewType = mediaViewType,
|
||||
id = id,
|
||||
backdropPath = backdropPath,
|
||||
posterPath = posterPath,
|
||||
title = "$name (${date.split("-")[0]})",
|
||||
title = title,
|
||||
additionalDetails = listOf(description),
|
||||
rating = rating
|
||||
)
|
||||
|
||||
@@ -317,7 +317,7 @@ private fun MiscMovieDetails(
|
||||
.fillMaxWidth()
|
||||
.wrapContentHeight()
|
||||
.padding(horizontal = 16.dp),
|
||||
year = TmdbUtils.getMovieReleaseYear(movie),
|
||||
year = movie.releaseDate?.getCalendarYear()?.toString() ?: "",
|
||||
runtime = TmdbUtils.convertRuntimeToHoursMinutes(movie),
|
||||
genres = movie.genres,
|
||||
contentRating = contentRating
|
||||
@@ -673,7 +673,7 @@ private fun SeasonCard(
|
||||
|
||||
lastSeason?.let {
|
||||
ContentCard(
|
||||
title = "Latest Season"
|
||||
title = stringResource(R.string.latest_season_title)
|
||||
) {
|
||||
Row(
|
||||
horizontalArrangement = Arrangement.spacedBy(12.dp),
|
||||
@@ -696,7 +696,7 @@ private fun SeasonCard(
|
||||
style = MaterialTheme.typography.titleMedium
|
||||
)
|
||||
Text(
|
||||
text = "${it.airDate?.getCalendarYear()} | ${it.episodes.size} Episodes"
|
||||
text = stringResource(id = R.string.season_ep_count, it.airDate?.getCalendarYear() ?: 0, it.episodes.size)
|
||||
)
|
||||
Text(
|
||||
text = it.overview,
|
||||
@@ -715,7 +715,7 @@ private fun SeasonCard(
|
||||
}
|
||||
) {
|
||||
Text(
|
||||
text = "See all seasons",
|
||||
text = stringResource(id = R.string.see_all_seasons_text),
|
||||
color = MaterialTheme.colorScheme.onSurfaceVariant,
|
||||
fontSize = 14.sp,
|
||||
modifier = Modifier.padding(4.dp)
|
||||
|
||||
@@ -29,6 +29,7 @@ import com.owenlejeune.tvtime.R
|
||||
import com.owenlejeune.tvtime.api.tmdb.api.v3.MoviesService
|
||||
import com.owenlejeune.tvtime.api.tmdb.api.v3.TvService
|
||||
import com.owenlejeune.tvtime.api.tmdb.api.v3.model.*
|
||||
import com.owenlejeune.tvtime.extensions.getCalendarYear
|
||||
import com.owenlejeune.tvtime.extensions.lazyPagingItems
|
||||
import com.owenlejeune.tvtime.ui.components.MediaResultCard
|
||||
import com.owenlejeune.tvtime.ui.components.SelectableTextChip
|
||||
@@ -400,7 +401,7 @@ private fun MovieSearchResultView(
|
||||
backdropModel = { TmdbUtils.getFullBackdropPath(result.backdropPath) },
|
||||
additionalDetails = {
|
||||
listOf(
|
||||
TmdbUtils.releaseYearFromData(result.releaseDate),
|
||||
result.releaseDate?.getCalendarYear()?.toString() ?: "",
|
||||
cast?.joinToString(separator = ", ") { it.name } ?: ""
|
||||
)
|
||||
}
|
||||
@@ -429,7 +430,7 @@ private fun TvSearchResultView(
|
||||
backdropModel = { TmdbUtils.getFullBackdropPath(result.backdropPath) },
|
||||
additionalDetails = {
|
||||
listOf(
|
||||
"${TmdbUtils.releaseYearFromData(result.releaseDate)} ${context.getString(R.string.search_result_tv_series)}",
|
||||
"${result.releaseDate?.getCalendarYear() ?: ""} ${context.getString(R.string.search_result_tv_series)}",
|
||||
cast?.joinToString(separator = ", ") { it.name } ?: ""
|
||||
)
|
||||
}
|
||||
@@ -445,7 +446,7 @@ private fun PeopleSearchResultView(
|
||||
|
||||
val additional = mostKnownFor?.let {
|
||||
listOf(
|
||||
"${mostKnownFor.title} (${TmdbUtils.releaseYearFromData(mostKnownFor.releaseDate)})"
|
||||
"${mostKnownFor.title} (${mostKnownFor.releaseDate?.getCalendarYear()})"
|
||||
)
|
||||
} ?: emptyList()
|
||||
|
||||
|
||||
@@ -15,6 +15,7 @@ import com.owenlejeune.tvtime.api.tmdb.api.v3.model.Status
|
||||
import com.owenlejeune.tvtime.api.tmdb.api.v3.model.TmdbItem
|
||||
import com.owenlejeune.tvtime.api.tmdb.api.v3.model.TvContentRatings
|
||||
import com.owenlejeune.tvtime.api.tmdb.api.v3.model.Video
|
||||
import com.owenlejeune.tvtime.extensions.getCalendarYear
|
||||
import com.owenlejeune.tvtime.ui.viewmodel.ConfigurationViewModel
|
||||
import java.text.SimpleDateFormat
|
||||
import java.util.Date
|
||||
@@ -93,32 +94,16 @@ object TmdbUtils {
|
||||
}
|
||||
}
|
||||
|
||||
fun getFullEpisodeStillPath(episode: Episode): String? {
|
||||
return getFullEpisodeStillPath(episode.stillPath)
|
||||
}
|
||||
|
||||
fun getMovieReleaseYear(movie: DetailedMovie): String {
|
||||
return movie.releaseDate.split("-")[0]
|
||||
}
|
||||
|
||||
fun getSeriesRun(series: DetailedTv): String {
|
||||
val startYear = getTvStartYear(series)
|
||||
val startYear = series.firstAirDate?.getCalendarYear() ?: ""
|
||||
val endYear = if (series.status == Status.ACTIVE) {
|
||||
getTvEndYear(series)
|
||||
series.lastAirDate?.getCalendarYear() ?: ""
|
||||
} else {
|
||||
""
|
||||
}
|
||||
return "${startYear}-${endYear}"
|
||||
}
|
||||
|
||||
fun getTvStartYear(series: DetailedTv): String {
|
||||
return series.firstAirDate.split("-")[0]
|
||||
}
|
||||
|
||||
fun getTvEndYear(series: DetailedTv): String {
|
||||
return series.lastAirDate.split("-")[0]
|
||||
}
|
||||
|
||||
fun convertRuntimeToHoursMinutes(movie: DetailedMovie): String {
|
||||
movie.runtime?.let { runtime ->
|
||||
return convertRuntimeToHoursAndMinutes(runtime)
|
||||
@@ -197,12 +182,12 @@ object TmdbUtils {
|
||||
return ""
|
||||
}
|
||||
|
||||
fun formatDate(inDate: String): String {
|
||||
val orig = SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSS'Z'", java.util.Locale.US)
|
||||
fun formatDate(inDate: Date?): String {
|
||||
if (inDate == null) {
|
||||
return ""
|
||||
}
|
||||
val formatter = SimpleDateFormat("yyyy-MM-dd HH:mm", java.util.Locale.US)
|
||||
|
||||
val date = orig.parse(inDate)//.replace("Z", "+0000"))
|
||||
return formatter.format(date)
|
||||
return formatter.format(inDate)
|
||||
}
|
||||
|
||||
fun getAccountGravatarUrl(accountDetails: AccountDetails): String {
|
||||
@@ -219,13 +204,6 @@ object TmdbUtils {
|
||||
return IMAGE_BASE.plus(LOGO_SIZE).plus(path)
|
||||
}
|
||||
|
||||
fun releaseYearFromData(releaseDate: String): String {
|
||||
if (releaseDate.length >=4) {
|
||||
return releaseDate.split("-").first { it.length == 4 }
|
||||
}
|
||||
return ""
|
||||
}
|
||||
|
||||
fun formatRevenue(revenue: Long): String {
|
||||
val decFormat = "%.1f"
|
||||
val thousands = revenue.toFloat() / 1000f
|
||||
|
||||
@@ -238,4 +238,7 @@
|
||||
<string name="cast_tv_character_template">as %1$s (%2$d eps.)</string>
|
||||
<string name="crew_template">… %1$s</string>
|
||||
<string name="images_title">Images</string>
|
||||
<string name="latest_season_title">Latest Season</string>
|
||||
<string name="season_ep_count">%1$d | %2$d Episodes</string>
|
||||
<string name="see_all_seasons_text">See all seasons</string>
|
||||
</resources>
|
||||
Reference in New Issue
Block a user