[feat] Image Recents

This commit is contained in:
acite
2025-09-16 03:38:04 +08:00
parent e94249aa8f
commit 829804abee
6 changed files with 252 additions and 68 deletions

View File

@@ -25,7 +25,8 @@ import javax.inject.Inject
@HiltViewModel
class ComicGridViewModel @Inject constructor(
@ApplicationContext val context: Context,
val mediaManager: MediaManager
val mediaManager: MediaManager,
val recentManager: RecentManager
) : ViewModel()
{
var imageLoader: ImageLoader? = null
@@ -52,6 +53,7 @@ class ComicGridViewModel @Inject constructor(
viewModelScope.launch {
if(comic.value == null) {
comic.value = mediaManager.queryComicInfoSingle(id)
recentManager.pushComic(context, id)
val c = comic.value!!
for (i in c.comic.bookmarks) {
chapterList.add(i)

View File

@@ -1,9 +1,7 @@
package com.acitelight.aether.viewModel
import androidx.compose.runtime.Composable
import android.content.Context
import androidx.lifecycle.ViewModel
import androidx.compose.runtime.remember
import androidx.compose.ui.platform.LocalContext
import androidx.lifecycle.viewModelScope
import coil3.ImageLoader
import coil3.network.okhttp.OkHttpNetworkFetcherFactory
@@ -11,33 +9,27 @@ import com.acitelight.aether.service.ApiClient.createOkHttp
import com.acitelight.aether.service.RecentManager
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
val recentManager: RecentManager,
@ApplicationContext val context: Context
) : ViewModel()
{
var _init = false
var imageLoader: ImageLoader? = null;
var imageLoader: ImageLoader? = null
@Composable
fun Init(){
if(_init) return
_init = true
val context = LocalContext.current
init{
imageLoader = ImageLoader.Builder(context)
.components {
add(OkHttpNetworkFetcherFactory(createOkHttp()))
}
.build()
remember {
viewModelScope.launch {
recentManager.Query(context)
}
viewModelScope.launch {
recentManager.queryVideo(context)
recentManager.queryComic(context)
}
}
}

View File

@@ -1,10 +1,8 @@
package com.acitelight.aether.viewModel
import android.app.Activity
import android.net.Uri
import androidx.annotation.OptIn
import androidx.compose.runtime.Composable
import androidx.compose.runtime.State
import androidx.compose.runtime.getValue
import androidx.compose.runtime.mutableFloatStateOf
import androidx.compose.runtime.mutableIntStateOf
@@ -25,7 +23,6 @@ import androidx.media3.exoplayer.ExoPlayer
import androidx.media3.exoplayer.source.DefaultMediaSourceFactory
import coil3.ImageLoader
import coil3.network.okhttp.OkHttpNetworkFetcherFactory
import com.acitelight.aether.Global
import com.acitelight.aether.model.Video
import com.acitelight.aether.model.VideoQueryIndex
import com.acitelight.aether.service.ApiClient.createOkHttp
@@ -86,7 +83,7 @@ class VideoPlayerViewModel @Inject constructor(
remember {
viewModelScope.launch {
video = mediaManager.queryVideo(v.split("/")[0], v.split("/")[1])!!
recentManager.Push(context, VideoQueryIndex(v.split("/")[0], v.split("/")[1]))
recentManager.pushVideo(context, VideoQueryIndex(v.split("/")[0], v.split("/")[1]))
_player = (if(video!!.isLocal) ExoPlayer.Builder(context) else ExoPlayer.Builder(context).setMediaSourceFactory(DefaultMediaSourceFactory(dataSourceFactory)))
.build().apply {
val url = video?.getVideo() ?: ""