[feat] Bulk Requests

This commit is contained in:
acite
2025-09-13 14:51:09 +08:00
parent b4e73c4212
commit 7d07f19440
9 changed files with 87 additions and 29 deletions

View File

@@ -47,12 +47,12 @@ class ComicGridViewModel : ViewModel()
{
viewModelScope.launch {
if(comic.value == null) {
comic.value = MediaManager.queryComicInfo(id)
comic.value = MediaManager.queryComicInfoSingle(id)
val c = comic.value!!
for (i in c.comic.bookmarks) {
chapterList.add(i)
}
}else comic.value = MediaManager.queryComicInfo(id)
}else comic.value = MediaManager.queryComicInfoSingle(id)
}
}

View File

@@ -63,7 +63,7 @@ class ComicPageViewModel : ViewModel()
if(comic.value != null) return
LaunchedEffect(id, page) {
coroutineScope?.launch {
comic.value = MediaManager.queryComicInfo(id)
comic.value = MediaManager.queryComicInfoSingle(id)
comic.value?.let {
pageList.addAll(it.comic.list)
title.value = it.comic.comic_name

View File

@@ -57,14 +57,14 @@ class ComicScreenViewModel : ViewModel() {
init {
viewModelScope.launch {
val l = MediaManager.listComics()
for(i in l)
{
val m = MediaManager.queryComicInfo(i)
if(m != null) {
comics.add(m)
for(i in m.comic.tags)
val m = MediaManager.queryComicInfoBulk(l)
if(m != null) {
for(i in m)
{
comics.add(i)
for(j in i.comic.tags)
{
insertItem(i)
insertItem(j)
}
}
}

View File

@@ -19,6 +19,7 @@ import com.acitelight.aether.helper.insertInNaturalOrder
import com.acitelight.aether.model.Video
import com.acitelight.aether.service.ApiClient.createOkHttp
import com.acitelight.aether.service.MediaManager
import com.acitelight.aether.service.MediaManager.queryVideoKlasses
import kotlinx.coroutines.flow.Flow
import kotlinx.coroutines.flow.first
import kotlinx.coroutines.flow.map
@@ -56,9 +57,15 @@ class VideoScreenViewModel(application: Application) : AndroidViewModel(applicat
classesMap[it] = mutableStateListOf<Video>()
}
updatingMap[0] = true
MediaManager.listVideos(classes[0], listOf()){
v -> classesMap[classes[0]]?.insertInNaturalOrder(v)
}
val vl = MediaManager.queryVideoBulk(classes[0],
queryVideoKlasses(classes[0])
)
if(vl != null)
for(it in vl)
{
classesMap[classes[0]]?.insertInNaturalOrder(it)
}
}
fun setTabIndex(index: Int)
@@ -69,12 +76,16 @@ class VideoScreenViewModel(application: Application) : AndroidViewModel(applicat
if(updatingMap[index] == true) return@launch
updatingMap[index] = true
MediaManager.listVideos(classes[index], (classesMap[classes[index]]?:listOf()).map{ it.id })
{
v ->
if(classesMap[classes[index]]?.contains(v) == false)
classesMap[classes[index]]?.insertInNaturalOrder(v)
}
val vl = MediaManager.queryVideoBulk(classes[index],
queryVideoKlasses(classes[index])
)
if(vl != null)
for(it in vl)
{
classesMap[classes[index]]?.insertInNaturalOrder(it)
}
}
}