package com.acitelight.aether.viewModel import android.app.Application import android.content.Context import androidx.compose.runtime.Composable import androidx.compose.runtime.State import androidx.compose.runtime.mutableIntStateOf import androidx.compose.runtime.mutableStateListOf import androidx.compose.runtime.mutableStateMapOf import androidx.compose.runtime.mutableStateOf import androidx.compose.runtime.snapshots.SnapshotStateList import androidx.compose.ui.platform.LocalContext import androidx.lifecycle.ViewModel import androidx.lifecycle.viewModelScope import coil3.ImageLoader import coil3.network.okhttp.OkHttpNetworkFetcherFactory import com.acitelight.aether.Global import com.acitelight.aether.model.Video import com.acitelight.aether.service.ApiClient.createOkHttp import com.acitelight.aether.service.FetchManager import com.acitelight.aether.service.MediaManager import com.acitelight.aether.service.RecentManager import com.acitelight.aether.service.VideoLibrary import com.tonyodev.fetch2.Status import dagger.hilt.android.lifecycle.HiltViewModel import dagger.hilt.android.qualifiers.ApplicationContext import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.flow.filter import kotlinx.coroutines.flow.first import kotlinx.coroutines.launch import kotlinx.serialization.json.Json import java.io.File import javax.inject.Inject import javax.inject.Singleton @HiltViewModel class VideoScreenViewModel @Inject constructor( private val fetchManager: FetchManager, @ApplicationContext val context: Context, val mediaManager: MediaManager, val recentManager: RecentManager, val videoLibrary: VideoLibrary ) : ViewModel() { private val _tabIndex = mutableIntStateOf(0) val tabIndex: State = _tabIndex var imageLoader: ImageLoader? = null; var menuVisibility = mutableStateOf(false) var searchFilter = mutableStateOf("") var doneInit = mutableStateOf(false) suspend fun init() { fetchManager.configured.filter { it }.first() if (Global.loggedIn) { videoLibrary.classes.addAll(mediaManager.listVideoKlasses()) if(videoLibrary.classes.isEmpty()) return var i = 0 for (it in videoLibrary.classes) { videoLibrary.updatingMap[i++] = false videoLibrary.classesMap[it] = mutableStateListOf