diff --git a/app/src/main/java/dev/jdtech/jellyfin/BindingAdapters.kt b/app/src/main/java/dev/jdtech/jellyfin/BindingAdapters.kt index c0579674..027d113f 100644 --- a/app/src/main/java/dev/jdtech/jellyfin/BindingAdapters.kt +++ b/app/src/main/java/dev/jdtech/jellyfin/BindingAdapters.kt @@ -146,4 +146,20 @@ fun bindSeasonPoster(imageView: ImageView, seasonId: UUID) { .transition(DrawableTransitionOptions.withCrossFade()) .placeholder(R.color.neutral_800) .into(imageView) +} + +@BindingAdapter("itemPrimaryImage") +fun bindItemPrimaryImage(imageView: ImageView, item: BaseItemDto?) { + if (item != null) { + val jellyfinApi = JellyfinApi.getInstance(imageView.context.applicationContext, "") + + Glide + .with(imageView.context) + .load(jellyfinApi.api.baseUrl.plus("/items/${item.id}/Images/Primary")) + .transition(DrawableTransitionOptions.withCrossFade()) + .placeholder(R.color.neutral_800) + .into(imageView) + + imageView.contentDescription = "${item.name} poster" + } } \ No newline at end of file diff --git a/app/src/main/java/dev/jdtech/jellyfin/viewmodels/MediaInfoViewModel.kt b/app/src/main/java/dev/jdtech/jellyfin/viewmodels/MediaInfoViewModel.kt index 8de0481d..ecfcebd4 100644 --- a/app/src/main/java/dev/jdtech/jellyfin/viewmodels/MediaInfoViewModel.kt +++ b/app/src/main/java/dev/jdtech/jellyfin/viewmodels/MediaInfoViewModel.kt @@ -42,6 +42,9 @@ class MediaInfoViewModel(application: Application, itemId: UUID) : AndroidViewMo private val _dateString = MutableLiveData() val dateString: LiveData = _dateString + private val _nextUp = MutableLiveData() + val nextUp: LiveData = _nextUp + private val _seasons = MutableLiveData>() val seasons: LiveData> = _seasons @@ -51,12 +54,14 @@ class MediaInfoViewModel(application: Application, itemId: UUID) : AndroidViewMo _actors.value = getActors(_item.value!!) _director.value = getDirector(_item.value!!) _writers.value = getWriters(_item.value!!) - _writersString.value = _writers.value?.joinToString(separator = ", ") { it.name.toString() } + _writersString.value = + _writers.value?.joinToString(separator = ", ") { it.name.toString() } _genresString.value = _item.value?.genres?.joinToString(separator = ", ") _runTime.value = "${_item.value?.runTimeTicks?.div(600000000)} min" _dateString.value = getDateString(_item.value!!) _item.value!!.status?.let { Log.i("MediaInfoViewModel", it) } if (_item.value!!.type == "Series") { + _nextUp.value = getNextUp(itemId) _seasons.value = getSeasons(itemId) } } @@ -102,6 +107,24 @@ class MediaInfoViewModel(application: Application, itemId: UUID) : AndroidViewMo return writers } + private suspend fun getNextUp(seriesId: UUID): BaseItemDto? { + val nextUpItems: List? + withContext(Dispatchers.IO) { + nextUpItems = jellyfinApi.showsApi.getNextUp( + jellyfinApi.userId!!, + seriesId = seriesId.toString() + ).content.items + } + if (nextUpItems != null) { + return if (nextUpItems.isNotEmpty()) { + nextUpItems[0] + } else { + null + } + } + return null + } + private fun getDateString(item: BaseItemDto): String { val dateString: String = item.productionYear.toString() return when (item.status) { diff --git a/app/src/main/res/layout/fragment_media_info.xml b/app/src/main/res/layout/fragment_media_info.xml index 2e5dc00d..57ea7cff 100644 --- a/app/src/main/res/layout/fragment_media_info.xml +++ b/app/src/main/res/layout/fragment_media_info.xml @@ -31,8 +31,8 @@ android:id="@+id/item_banner" android:layout_width="match_parent" android:layout_height="200dp" - app:itemBackdropImage="@{viewModel.item}" android:scaleType="centerCrop" + app:itemBackdropImage="@{viewModel.item}" app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintStart_toStartOf="parent" @@ -56,7 +56,7 @@ android:textAppearance="@style/TextAppearance.MaterialComponents.Headline5" app:layout_constraintBottom_toTopOf="@id/original_title" app:layout_constraintStart_toStartOf="parent" - tools:text="Alita: Battle Angel"/> + tools:text="Alita: Battle Angel" /> + + + + + + + + + + Favorite Episode watched indicator %1$d. %2$s + S%1$dE%2$d - %3$s + Next up \ No newline at end of file