[optimize] Optimize HomeScreen

This commit is contained in:
acite
2025-08-26 02:26:20 +08:00
parent b74ca98bf9
commit 01246e89ba
2 changed files with 14 additions and 14 deletions

View File

@@ -1,6 +1,7 @@
package com.acitelight.aether.service package com.acitelight.aether.service
import android.content.Context import android.content.Context
import androidx.compose.runtime.mutableStateListOf
import com.acitelight.aether.model.Video import com.acitelight.aether.model.Video
import com.acitelight.aether.model.VideoQueryIndex import com.acitelight.aether.model.VideoQueryIndex
import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.Dispatchers
@@ -50,11 +51,15 @@ object RecentManager
try{ try{
val r = Json.decodeFromString<List<VideoQueryIndex>>(content) val r = Json.decodeFromString<List<VideoQueryIndex>>(content)
val vn = r.map{ recent.clear()
MediaManager.queryVideo(it.klass, it.id)
}.filter { it != null } for(it in r)
{
val v = MediaManager.queryVideo(it.klass, it.id)
if(v != null)
recent.add(recent.size, v)
}
_recent.value = vn.map { it!! }
return r return r
}catch (e: Exception) }catch (e: Exception)
{ {
@@ -74,6 +79,7 @@ object RecentManager
{ {
val temp = o[0] val temp = o[0]
val index = o.indexOf(video) val index = o.indexOf(video)
recent.removeAt(index)
o[0] = o[index] o[0] = o[index]
o[index] = temp o[index] = temp
} }
@@ -85,15 +91,10 @@ object RecentManager
if(o.size >= 21) if(o.size >= 21)
o.removeAt(o.size - 1) o.removeAt(o.size - 1)
val vn = o.map{ recent.add(0, MediaManager.queryVideo(video.klass, video.id)!!)
MediaManager.queryVideo(it.klass, it.id)
}.filter { it != null }
_recent.value = vn.map { it!! }
writeFile(context, "recent.json", Json.encodeToString(o)) writeFile(context, "recent.json", Json.encodeToString(o))
} }
} }
private val _recent = MutableStateFlow<List<Video>>(emptyList()) val recent = mutableStateListOf<Video>()
val recent: StateFlow<List<Video>> = _recent
} }

View File

@@ -34,7 +34,6 @@ fun HomeScreen(homeScreenViewModel: HomeScreenViewModel = viewModel(), navContro
{ {
if(Global.loggedIn) if(Global.loggedIn)
homeScreenViewModel.Init() homeScreenViewModel.Init()
val recent by RecentManager.recent.collectAsState()
LazyColumn(modifier = Modifier.fillMaxWidth()) LazyColumn(modifier = Modifier.fillMaxWidth())
{ {
@@ -49,14 +48,14 @@ fun HomeScreen(homeScreenViewModel: HomeScreenViewModel = viewModel(), navContro
HorizontalDivider(Modifier.padding(8.dp), 2.dp, DividerDefaults.color) HorizontalDivider(Modifier.padding(8.dp), 2.dp, DividerDefaults.color)
for(i in recent) for(i in RecentManager.recent)
{ {
MiniVideoCard( MiniVideoCard(
modifier = Modifier modifier = Modifier
.padding(horizontal = 12.dp), .padding(horizontal = 12.dp),
i, i,
{ {
Global.sameClassVideos = recent Global.sameClassVideos = RecentManager.recent
val route = "video_player_route/${ "${i.klass}/${i.id}".toHex() }" val route = "video_player_route/${ "${i.klass}/${i.id}".toHex() }"
navController.navigate(route) navController.navigate(route)
}) })