[fix] Repeatedly adding video cards when switching lists
This commit is contained in:
@@ -23,11 +23,13 @@ object MediaManager
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
suspend fun listVideos(klass: String, callback: (Video) -> Unit)
|
suspend fun listVideos(klass: String, filter: List<String>, callback: (Video) -> Unit)
|
||||||
{
|
{
|
||||||
val j = ApiClient.api!!.queryVideoClasses(klass, token)
|
val j = ApiClient.api!!.queryVideoClasses(klass, token)
|
||||||
for(it in j)
|
for(it in j)
|
||||||
{
|
{
|
||||||
|
if(filter.contains(it))
|
||||||
|
continue
|
||||||
try {
|
try {
|
||||||
callback(queryVideo(klass, it)!!)
|
callback(queryVideo(klass, it)!!)
|
||||||
}catch (e: Exception)
|
}catch (e: Exception)
|
||||||
|
|||||||
@@ -34,6 +34,7 @@ class VideoScreenViewModel(application: Application) : AndroidViewModel(applicat
|
|||||||
val classesMap = mutableStateMapOf<String, SnapshotStateList<Video>>()
|
val classesMap = mutableStateMapOf<String, SnapshotStateList<Video>>()
|
||||||
|
|
||||||
var imageLoader: ImageLoader? = null;
|
var imageLoader: ImageLoader? = null;
|
||||||
|
val updatingMap: MutableMap<Int, Boolean> = mutableMapOf()
|
||||||
|
|
||||||
@Composable
|
@Composable
|
||||||
fun SetupClient()
|
fun SetupClient()
|
||||||
@@ -48,12 +49,14 @@ class VideoScreenViewModel(application: Application) : AndroidViewModel(applicat
|
|||||||
|
|
||||||
suspend fun init() {
|
suspend fun init() {
|
||||||
classes.addAll(MediaManager.listVideoKlasses())
|
classes.addAll(MediaManager.listVideoKlasses())
|
||||||
|
var i = 0
|
||||||
for(it in classes)
|
for(it in classes)
|
||||||
{
|
{
|
||||||
|
updatingMap[i++] = false
|
||||||
classesMap[it] = mutableStateListOf<Video>()
|
classesMap[it] = mutableStateListOf<Video>()
|
||||||
}
|
}
|
||||||
|
updatingMap[0] = true
|
||||||
MediaManager.listVideos(classes[0]){
|
MediaManager.listVideos(classes[0], listOf()){
|
||||||
v -> classesMap[classes[0]]?.insertInNaturalOrder(v)
|
v -> classesMap[classes[0]]?.insertInNaturalOrder(v)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -63,10 +66,14 @@ class VideoScreenViewModel(application: Application) : AndroidViewModel(applicat
|
|||||||
viewModelScope.launch()
|
viewModelScope.launch()
|
||||||
{
|
{
|
||||||
_tabIndex.intValue = index;
|
_tabIndex.intValue = index;
|
||||||
|
if(updatingMap[index] == true) return@launch
|
||||||
|
|
||||||
MediaManager.listVideos(classes[index])
|
updatingMap[index] = true
|
||||||
|
MediaManager.listVideos(classes[index], (classesMap[classes[index]]?:listOf()).map{ it.id })
|
||||||
{
|
{
|
||||||
v -> classesMap[classes[index]]?.insertInNaturalOrder(v)
|
v ->
|
||||||
|
if(classesMap[classes[index]]?.contains(v) == false)
|
||||||
|
classesMap[classes[index]]?.insertInNaturalOrder(v)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user