diff --git a/core/src/main/java/org/openedx/core/domain/model/Block.kt b/core/src/main/java/org/openedx/core/domain/model/Block.kt index 1c69142a8..2f1766ecb 100644 --- a/core/src/main/java/org/openedx/core/domain/model/Block.kt +++ b/core/src/main/java/org/openedx/core/domain/model/Block.kt @@ -117,13 +117,19 @@ data class EncodedVideos( || fallback?.url != null val videoUrl: String - get() = mobileHigh?.url - ?: mobileLow?.url - ?: desktopMp4?.url + get() = fallback?.url ?: hls?.url - ?: fallback?.url + ?: desktopMp4?.url + ?: mobileHigh?.url + ?: mobileLow?.url ?: "" + val hasVideoUrl: Boolean + get() = videoUrl.isNotEmpty() + + val hasYoutubeUrl: Boolean + get() = youtube?.url?.isNotEmpty() == true + fun getPreferredVideoInfoForDownloading(preferredVideoQuality: VideoQuality): VideoInfo? { var preferredVideoInfo = when (preferredVideoQuality) { VideoQuality.OPTION_360P -> mobileLow diff --git a/course/src/main/java/org/openedx/course/presentation/unit/container/CourseUnitContainerAdapter.kt b/course/src/main/java/org/openedx/course/presentation/unit/container/CourseUnitContainerAdapter.kt index 5dc12b617..958d479c1 100644 --- a/course/src/main/java/org/openedx/course/presentation/unit/container/CourseUnitContainerAdapter.kt +++ b/course/src/main/java/org/openedx/course/presentation/unit/container/CourseUnitContainerAdapter.kt @@ -23,7 +23,9 @@ class CourseUnitContainerAdapter( private fun unitBlockFragment(block: Block): Fragment { return when { - (block.isVideoBlock && block.studentViewData?.encodedVideos != null) -> { + (block.isVideoBlock && + (block.studentViewData?.encodedVideos?.hasVideoUrl == true || + block.studentViewData?.encodedVideos?.hasYoutubeUrl == true)) -> { val encodedVideos = block.studentViewData?.encodedVideos!! val transcripts = block.studentViewData!!.transcripts with(encodedVideos) { @@ -31,19 +33,7 @@ class CourseUnitContainerAdapter( val videoUrl = if (viewModel.getDownloadModelById(block.id) != null) { isDownloaded = true viewModel.getDownloadModelById(block.id)!!.path - } else if (fallback != null) { - fallback!!.url - } else if (hls != null) { - hls!!.url - } else if (desktopMp4 != null) { - desktopMp4!!.url - } else if (mobileHigh != null) { - mobileHigh!!.url - } else if (mobileLow != null) { - mobileLow!!.url - } else { - "" - } + } else videoUrl if (videoUrl.isNotEmpty()) { VideoUnitFragment.newInstance( block.id, @@ -57,7 +47,7 @@ class CourseUnitContainerAdapter( YoutubeVideoUnitFragment.newInstance( block.id, viewModel.courseId, - encodedVideos.youtube?.url!!, + encodedVideos.youtube?.url ?: "", transcripts?.toMap() ?: emptyMap(), block.displayName ) diff --git a/course/src/main/java/org/openedx/course/presentation/unit/video/YoutubeVideoUnitFragment.kt b/course/src/main/java/org/openedx/course/presentation/unit/video/YoutubeVideoUnitFragment.kt index bdf47e990..a842f4175 100644 --- a/course/src/main/java/org/openedx/course/presentation/unit/video/YoutubeVideoUnitFragment.kt +++ b/course/src/main/java/org/openedx/course/presentation/unit/video/YoutubeVideoUnitFragment.kt @@ -161,7 +161,10 @@ class YoutubeVideoUnitFragment : Fragment(R.layout.fragment_youtube_video_unit) } } - override fun onStateChange(youTubePlayer: YouTubePlayer, state: PlayerConstants.PlayerState) { + override fun onStateChange( + youTubePlayer: YouTubePlayer, + state: PlayerConstants.PlayerState + ) { super.onStateChange(youTubePlayer, state) viewModel.isPlaying = when (state) { PlayerConstants.PlayerState.PLAYING -> true @@ -191,11 +194,16 @@ class YoutubeVideoUnitFragment : Fragment(R.layout.fragment_youtube_video_unit) binding.youtubePlayerView.setCustomPlayerUi(defPlayerUiController.rootView) } - val videoId = viewModel.videoUrl.split("watch?v=")[1] - if (viewModel.isPlaying) { - youTubePlayer.loadVideo(videoId, viewModel.getCurrentVideoTime().toFloat() / 1000) - } else { - youTubePlayer.cueVideo(videoId, viewModel.getCurrentVideoTime().toFloat() / 1000) + viewModel.videoUrl.split("watch?v=").getOrNull(1)?.let { videoId -> + if (viewModel.isPlaying) { + youTubePlayer.loadVideo( + videoId, viewModel.getCurrentVideoTime().toFloat() / 1000 + ) + } else { + youTubePlayer.cueVideo( + videoId, viewModel.getCurrentVideoTime().toFloat() / 1000 + ) + } } youTubePlayer.addListener(youtubeTrackerListener) }