[optimize] Architecture is shifting towards Hilt comprehensively
This commit is contained in:
@@ -15,9 +15,15 @@ import com.acitelight.aether.model.ComicRecord
|
||||
import com.acitelight.aether.model.ComicRecordDatabase
|
||||
import com.acitelight.aether.service.ApiClient.createOkHttp
|
||||
import com.acitelight.aether.service.MediaManager
|
||||
import com.acitelight.aether.service.RecentManager
|
||||
import dagger.hilt.android.lifecycle.HiltViewModel
|
||||
import kotlinx.coroutines.launch
|
||||
import javax.inject.Inject
|
||||
|
||||
class ComicGridViewModel : ViewModel()
|
||||
@HiltViewModel
|
||||
class ComicGridViewModel @Inject constructor(
|
||||
val mediaManager: MediaManager
|
||||
) : ViewModel()
|
||||
{
|
||||
var imageLoader: ImageLoader? = null
|
||||
var comic = mutableStateOf<Comic?>(null)
|
||||
@@ -47,12 +53,12 @@ class ComicGridViewModel : ViewModel()
|
||||
{
|
||||
viewModelScope.launch {
|
||||
if(comic.value == null) {
|
||||
comic.value = MediaManager.queryComicInfoSingle(id)
|
||||
comic.value = mediaManager.queryComicInfoSingle(id)
|
||||
val c = comic.value!!
|
||||
for (i in c.comic.bookmarks) {
|
||||
chapterList.add(i)
|
||||
}
|
||||
}else comic.value = MediaManager.queryComicInfoSingle(id)
|
||||
}else comic.value = mediaManager.queryComicInfoSingle(id)
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
package com.acitelight.aether.viewModel
|
||||
|
||||
import android.content.Context
|
||||
import androidx.compose.foundation.ExperimentalFoundationApi
|
||||
import androidx.compose.foundation.lazy.LazyListState
|
||||
import androidx.compose.foundation.lazy.rememberLazyListState
|
||||
@@ -21,11 +22,18 @@ import com.acitelight.aether.model.ComicRecord
|
||||
import com.acitelight.aether.model.ComicRecordDatabase
|
||||
import com.acitelight.aether.service.ApiClient.createOkHttp
|
||||
import com.acitelight.aether.service.MediaManager
|
||||
import com.acitelight.aether.service.SettingsDataStoreManager
|
||||
import com.acitelight.aether.view.hexToString
|
||||
import dagger.hilt.android.lifecycle.HiltViewModel
|
||||
import dagger.hilt.android.qualifiers.ApplicationContext
|
||||
import kotlinx.coroutines.CoroutineScope
|
||||
import kotlinx.coroutines.launch
|
||||
import javax.inject.Inject
|
||||
|
||||
class ComicPageViewModel : ViewModel()
|
||||
@HiltViewModel
|
||||
class ComicPageViewModel @Inject constructor(
|
||||
val mediaManager: MediaManager
|
||||
) : ViewModel()
|
||||
{
|
||||
var imageLoader: ImageLoader? = null
|
||||
var comic = mutableStateOf<Comic?>(null)
|
||||
@@ -63,7 +71,7 @@ class ComicPageViewModel : ViewModel()
|
||||
if(comic.value != null) return
|
||||
LaunchedEffect(id, page) {
|
||||
coroutineScope?.launch {
|
||||
comic.value = MediaManager.queryComicInfoSingle(id)
|
||||
comic.value = mediaManager.queryComicInfoSingle(id)
|
||||
comic.value?.let {
|
||||
pageList.addAll(it.comic.list)
|
||||
title.value = it.comic.comic_name
|
||||
|
||||
@@ -11,11 +11,16 @@ import com.acitelight.aether.model.Comic
|
||||
import com.acitelight.aether.model.ComicResponse
|
||||
import com.acitelight.aether.service.ApiClient.createOkHttp
|
||||
import com.acitelight.aether.service.MediaManager
|
||||
import dagger.hilt.android.lifecycle.HiltViewModel
|
||||
import kotlinx.coroutines.flow.MutableStateFlow
|
||||
import kotlinx.coroutines.flow.StateFlow
|
||||
import kotlinx.coroutines.launch
|
||||
import javax.inject.Inject
|
||||
|
||||
class ComicScreenViewModel : ViewModel() {
|
||||
@HiltViewModel
|
||||
class ComicScreenViewModel @Inject constructor(
|
||||
val mediaManager: MediaManager
|
||||
) : ViewModel() {
|
||||
|
||||
var imageLoader: ImageLoader? = null;
|
||||
|
||||
@@ -56,8 +61,8 @@ class ComicScreenViewModel : ViewModel() {
|
||||
|
||||
init {
|
||||
viewModelScope.launch {
|
||||
val l = MediaManager.listComics()
|
||||
val m = MediaManager.queryComicInfoBulk(l)
|
||||
val l = mediaManager.listComics()
|
||||
val m = mediaManager.queryComicInfoBulk(l)
|
||||
|
||||
if(m != null) {
|
||||
comics.addAll(m.sortedWith(compareBy(naturalOrder()) { it.comic.comic_name }))
|
||||
|
||||
@@ -1,46 +1,23 @@
|
||||
package com.acitelight.aether.viewModel
|
||||
|
||||
import android.app.Application
|
||||
import android.content.Context
|
||||
import android.widget.Toast
|
||||
import androidx.compose.runtime.Composable
|
||||
import androidx.compose.runtime.mutableStateOf
|
||||
import androidx.lifecycle.ViewModel
|
||||
import androidx.compose.runtime.State
|
||||
import androidx.compose.runtime.mutableIntStateOf
|
||||
import androidx.compose.runtime.remember
|
||||
import androidx.compose.ui.platform.LocalContext
|
||||
import androidx.datastore.preferences.core.stringPreferencesKey
|
||||
import androidx.lifecycle.AndroidViewModel
|
||||
import androidx.lifecycle.viewModelScope
|
||||
import coil3.ImageLoader
|
||||
import coil3.network.okhttp.OkHttpNetworkFetcherFactory
|
||||
import okhttp3.OkHttpClient
|
||||
import com.acitelight.aether.Global
|
||||
import com.acitelight.aether.dataStore
|
||||
import com.acitelight.aether.model.Video
|
||||
import com.acitelight.aether.model.VideoQueryIndex
|
||||
import com.acitelight.aether.service.ApiClient
|
||||
import com.acitelight.aether.service.ApiClient.createOkHttp
|
||||
import com.acitelight.aether.service.AuthManager
|
||||
import com.acitelight.aether.service.MediaManager
|
||||
import com.acitelight.aether.service.MediaManager.token
|
||||
import com.acitelight.aether.service.RecentManager
|
||||
import kotlinx.coroutines.flow.Flow
|
||||
import kotlinx.coroutines.flow.MutableStateFlow
|
||||
import kotlinx.coroutines.flow.StateFlow
|
||||
import kotlinx.coroutines.flow.first
|
||||
import kotlinx.coroutines.flow.map
|
||||
import kotlinx.coroutines.launch
|
||||
import javax.inject.Inject
|
||||
import com.acitelight.aether.service.*
|
||||
import dagger.hilt.android.lifecycle.HiltViewModel
|
||||
import dagger.hilt.android.qualifiers.ApplicationContext
|
||||
|
||||
|
||||
@HiltViewModel
|
||||
class HomeScreenViewModel @Inject constructor(
|
||||
|
||||
val recentManager: RecentManager
|
||||
) : ViewModel()
|
||||
{
|
||||
var _init = false
|
||||
@@ -59,7 +36,7 @@ class HomeScreenViewModel @Inject constructor(
|
||||
.build()
|
||||
remember {
|
||||
viewModelScope.launch {
|
||||
RecentManager.Query(context)
|
||||
recentManager.Query(context)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -29,7 +29,8 @@ import dagger.hilt.android.qualifiers.ApplicationContext
|
||||
@HiltViewModel
|
||||
class MeScreenViewModel @Inject constructor(
|
||||
private val settingsDataStoreManager: SettingsDataStoreManager,
|
||||
@ApplicationContext private val context: Context
|
||||
@ApplicationContext private val context: Context,
|
||||
val mediaManager: MediaManager
|
||||
) : ViewModel() {
|
||||
|
||||
val username = mutableStateOf("");
|
||||
@@ -51,8 +52,8 @@ class MeScreenViewModel @Inject constructor(
|
||||
try{
|
||||
val usedUrl = ApiClient.apply(context, url.value, if(uss.first()) cert.value else "")
|
||||
|
||||
if (MediaManager.token == "null")
|
||||
MediaManager.token = AuthManager.fetchToken(
|
||||
if (mediaManager.token == "null")
|
||||
mediaManager.token = AuthManager.fetchToken(
|
||||
username.value,
|
||||
settingsDataStoreManager.privateKeyFlow.first()
|
||||
)!!
|
||||
@@ -87,7 +88,7 @@ class MeScreenViewModel @Inject constructor(
|
||||
|
||||
try {
|
||||
val usedUrl = ApiClient.apply(context, u, if(uss.first()) c else "")
|
||||
MediaManager.token = AuthManager.fetchToken(
|
||||
mediaManager.token = AuthManager.fetchToken(
|
||||
us,
|
||||
p
|
||||
)!!
|
||||
@@ -117,7 +118,7 @@ class MeScreenViewModel @Inject constructor(
|
||||
if (u == "" || p == "" || ur == "") return@launch
|
||||
|
||||
try {
|
||||
MediaManager.token = AuthManager.fetchToken(
|
||||
mediaManager.token = AuthManager.fetchToken(
|
||||
u,
|
||||
p
|
||||
)!!
|
||||
|
||||
@@ -29,12 +29,18 @@ import com.acitelight.aether.service.ApiClient.createOkHttp
|
||||
import com.acitelight.aether.service.MediaManager
|
||||
import com.acitelight.aether.service.RecentManager
|
||||
import com.acitelight.aether.view.hexToString
|
||||
import dagger.hilt.android.lifecycle.HiltViewModel
|
||||
import kotlinx.coroutines.CoroutineScope
|
||||
import kotlinx.coroutines.Dispatchers
|
||||
import kotlinx.coroutines.delay
|
||||
import kotlinx.coroutines.launch
|
||||
import javax.inject.Inject
|
||||
|
||||
class VideoPlayerViewModel() : ViewModel()
|
||||
@HiltViewModel
|
||||
class VideoPlayerViewModel @Inject constructor(
|
||||
val mediaManager: MediaManager,
|
||||
val recentManager: RecentManager
|
||||
) : ViewModel()
|
||||
{
|
||||
var tabIndex by mutableIntStateOf(0)
|
||||
var isPlaying by mutableStateOf(true)
|
||||
@@ -77,8 +83,8 @@ class VideoPlayerViewModel() : ViewModel()
|
||||
|
||||
remember {
|
||||
viewModelScope.launch {
|
||||
video = MediaManager.queryVideo(v.split("/")[0], v.split("/")[1])!!
|
||||
RecentManager.Push(context, VideoQueryIndex(v.split("/")[0], v.split("/")[1]))
|
||||
video = mediaManager.queryVideo(v.split("/")[0], v.split("/")[1])!!
|
||||
recentManager.Push(context, VideoQueryIndex(v.split("/")[0], v.split("/")[1]))
|
||||
_player = ExoPlayer
|
||||
.Builder(context)
|
||||
.setMediaSourceFactory(DefaultMediaSourceFactory(dataSourceFactory))
|
||||
|
||||
@@ -1,43 +1,39 @@
|
||||
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.datastore.preferences.core.stringPreferencesKey
|
||||
import androidx.lifecycle.AndroidViewModel
|
||||
import androidx.lifecycle.ViewModel
|
||||
import androidx.lifecycle.viewModelScope
|
||||
import coil3.ImageLoader
|
||||
import coil3.network.okhttp.OkHttpNetworkFetcherFactory
|
||||
import com.acitelight.aether.dataStore
|
||||
import com.acitelight.aether.helper.insertInNaturalOrder
|
||||
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.MediaManager.queryVideoKlasses
|
||||
import com.acitelight.aether.service.RecentManager
|
||||
import dagger.hilt.android.lifecycle.HiltViewModel
|
||||
import kotlinx.coroutines.flow.Flow
|
||||
import kotlinx.coroutines.flow.first
|
||||
import kotlinx.coroutines.flow.map
|
||||
import dagger.hilt.android.qualifiers.ApplicationContext
|
||||
import kotlinx.coroutines.launch
|
||||
import javax.inject.Inject
|
||||
|
||||
@HiltViewModel
|
||||
class VideoScreenViewModel @Inject constructor(
|
||||
private val fetchManager: FetchManager
|
||||
private val fetchManager: FetchManager,
|
||||
@ApplicationContext val context: Context,
|
||||
val mediaManager: MediaManager,
|
||||
val recentManager: RecentManager
|
||||
) : ViewModel()
|
||||
{
|
||||
private val _tabIndex = mutableIntStateOf(0)
|
||||
val tabIndex: State<Int> = _tabIndex
|
||||
// val videos = mutableStateListOf<Video>()
|
||||
// private val _klasses = MutableStateFlow<List<String>>(emptyList())
|
||||
var classes = mutableStateListOf<String>()
|
||||
val classesMap = mutableStateMapOf<String, SnapshotStateList<Video>>()
|
||||
|
||||
@@ -56,7 +52,7 @@ class VideoScreenViewModel @Inject constructor(
|
||||
}
|
||||
|
||||
suspend fun init() {
|
||||
classes.addAll(MediaManager.listVideoKlasses())
|
||||
classes.addAll(mediaManager.listVideoKlasses())
|
||||
var i = 0
|
||||
for(it in classes)
|
||||
{
|
||||
@@ -64,7 +60,7 @@ class VideoScreenViewModel @Inject constructor(
|
||||
classesMap[it] = mutableStateListOf<Video>()
|
||||
}
|
||||
updatingMap[0] = true
|
||||
val vl = MediaManager.queryVideoBulk(classes[0], queryVideoKlasses(classes[0]))
|
||||
val vl = mediaManager.queryVideoBulk(classes[0], mediaManager.queryVideoKlasses(classes[0]))
|
||||
|
||||
if(vl != null){
|
||||
val r = vl.sortedWith(compareBy(naturalOrder()) { it.video.name })
|
||||
@@ -81,7 +77,7 @@ class VideoScreenViewModel @Inject constructor(
|
||||
|
||||
updatingMap[index] = true
|
||||
|
||||
val vl = MediaManager.queryVideoBulk(classes[index], queryVideoKlasses(classes[index]))
|
||||
val vl = mediaManager.queryVideoBulk(classes[index], mediaManager.queryVideoKlasses(classes[index]))
|
||||
|
||||
if(vl != null){
|
||||
val r = vl.sortedWith(compareBy(naturalOrder()) { it.video.name })
|
||||
|
||||
Reference in New Issue
Block a user