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.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; suspend fun init() { fetchManager.configured.filter { it }.first() if (Global.loggedIn) { videoLibrary.classes.addAll(mediaManager.listVideoKlasses()) var i = 0 for (it in videoLibrary.classes) { videoLibrary.updatingMap[i++] = false videoLibrary.classesMap[it] = mutableStateListOf