From f928dd5c687904c614d1a40bfb4ef3f74bcb5b29 Mon Sep 17 00:00:00 2001 From: Shuming Liu Date: Fri, 4 Sep 2026 16:35:03 +0800 Subject: [PATCH] fixed a bug --- .../oraltrainer/sample/CourseCatalogController.kt | 9 +++++++++ .../cn/learningpad/oraltrainer/sample/MainActivity.kt | 10 +++------- .../oraltrainer/sample/SampleScreenActions.kt | 2 +- .../oraltrainer/sample/TrainingScreenState.kt | 2 +- .../learningpad/oraltrainer/sample/ui/TrainScreen.kt | 4 ++-- 5 files changed, 16 insertions(+), 11 deletions(-) diff --git a/android/sample-app/src/main/java/cn/learningpad/oraltrainer/sample/CourseCatalogController.kt b/android/sample-app/src/main/java/cn/learningpad/oraltrainer/sample/CourseCatalogController.kt index 197ca38..8cc262c 100644 --- a/android/sample-app/src/main/java/cn/learningpad/oraltrainer/sample/CourseCatalogController.kt +++ b/android/sample-app/src/main/java/cn/learningpad/oraltrainer/sample/CourseCatalogController.kt @@ -85,7 +85,16 @@ internal class CourseCatalogController( } } + fun useCourseInPlace(video: TrainingVideoSummary) { + // Keep the current module (e.g. Train) while syncing course selection. + if (screenState.courseEnrollment[video.videoHash] != true) { + enrollCourse(video) + } + loadRemoteVideo(video) + } + fun loadRemoteVideo(video: TrainingVideoSummary) { + screenState.currentCourse = video screenState.activeItemId = video.videoHash host.onPlayerLoading(video) host.onCatalogChanged() diff --git a/android/sample-app/src/main/java/cn/learningpad/oraltrainer/sample/MainActivity.kt b/android/sample-app/src/main/java/cn/learningpad/oraltrainer/sample/MainActivity.kt index d0b3783..fdf0039 100644 --- a/android/sample-app/src/main/java/cn/learningpad/oraltrainer/sample/MainActivity.kt +++ b/android/sample-app/src/main/java/cn/learningpad/oraltrainer/sample/MainActivity.kt @@ -250,7 +250,7 @@ class MainActivity : Activity() { sdk.config.userToken = null screenState.clearCourse() controller.pause() - screenState.activeModule = Module.TRAIN + screenState.activeModule = Module.COURSE setRootView() } @@ -431,12 +431,8 @@ class MainActivity : Activity() { catalogController.selectCourse(video) } - override fun onTrainCatalogVideoClick(video: TrainingVideoSummary, enrolled: Boolean) { - if (enrolled) { - catalogController.loadRemoteVideo(video) - } else { - catalogController.enrollCourse(video) - } + override fun onTrainCatalogVideoClick(video: TrainingVideoSummary) { + catalogController.useCourseInPlace(video) } override fun onLogout() = logout() diff --git a/android/sample-app/src/main/java/cn/learningpad/oraltrainer/sample/SampleScreenActions.kt b/android/sample-app/src/main/java/cn/learningpad/oraltrainer/sample/SampleScreenActions.kt index 61976e3..b3e469e 100644 --- a/android/sample-app/src/main/java/cn/learningpad/oraltrainer/sample/SampleScreenActions.kt +++ b/android/sample-app/src/main/java/cn/learningpad/oraltrainer/sample/SampleScreenActions.kt @@ -17,7 +17,7 @@ internal interface TrainScreenActions { fun onSeekStart() fun onSeekStop(progress: Int) fun onContinuousPlaybackChanged(enabled: Boolean) - fun onTrainCatalogVideoClick(video: TrainingVideoSummary, enrolled: Boolean) + fun onTrainCatalogVideoClick(video: TrainingVideoSummary) } internal interface TestScreenActions { diff --git a/android/sample-app/src/main/java/cn/learningpad/oraltrainer/sample/TrainingScreenState.kt b/android/sample-app/src/main/java/cn/learningpad/oraltrainer/sample/TrainingScreenState.kt index d951c52..a76b373 100644 --- a/android/sample-app/src/main/java/cn/learningpad/oraltrainer/sample/TrainingScreenState.kt +++ b/android/sample-app/src/main/java/cn/learningpad/oraltrainer/sample/TrainingScreenState.kt @@ -8,7 +8,7 @@ internal class TrainingScreenState { var catalogVideos: List = emptyList() val courseEnrollment = mutableMapOf() var catalogStatus = "正在同步" - var activeModule = Module.TRAIN + var activeModule = Module.COURSE var currentCourse: TrainingVideoSummary? = null var continuousPlaybackEnabled = false var testSubtitleVisible = false diff --git a/android/sample-app/src/main/java/cn/learningpad/oraltrainer/sample/ui/TrainScreen.kt b/android/sample-app/src/main/java/cn/learningpad/oraltrainer/sample/ui/TrainScreen.kt index f413a3f..a611984 100644 --- a/android/sample-app/src/main/java/cn/learningpad/oraltrainer/sample/ui/TrainScreen.kt +++ b/android/sample-app/src/main/java/cn/learningpad/oraltrainer/sample/ui/TrainScreen.kt @@ -45,9 +45,9 @@ internal class TrainScreen( meta = if (enrolled) { "已选修 · ${video.sentenceCount} 句" } else { - "未选修 · 点击选修" + "未选修 · 点击选修并进入" }, - onClick = { actions.onTrainCatalogVideoClick(video, enrolled) }, + onClick = { actions.onTrainCatalogVideoClick(video) }, ), ) }