Skip to content

Commit 7cc4182

Browse files
feat: resume video
1 parent 515a4d9 commit 7cc4182

File tree

5 files changed

+27
-6
lines changed

5 files changed

+27
-6
lines changed

app/src/main/java/org/openedx/app/di/ScreenModule.kt

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -342,19 +342,21 @@ val screenModule = module {
342342
}
343343
viewModel { (courseId: String) -> BaseVideoViewModel(courseId, get()) }
344344
viewModel { (courseId: String) -> VideoViewModel(courseId, get(), get(), get(), get()) }
345-
viewModel { (courseId: String) ->
345+
viewModel { (courseId: String, videoUrl: String) ->
346346
VideoUnitViewModel(
347347
courseId,
348+
videoUrl,
348349
get(),
349350
get(),
350351
get(),
351352
get(),
352353
get()
353354
)
354355
}
355-
viewModel { (courseId: String, blockId: String) ->
356+
viewModel { (courseId: String, videoUrl: String, blockId: String) ->
356357
EncodedVideoUnitViewModel(
357358
courseId,
359+
videoUrl,
358360
blockId,
359361
get(),
360362
get(),

course/src/main/java/org/openedx/course/presentation/unit/video/EncodedVideoUnitViewModel.kt

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,7 @@ import java.util.concurrent.Executors
3232
@SuppressLint("StaticFieldLeak")
3333
class EncodedVideoUnitViewModel(
3434
courseId: String,
35+
videoUrl: String,
3536
val blockId: String,
3637
private val context: Context,
3738
private val preferencesManager: CorePreferences,
@@ -42,6 +43,7 @@ class EncodedVideoUnitViewModel(
4243
courseAnalytics: CourseAnalytics,
4344
) : VideoUnitViewModel(
4445
courseId,
46+
videoUrl,
4547
courseRepository,
4648
notifier,
4749
networkConnection,

course/src/main/java/org/openedx/course/presentation/unit/video/VideoUnitFragment.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -49,6 +49,7 @@ class VideoUnitFragment : Fragment(R.layout.fragment_video_unit) {
4949
private val viewModel by viewModel<EncodedVideoUnitViewModel> {
5050
parametersOf(
5151
requireArguments().getString(ARG_COURSE_ID, ""),
52+
requireArguments().getString(ARG_VIDEO_URL, ""),
5253
requireArguments().getString(ARG_BLOCK_ID, ""),
5354
)
5455
}
@@ -79,7 +80,6 @@ class VideoUnitFragment : Fragment(R.layout.fragment_video_unit) {
7980
lifecycle.addObserver(viewModel)
8081
handler.post(videoTimeRunnable)
8182
requireArguments().apply {
82-
viewModel.videoUrl = getString(ARG_VIDEO_URL, "")
8383
viewModel.transcripts = stringToObject<Map<String, String>>(
8484
getString(ARG_TRANSCRIPT_URL, "")
8585
) ?: emptyMap()

course/src/main/java/org/openedx/course/presentation/unit/video/VideoUnitViewModel.kt

Lines changed: 16 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,14 +21,14 @@ import subtitleFile.TimedTextObject
2121

2222
open class VideoUnitViewModel(
2323
val courseId: String,
24+
val videoUrl: String,
2425
private val courseRepository: CourseRepository,
2526
private val notifier: CourseNotifier,
2627
private val networkConnection: NetworkConnection,
2728
private val transcriptManager: TranscriptManager,
2829
courseAnalytics: CourseAnalytics,
2930
) : BaseVideoViewModel(courseId, courseAnalytics) {
3031

31-
var videoUrl = ""
3232
var transcripts = emptyMap<String, String>()
3333
var isPlaying = true
3434
var transcriptLanguage = AppDataConstants.defaultLocale.language ?: "en"
@@ -60,6 +60,10 @@ open class VideoUnitViewModel(
6060

6161
private var isBlockAlreadyCompleted = false
6262

63+
init {
64+
initVideoProgress()
65+
}
66+
6367
override fun onCreate(owner: LifecycleOwner) {
6468
super.onCreate(owner)
6569
viewModelScope.launch {
@@ -140,4 +144,15 @@ open class VideoUnitViewModel(
140144
}
141145

142146
fun getCurrentVideoTime() = currentVideoTime.value ?: 0
147+
148+
private fun initVideoProgress() {
149+
viewModelScope.launch {
150+
try {
151+
val videoProgress = courseRepository.getVideoProgress(videoUrl)
152+
_currentVideoTime.value = videoProgress.videoTime
153+
} catch (e: Exception) {
154+
e.printStackTrace()
155+
}
156+
}
157+
}
143158
}

course/src/main/java/org/openedx/course/presentation/unit/video/YoutubeVideoUnitFragment.kt

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,10 @@ import org.openedx.foundation.presentation.WindowSize
3939
class YoutubeVideoUnitFragment : Fragment(R.layout.fragment_youtube_video_unit) {
4040

4141
private val viewModel by viewModel<VideoUnitViewModel> {
42-
parametersOf(requireArguments().getString(ARG_COURSE_ID, ""))
42+
parametersOf(
43+
requireArguments().getString(ARG_COURSE_ID, ""),
44+
requireArguments().getString(ARG_VIDEO_URL, "")
45+
)
4346
}
4447
private val router by inject<CourseRouter>()
4548
private val appReviewManager by inject<AppReviewManager> { parametersOf(requireActivity()) }
@@ -61,7 +64,6 @@ class YoutubeVideoUnitFragment : Fragment(R.layout.fragment_youtube_video_unit)
6164
windowSize = computeWindowSizeClasses()
6265
lifecycle.addObserver(viewModel)
6366
requireArguments().apply {
64-
viewModel.videoUrl = getString(ARG_VIDEO_URL, "")
6567
viewModel.transcripts = stringToObject<Map<String, String>>(
6668
getString(ARG_TRANSCRIPT_URL, "")
6769
) ?: emptyMap()

0 commit comments

Comments
 (0)