diff --git a/app/src/main/java/com/acitelight/aether/view/HomeScreen.kt b/app/src/main/java/com/acitelight/aether/view/HomeScreen.kt index 1a5cd6d..8023230 100644 --- a/app/src/main/java/com/acitelight/aether/view/HomeScreen.kt +++ b/app/src/main/java/com/acitelight/aether/view/HomeScreen.kt @@ -82,7 +82,7 @@ fun HomeScreen( { updateRelate(homeScreenViewModel.recentManager.recentVideo, i) - val playList = mutableListOf("${i.klass}/${i.id}") + val playList = mutableListOf() val fv = homeScreenViewModel.videoLibrary.classesMap.map { it.value }.flatten() val group = fv.filter { it.klass == i.klass && it.video.group == i.video.group } @@ -90,7 +90,7 @@ fun HomeScreen( playList.add("${i.klass}/${i.id}") } - val route = "video_player_route/${playList.joinToString(",").toHex()}" + val route = "video_player_route/${(playList.joinToString(",") + "|${i.id}").toHex()}" navController.navigate(route) }, homeScreenViewModel.imageLoader!!) HorizontalDivider(Modifier.padding(vertical = 8.dp).alpha(0.4f), 1.dp, DividerDefaults.color) diff --git a/app/src/main/java/com/acitelight/aether/view/TransmissionScreen.kt b/app/src/main/java/com/acitelight/aether/view/TransmissionScreen.kt index 78ec7a2..2f8a1bf 100644 --- a/app/src/main/java/com/acitelight/aether/view/TransmissionScreen.kt +++ b/app/src/main/java/com/acitelight/aether/view/TransmissionScreen.kt @@ -150,7 +150,7 @@ private fun VideoDownloadCard( jsonQuery.first { it.id == model.vid && it.klass == model.klass } ) - val playList = mutableListOf("${model.klass}/${model.vid}") + val playList = mutableListOf() val fv = viewModel.videoLibrary.classesMap.map { it.value }.flatten() val video = fv.firstOrNull { it.klass == model.klass && it.id == model.vid } @@ -161,7 +161,7 @@ private fun VideoDownloadCard( } } - val route = "video_player_route/${playList.joinToString(",").toHex()}" + val route = "video_player_route/${(playList.joinToString(",") + "|${model.vid}").toHex()}" withContext(Dispatchers.Main) { navigator.navigate(route) } diff --git a/app/src/main/java/com/acitelight/aether/view/VideoPlayerPortal.kt b/app/src/main/java/com/acitelight/aether/view/VideoPlayerPortal.kt index b9fe71f..c8afddb 100644 --- a/app/src/main/java/com/acitelight/aether/view/VideoPlayerPortal.kt +++ b/app/src/main/java/com/acitelight/aether/view/VideoPlayerPortal.kt @@ -47,6 +47,7 @@ import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.sp import androidx.navigation.NavHostController import com.acitelight.aether.Global +import com.acitelight.aether.Global.updateRelate import com.acitelight.aether.ToggleFullScreen import com.acitelight.aether.viewModel.VideoPlayerViewModel @@ -247,7 +248,16 @@ fun VideoPlayerPortal( { videoPlayerViewModel.isPlaying = false videoPlayerViewModel.player?.pause() - val route = "video_player_route/${"${i.klass}/${i.id}".toHex()}" + + val playList = mutableListOf() + val fv = videoPlayerViewModel.videoLibrary.classesMap.map { it.value }.flatten() + + val group = fv.filter { it.klass == i.klass && it.video.group == i.video.group } + for (i in group) { + playList.add("${i.klass}/${i.id}") + } + + val route = "video_player_route/${playList.joinToString(",").toHex()}" navController.navigate(route) }, videoPlayerViewModel.imageLoader!! ) diff --git a/app/src/main/java/com/acitelight/aether/viewModel/VideoPlayerViewModel.kt b/app/src/main/java/com/acitelight/aether/viewModel/VideoPlayerViewModel.kt index a18d3c1..287d9a4 100644 --- a/app/src/main/java/com/acitelight/aether/viewModel/VideoPlayerViewModel.kt +++ b/app/src/main/java/com/acitelight/aether/viewModel/VideoPlayerViewModel.kt @@ -49,6 +49,7 @@ import androidx.media3.datasource.DefaultDataSource import androidx.media3.exoplayer.trackselection.DefaultTrackSelector import com.acitelight.aether.Global import com.acitelight.aether.model.KeyImage +import com.acitelight.aether.service.VideoLibrary import kotlinx.coroutines.flow.filter import kotlinx.coroutines.flow.first @@ -56,7 +57,8 @@ import kotlinx.coroutines.flow.first class VideoPlayerViewModel @Inject constructor( @ApplicationContext private val context: Context, val mediaManager: MediaManager, - val recentManager: RecentManager + val recentManager: RecentManager, + val videoLibrary: VideoLibrary, ) : ViewModel() { var tabIndex by mutableIntStateOf(0) var isPlaying by mutableStateOf(true) @@ -100,7 +102,16 @@ class VideoPlayerViewModel @Inject constructor( return _init = true - val vs = videoId.hexToString().split(",").map { it.split("/") }.toMutableList() + val oId = videoId.hexToString() + var spec = "-1" + var vs = mutableListOf>() + + if(oId.contains("|")) + { + vs = oId.split("|")[0].split(",").map { it.split("/") }.toMutableList() + spec = oId.split("|")[1] + } + imageLoader = ImageLoader.Builder(context) .components { add(OkHttpNetworkFetcherFactory(createOkHttp())) @@ -114,7 +125,9 @@ class VideoPlayerViewModel @Inject constructor( videos = mediaManager.queryVideoBulk(vs.first()[0], vs.map { it[1] })!! startPlay( - if (ix != null) + if(spec != "-1") + videos.first { it.id == spec} + else if (ix != null) videos.first { it.id == ix.id } else videos.first() )