diff --git a/app/phone/src/main/java/dev/jdtech/jellyfin/fragments/MovieFragment.kt b/app/phone/src/main/java/dev/jdtech/jellyfin/fragments/MovieFragment.kt
index b55dd78c..c9e07f7b 100644
--- a/app/phone/src/main/java/dev/jdtech/jellyfin/fragments/MovieFragment.kt
+++ b/app/phone/src/main/java/dev/jdtech/jellyfin/fragments/MovieFragment.kt
@@ -309,18 +309,6 @@ class MovieFragment : Fragment() {
}
binding.officialRating.text = item.officialRating
binding.communityRating.text = item.communityRating.toString()
- binding.genresLayout.isVisible = item.genres.isNotEmpty()
- binding.genres.text = genresString
- binding.videoMeta.text = videoString
- binding.audio.text = audioString
- binding.subtitles.text = subtitleString
- binding.subsChip.isVisible = subtitleString.isNotEmpty()
-
- if (appPreferences.displayExtraInfo) {
- binding.subtitlesLayout.isVisible = subtitleString.isNotEmpty()
- binding.videoMetaLayout.isVisible = videoString.isNotEmpty()
- binding.audioLayout.isVisible = audioString.isNotEmpty()
- }
videoMetadata.let {
with(binding) {
@@ -373,11 +361,26 @@ class MovieFragment : Fragment() {
}
}
}
- binding.directorLayout.isVisible = director != null
- binding.director.text = director?.name
- binding.writersLayout.isVisible = writers.isNotEmpty()
- binding.writers.text = writersString
- binding.description.text = item.overview
+
+ binding.subsChip.isVisible = subtitleString.isNotEmpty()
+
+ if (appPreferences.displayExtraInfo) {
+ binding.info.video.text = videoString
+ binding.info.videoGroup.isVisible = videoString.isNotEmpty()
+ binding.info.audio.text = audioString
+ binding.info.audioGroup.isVisible = audioString.isNotEmpty()
+ binding.info.subtitles.text = subtitleString
+ binding.info.subtitlesGroup.isVisible = subtitleString.isNotEmpty()
+ }
+
+ binding.info.description.text = item.overview
+ binding.info.genres.text = genresString
+ binding.info.genresGroup.isVisible = item.genres.isNotEmpty()
+ binding.info.director.text = director?.name
+ binding.info.directorGroup.isVisible = director != null
+ binding.info.writers.text = writersString
+ binding.info.writersGroup.isVisible = writers.isNotEmpty()
+
val actorsAdapter = binding.peopleRecyclerView.adapter as PersonListAdapter
actorsAdapter.submitList(actors)
bindItemBackdropImage(binding.itemBanner, item)
diff --git a/app/phone/src/main/java/dev/jdtech/jellyfin/fragments/ShowFragment.kt b/app/phone/src/main/java/dev/jdtech/jellyfin/fragments/ShowFragment.kt
index a0d8bfaa..b6d3aacd 100644
--- a/app/phone/src/main/java/dev/jdtech/jellyfin/fragments/ShowFragment.kt
+++ b/app/phone/src/main/java/dev/jdtech/jellyfin/fragments/ShowFragment.kt
@@ -208,23 +208,15 @@ class ShowFragment : Fragment() {
}
binding.officialRating.text = item.officialRating
binding.communityRating.text = item.communityRating.toString()
- binding.genresLayout.isVisible = item.genres.isNotEmpty()
- binding.genres.text = genresString
- binding.videoMeta.text = videoString
- binding.audio.text = audioString
- binding.subtitles.text = subtitleString
- if (appPreferences.displayExtraInfo) {
- binding.subtitlesLayout.isVisible = subtitleString.isNotEmpty()
- binding.videoMetaLayout.isVisible = videoString.isNotEmpty()
- binding.audioLayout.isVisible = audioString.isNotEmpty()
- }
+ binding.info.description.text = item.overview
+ binding.info.genres.text = genresString
+ binding.info.genresGroup.isVisible = item.genres.isNotEmpty()
+ binding.info.director.text = director?.name
+ binding.info.directorGroup.isVisible = director != null
+ binding.info.writers.text = writersString
+ binding.info.writersGroup.isVisible = writers.isNotEmpty()
- binding.directorLayout.isVisible = director != null
- binding.director.text = director?.name
- binding.writersLayout.isVisible = writers.isNotEmpty()
- binding.writers.text = writersString
- binding.description.text = item.overview
binding.nextUpLayout.isVisible = nextUp != null
if (nextUp?.indexNumberEnd == null) {
binding.nextUpName.text = getString(
diff --git a/app/phone/src/main/res/layout-w600dp/fragment_show.xml b/app/phone/src/main/res/layout-w600dp/fragment_show.xml
index 1a7be92c..4b84d2e1 100644
--- a/app/phone/src/main/res/layout-w600dp/fragment_show.xml
+++ b/app/phone/src/main/res/layout-w600dp/fragment_show.xml
@@ -132,17 +132,15 @@
layout="@layout/item_actions"
android:layout_width="match_parent"
android:layout_height="wrap_content"
- android:layout_marginHorizontal="24dp"
- android:layout_marginBottom="16dp" />
+ android:layout_marginHorizontal="24dp" />
@@ -164,192 +162,9 @@
android:textColor="?attr/colorError" />
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+ layout="@layout/item_info" />
diff --git a/app/phone/src/main/res/layout/fragment_movie.xml b/app/phone/src/main/res/layout/fragment_movie.xml
index 545b38bb..6d66782d 100644
--- a/app/phone/src/main/res/layout/fragment_movie.xml
+++ b/app/phone/src/main/res/layout/fragment_movie.xml
@@ -198,16 +198,14 @@
layout="@layout/item_actions"
android:layout_width="match_parent"
android:layout_height="wrap_content"
- android:layout_marginHorizontal="24dp"
- android:layout_marginBottom="16dp" />
+ android:layout_marginHorizontal="24dp" />
@@ -230,192 +228,9 @@
android:textColor="?attr/colorError" />
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+ layout="@layout/item_info" />
+ android:layout_marginHorizontal="24dp" />
@@ -151,192 +149,9 @@
android:textColor="?attr/colorError" />
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+ layout="@layout/item_info" />
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/core/src/main/java/dev/jdtech/jellyfin/viewmodels/ShowViewModel.kt b/core/src/main/java/dev/jdtech/jellyfin/viewmodels/ShowViewModel.kt
index 3703a3c8..6f17c8e0 100644
--- a/core/src/main/java/dev/jdtech/jellyfin/viewmodels/ShowViewModel.kt
+++ b/core/src/main/java/dev/jdtech/jellyfin/viewmodels/ShowViewModel.kt
@@ -4,7 +4,6 @@ import androidx.lifecycle.ViewModel
import androidx.lifecycle.viewModelScope
import dagger.hilt.android.lifecycle.HiltViewModel
import dev.jdtech.jellyfin.models.FindroidEpisode
-import dev.jdtech.jellyfin.models.FindroidMediaStream
import dev.jdtech.jellyfin.models.FindroidSeason
import dev.jdtech.jellyfin.models.FindroidShow
import dev.jdtech.jellyfin.repository.JellyfinRepository
@@ -18,7 +17,6 @@ import kotlinx.coroutines.flow.asStateFlow
import kotlinx.coroutines.launch
import kotlinx.coroutines.withContext
import org.jellyfin.sdk.model.api.BaseItemPerson
-import org.jellyfin.sdk.model.api.MediaStreamType
@HiltViewModel
class ShowViewModel
@@ -40,9 +38,6 @@ constructor(
val writers: List,
val writersString: String,
val genresString: String,
- val videoString: String,
- val audioString: String,
- val subtitleString: String,
val runTime: String,
val dateString: String,
val nextUp: FindroidEpisode?,
@@ -61,9 +56,6 @@ constructor(
private var writers: List = emptyList()
private var writersString: String = ""
private var genresString: String = ""
- private var videoString: String = ""
- private var audioString: String = ""
- private var subtitleString: String = ""
private var runTime: String = ""
private var dateString: String = ""
var nextUp: FindroidEpisode? = null
@@ -81,9 +73,6 @@ constructor(
writers = getWriters(item)
writersString = writers.joinToString(separator = ", ") { it.name.toString() }
genresString = item.genres.joinToString(separator = ", ")
- videoString = getMediaString(item, MediaStreamType.VIDEO)
- audioString = getMediaString(item, MediaStreamType.AUDIO)
- subtitleString = getMediaString(item, MediaStreamType.SUBTITLE)
runTime = "${item.runtimeTicks.div(600000000)} min"
dateString = getDateString(item)
nextUp = getNextUp(itemId)
@@ -96,9 +85,6 @@ constructor(
writers,
writersString,
genresString,
- videoString,
- audioString,
- subtitleString,
runTime,
dateString,
nextUp,
@@ -138,14 +124,6 @@ constructor(
return writers
}
- private suspend fun getMediaString(item: FindroidShow, type: MediaStreamType): String {
- val streams: List
- withContext(Dispatchers.Default) {
- streams = item.sources.getOrNull(0)?.mediaStreams?.filter { it.type == type } ?: emptyList()
- }
- return streams.map { it.displayTitle }.joinToString(separator = ", ")
- }
-
private suspend fun getNextUp(seriesId: UUID): FindroidEpisode? {
val nextUpItems = jellyfinRepository.getNextUp(seriesId)
return nextUpItems.getOrNull(0)
diff --git a/data/src/main/java/dev/jdtech/jellyfin/repository/JellyfinRepositoryOfflineImpl.kt b/data/src/main/java/dev/jdtech/jellyfin/repository/JellyfinRepositoryOfflineImpl.kt
index 0be119a2..e10aea68 100644
--- a/data/src/main/java/dev/jdtech/jellyfin/repository/JellyfinRepositoryOfflineImpl.kt
+++ b/data/src/main/java/dev/jdtech/jellyfin/repository/JellyfinRepositoryOfflineImpl.kt
@@ -112,7 +112,7 @@ class JellyfinRepositoryOfflineImpl(
}
override suspend fun getSearchItems(searchQuery: String): List {
- return withContext(Dispatchers.IO) {
+ return withContext(Dispatchers.IO) {
val movies = database.searchMovies(appPreferences.currentServer!!, searchQuery).map { it.toFindroidMovie(database, jellyfinApi.userId!!) }
val shows = database.searchShows(appPreferences.currentServer!!, searchQuery).map { it.toFindroidShow(database, jellyfinApi.userId!!) }
val episodes = database.searchEpisodes(appPreferences.currentServer!!, searchQuery).map { it.toFindroidEpisode(database, jellyfinApi.userId!!) }