minor fixes

* fix current language is set to preferred and not to actual language
* fix player episodes lists sometimes missing the play icon
This commit is contained in:
Jannik 2020-12-31 13:12:37 +01:00
parent 489ef02a35
commit 31197a5d44
Signed by: Seil0
GPG Key ID: E8459F3723C52C24
3 changed files with 11 additions and 6 deletions

View File

@ -10,8 +10,8 @@ android {
applicationId "org.mosad.teapod" applicationId "org.mosad.teapod"
minSdkVersion 23 minSdkVersion 23
targetSdkVersion 30 targetSdkVersion 30
versionCode 2100 //00.02.100 versionCode 2900 //00.02.900
versionName "0.2.92" versionName "0.3.0-RC1"
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
resValue "string", "build_time", buildTime() resValue "string", "build_time", buildTime()

View File

@ -33,6 +33,7 @@ class PlayerViewModel(application: Application) : AndroidViewModel(application)
val dataSourceFactory = DefaultDataSourceFactory(application, Util.getUserAgent(application, "Teapod")) val dataSourceFactory = DefaultDataSourceFactory(application, Util.getUserAgent(application, "Teapod"))
val currentEpisodeChangedListener = ArrayList<() -> Unit>() val currentEpisodeChangedListener = ArrayList<() -> Unit>()
val preferredLanguage = if (Preferences.preferSecondary) Locale.JAPANESE else Locale.GERMAN
var media: Media = Media(-1, "", DataTypes.MediaType.OTHER) var media: Media = Media(-1, "", DataTypes.MediaType.OTHER)
internal set internal set
@ -56,8 +57,8 @@ class PlayerViewModel(application: Application) : AndroidViewModel(application)
} }
currentEpisode = media.getEpisodeById(episodeId) currentEpisode = media.getEpisodeById(episodeId)
currentLanguage = if (Preferences.preferSecondary) Locale.JAPANESE else Locale.GERMAN
nextEpisode = selectNextEpisode() nextEpisode = selectNextEpisode()
currentLanguage = currentEpisode.getPreferredStream(preferredLanguage).language
} }
fun setLanguage(language: Locale) { fun setLanguage(language: Locale) {
@ -94,12 +95,14 @@ class PlayerViewModel(application: Application) : AndroidViewModel(application)
* updateWatchedState for the next (now current) episode * updateWatchedState for the next (now current) episode
*/ */
fun playEpisode(episode: Episode, replace: Boolean = false, seekPosition: Long = 0) { fun playEpisode(episode: Episode, replace: Boolean = false, seekPosition: Long = 0) {
val preferredStream = episode.getPreferredStream(currentLanguage)
currentLanguage = preferredStream.language // update current language, since it may have changed
currentEpisode = episode currentEpisode = episode
nextEpisode = selectNextEpisode() nextEpisode = selectNextEpisode()
currentEpisodeChangedListener.forEach { it() } // update player gui (title) currentEpisodeChangedListener.forEach { it() } // update player gui (title)
val mediaSource = HlsMediaSource.Factory(dataSourceFactory).createMediaSource( val mediaSource = HlsMediaSource.Factory(dataSourceFactory).createMediaSource(
MediaItem.fromUri(Uri.parse( episode.getPreferredStream(currentLanguage).url)) MediaItem.fromUri(Uri.parse(preferredStream.url))
) )
playMedia(mediaSource, replace, seekPosition) playMedia(mediaSource, replace, seekPosition)

View File

@ -40,8 +40,10 @@ class PlayerEpisodeItemAdapter(private val episodes: List<Episode>) : RecyclerVi
} }
// hide the play icon, if it's the current episode // hide the play icon, if it's the current episode
if (currentSelected == position) { holder.binding.imageEpisodePlay.visibility = if (currentSelected == position) {
holder.binding.imageEpisodePlay.visibility = View.GONE View.GONE
} else {
View.VISIBLE
} }
} }