mirror of
https://github.com/Suwayomi/TachideskJUI.git
synced 2025-12-10 06:42:05 +01:00
Update dependencies
This commit is contained in:
@@ -34,7 +34,6 @@ kotlin {
|
||||
languageSettings {
|
||||
optIn("kotlin.RequiresOptIn")
|
||||
optIn("kotlinx.coroutines.ExperimentalCoroutinesApi")
|
||||
optIn("com.google.accompanist.pager.ExperimentalPagerApi")
|
||||
optIn("androidx.compose.animation.ExperimentalAnimationApi")
|
||||
optIn("androidx.compose.foundation.ExperimentalFoundationApi")
|
||||
optIn("androidx.compose.material.ExperimentalMaterialApi")
|
||||
@@ -45,7 +44,8 @@ kotlin {
|
||||
dependencies {
|
||||
api(kotlin("stdlib-common"))
|
||||
api(libs.coroutines.core)
|
||||
api(libs.imageloader)
|
||||
api(libs.imageloader.core)
|
||||
api(libs.imageloader.moko)
|
||||
api(libs.voyager.core)
|
||||
api(libs.voyager.navigation)
|
||||
api(libs.voyager.transitions)
|
||||
|
||||
@@ -14,12 +14,17 @@ import com.seiko.imageloader.cache.memory.MemoryCacheBuilder
|
||||
import com.seiko.imageloader.component.ComponentRegistryBuilder
|
||||
import com.seiko.imageloader.component.setupDefaultComponents
|
||||
import com.seiko.imageloader.option.Options
|
||||
import com.seiko.imageloader.option.OptionsBuilder
|
||||
import com.seiko.imageloader.option.androidContext
|
||||
import okio.Path.Companion.toOkioPath
|
||||
|
||||
actual val imageConfig: Options.ImageConfig = if (Build.VERSION.SDK_INT < Build.VERSION_CODES.O) {
|
||||
Options.ImageConfig.ARGB_8888
|
||||
} else {
|
||||
Options.ImageConfig.HARDWARE
|
||||
actual fun OptionsBuilder.configure(contextWrapper: ContextWrapper) {
|
||||
imageConfig = if (Build.VERSION.SDK_INT < Build.VERSION_CODES.O) {
|
||||
Options.ImageConfig.ARGB_8888
|
||||
} else {
|
||||
Options.ImageConfig.HARDWARE
|
||||
}
|
||||
androidContext(contextWrapper)
|
||||
}
|
||||
|
||||
actual fun ComponentRegistryBuilder.register(contextWrapper: ContextWrapper, http: Http) {
|
||||
|
||||
@@ -9,6 +9,7 @@ package ca.gosyer.jui.ui.base
|
||||
import androidx.compose.runtime.ProvidedValue
|
||||
import androidx.compose.runtime.compositionLocalOf
|
||||
import ca.gosyer.jui.core.di.AppScope
|
||||
import ca.gosyer.jui.core.io.SYSTEM
|
||||
import ca.gosyer.jui.ui.ViewModelComponent
|
||||
import ca.gosyer.jui.ui.base.image.ImageLoaderProvider
|
||||
import ca.gosyer.jui.ui.base.image.configure
|
||||
@@ -17,6 +18,7 @@ import com.seiko.imageloader.ImageLoader
|
||||
import com.seiko.imageloader.LocalImageLoader
|
||||
import com.seiko.imageloader.cache.disk.DiskCache
|
||||
import me.tatarka.inject.annotations.Provides
|
||||
import okio.FileSystem
|
||||
|
||||
typealias ImageCache = DiskCache
|
||||
|
||||
@@ -35,15 +37,22 @@ interface UiComponent {
|
||||
|
||||
@AppScope
|
||||
@Provides
|
||||
fun imageLoaderFactory(imageLoaderProvider: ImageLoaderProvider, imageCache: ImageCache): ImageLoader = imageLoaderProvider.get(imageCache)
|
||||
fun imageLoaderFactory(
|
||||
imageLoaderProvider: ImageLoaderProvider,
|
||||
imageCache: ImageCache
|
||||
): ImageLoader = imageLoaderProvider.get(imageCache)
|
||||
|
||||
@AppScope
|
||||
@Provides
|
||||
fun imageCacheFactory(): ImageCache = DiskCache { configure(contextWrapper, "image_cache") }
|
||||
fun imageCacheFactory(): ImageCache = DiskCache(FileSystem.SYSTEM) {
|
||||
configure(contextWrapper, "image_cache")
|
||||
}
|
||||
|
||||
@AppScope
|
||||
@Provides
|
||||
fun chapterCacheFactory(): ChapterCache = DiskCache { configure(contextWrapper, "chapter_cache") }
|
||||
fun chapterCacheFactory(): ChapterCache = DiskCache(FileSystem.SYSTEM) {
|
||||
configure(contextWrapper, "chapter_cache")
|
||||
}
|
||||
|
||||
@Provides
|
||||
fun getHooks(viewModelComponent: ViewModelComponent) = arrayOf(
|
||||
|
||||
@@ -17,9 +17,11 @@ import com.seiko.imageloader.ImageLoader
|
||||
import com.seiko.imageloader.cache.disk.DiskCacheBuilder
|
||||
import com.seiko.imageloader.cache.memory.MemoryCacheBuilder
|
||||
import com.seiko.imageloader.component.ComponentRegistryBuilder
|
||||
import com.seiko.imageloader.component.fetcher.MokoResourceFetcher
|
||||
import com.seiko.imageloader.component.keyer.Keyer
|
||||
import com.seiko.imageloader.component.mapper.Mapper
|
||||
import com.seiko.imageloader.option.Options
|
||||
import com.seiko.imageloader.option.OptionsBuilder
|
||||
import io.ktor.http.Url
|
||||
import kotlinx.coroutines.DelicateCoroutinesApi
|
||||
import kotlinx.coroutines.GlobalScope
|
||||
@@ -37,6 +39,7 @@ class ImageLoaderProvider @Inject constructor(
|
||||
return ImageLoader {
|
||||
components {
|
||||
register(context, http)
|
||||
add(MokoResourceFetcher.Factory())
|
||||
add(MangaCoverMapper())
|
||||
add(MangaCoverKeyer())
|
||||
add(ExtensionIconMapper())
|
||||
@@ -44,7 +47,9 @@ class ImageLoaderProvider @Inject constructor(
|
||||
add(SourceIconMapper())
|
||||
add(SourceIconKeyer())
|
||||
}
|
||||
options.config = imageConfig
|
||||
options {
|
||||
configure(context)
|
||||
}
|
||||
interceptor {
|
||||
diskCache { imageCache }
|
||||
memoryCacheConfig { configure(context) }
|
||||
@@ -61,7 +66,7 @@ class ImageLoaderProvider @Inject constructor(
|
||||
}
|
||||
|
||||
class MangaCoverKeyer : Keyer {
|
||||
override fun key(data: Any, options: Options): String? {
|
||||
override fun key(data: Any, options: Options, type: Keyer.Type): String? {
|
||||
if (data !is Manga) return null
|
||||
return "${data.sourceId}-${data.thumbnailUrl}-${data.thumbnailUrlLastFetched}"
|
||||
}
|
||||
@@ -76,7 +81,7 @@ class ImageLoaderProvider @Inject constructor(
|
||||
}
|
||||
|
||||
class ExtensionIconKeyer : Keyer {
|
||||
override fun key(data: Any, options: Options): String? {
|
||||
override fun key(data: Any, options: Options, type: Keyer.Type): String? {
|
||||
if (data !is Extension) return null
|
||||
return data.iconUrl
|
||||
}
|
||||
@@ -91,14 +96,14 @@ class ImageLoaderProvider @Inject constructor(
|
||||
}
|
||||
|
||||
class SourceIconKeyer : Keyer {
|
||||
override fun key(data: Any, options: Options): String? {
|
||||
override fun key(data: Any, options: Options, type: Keyer.Type): String? {
|
||||
if (data !is Source) return null
|
||||
return data.iconUrl
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
expect val imageConfig: Options.ImageConfig
|
||||
expect fun OptionsBuilder.configure(contextWrapper: ContextWrapper)
|
||||
|
||||
expect fun ComponentRegistryBuilder.register(contextWrapper: ContextWrapper, http: Http)
|
||||
|
||||
|
||||
@@ -7,6 +7,8 @@
|
||||
package ca.gosyer.jui.ui.library.components
|
||||
|
||||
import androidx.compose.foundation.layout.Box
|
||||
import androidx.compose.foundation.pager.HorizontalPager
|
||||
import androidx.compose.foundation.pager.PagerState
|
||||
import androidx.compose.runtime.Composable
|
||||
import androidx.compose.runtime.State
|
||||
import androidx.compose.runtime.collectAsState
|
||||
@@ -16,8 +18,6 @@ import ca.gosyer.jui.domain.library.model.DisplayMode
|
||||
import ca.gosyer.jui.ui.library.CategoryState
|
||||
import ca.gosyer.jui.uicore.components.ErrorScreen
|
||||
import ca.gosyer.jui.uicore.components.LoadingScreen
|
||||
import com.google.accompanist.pager.HorizontalPager
|
||||
import com.google.accompanist.pager.PagerState
|
||||
import kotlinx.collections.immutable.ImmutableList
|
||||
|
||||
@Composable
|
||||
|
||||
@@ -23,6 +23,8 @@ import androidx.compose.foundation.layout.fillMaxSize
|
||||
import androidx.compose.foundation.layout.only
|
||||
import androidx.compose.foundation.layout.padding
|
||||
import androidx.compose.foundation.layout.windowInsetsPadding
|
||||
import androidx.compose.foundation.pager.PagerState
|
||||
import androidx.compose.foundation.pager.rememberPagerState
|
||||
import androidx.compose.material.ModalBottomSheetLayout
|
||||
import androidx.compose.material.ModalBottomSheetValue
|
||||
import androidx.compose.material.Scaffold
|
||||
@@ -53,8 +55,6 @@ import ca.gosyer.jui.uicore.components.LoadingScreen
|
||||
import ca.gosyer.jui.uicore.insets.navigationBars
|
||||
import ca.gosyer.jui.uicore.insets.statusBars
|
||||
import ca.gosyer.jui.uicore.resources.stringResource
|
||||
import com.google.accompanist.pager.PagerState
|
||||
import com.google.accompanist.pager.rememberPagerState
|
||||
import kotlinx.collections.immutable.ImmutableList
|
||||
import kotlinx.collections.immutable.toImmutableList
|
||||
|
||||
|
||||
@@ -4,6 +4,8 @@
|
||||
* file, You can obtain one at https://mozilla.org/MPL/2.0/.
|
||||
*/
|
||||
|
||||
@file:Suppress("DEPRECATION")
|
||||
|
||||
package ca.gosyer.jui.ui.library.components
|
||||
|
||||
import androidx.compose.animation.AnimatedVisibility
|
||||
@@ -11,6 +13,7 @@ import androidx.compose.animation.expandVertically
|
||||
import androidx.compose.animation.shrinkVertically
|
||||
import androidx.compose.foundation.layout.Column
|
||||
import androidx.compose.foundation.layout.padding
|
||||
import androidx.compose.foundation.pager.PagerState
|
||||
import androidx.compose.foundation.shape.RoundedCornerShape
|
||||
import androidx.compose.material.Divider
|
||||
import androidx.compose.material.MaterialTheme
|
||||
@@ -24,10 +27,11 @@ import androidx.compose.ui.draw.clip
|
||||
import androidx.compose.ui.unit.dp
|
||||
import androidx.compose.ui.util.fastForEachIndexed
|
||||
import ca.gosyer.jui.domain.category.model.Category
|
||||
import com.google.accompanist.pager.PagerState
|
||||
import com.google.accompanist.pager.ExperimentalPagerApi
|
||||
import com.google.accompanist.pager.pagerTabIndicatorOffset
|
||||
import kotlinx.collections.immutable.ImmutableList
|
||||
|
||||
@OptIn(ExperimentalPagerApi::class)
|
||||
@Composable
|
||||
fun LibraryTabs(
|
||||
visible: Boolean,
|
||||
|
||||
@@ -4,6 +4,8 @@
|
||||
* file, You can obtain one at https://mozilla.org/MPL/2.0/.
|
||||
*/
|
||||
|
||||
@file:Suppress("DEPRECATION")
|
||||
|
||||
package ca.gosyer.jui.ui.library.settings
|
||||
|
||||
import androidx.compose.foundation.layout.Box
|
||||
@@ -11,6 +13,8 @@ import androidx.compose.foundation.layout.Column
|
||||
import androidx.compose.foundation.layout.fillMaxHeight
|
||||
import androidx.compose.foundation.layout.fillMaxSize
|
||||
import androidx.compose.foundation.layout.fillMaxWidth
|
||||
import androidx.compose.foundation.pager.HorizontalPager
|
||||
import androidx.compose.foundation.pager.rememberPagerState
|
||||
import androidx.compose.foundation.rememberScrollState
|
||||
import androidx.compose.foundation.verticalScroll
|
||||
import androidx.compose.material.Tab
|
||||
@@ -27,9 +31,8 @@ import ca.gosyer.jui.uicore.components.VerticalScrollbar
|
||||
import ca.gosyer.jui.uicore.components.rememberScrollbarAdapter
|
||||
import ca.gosyer.jui.uicore.components.scrollbarPadding
|
||||
import ca.gosyer.jui.uicore.resources.stringResource
|
||||
import com.google.accompanist.pager.HorizontalPager
|
||||
import com.google.accompanist.pager.ExperimentalPagerApi
|
||||
import com.google.accompanist.pager.pagerTabIndicatorOffset
|
||||
import com.google.accompanist.pager.rememberPagerState
|
||||
import dev.icerock.moko.resources.StringResource
|
||||
import kotlinx.coroutines.launch
|
||||
|
||||
@@ -39,6 +42,7 @@ enum class LibrarySheetTabs(val res: StringResource) {
|
||||
DISPLAY(MR.strings.library_display),
|
||||
}
|
||||
|
||||
@OptIn(ExperimentalPagerApi::class)
|
||||
@Composable
|
||||
fun LibrarySheet(
|
||||
libraryFilters: @Composable () -> Unit,
|
||||
@@ -68,7 +72,7 @@ fun LibrarySheet(
|
||||
}
|
||||
}
|
||||
HorizontalPager(
|
||||
count = LibrarySheetTabs.values().size,
|
||||
pageCount = LibrarySheetTabs.values().size,
|
||||
state = pagerState,
|
||||
verticalAlignment = Alignment.Top,
|
||||
) {
|
||||
|
||||
@@ -13,9 +13,10 @@ import com.seiko.imageloader.cache.disk.DiskCacheBuilder
|
||||
import com.seiko.imageloader.cache.memory.MemoryCacheBuilder
|
||||
import com.seiko.imageloader.component.ComponentRegistryBuilder
|
||||
import com.seiko.imageloader.component.setupDefaultComponents
|
||||
import com.seiko.imageloader.option.Options
|
||||
import com.seiko.imageloader.option.OptionsBuilder
|
||||
|
||||
actual val imageConfig: Options.ImageConfig = Options.ImageConfig.ARGB_8888
|
||||
actual fun OptionsBuilder.configure(contextWrapper: ContextWrapper) {
|
||||
}
|
||||
|
||||
actual fun ComponentRegistryBuilder.register(contextWrapper: ContextWrapper, http: Http) {
|
||||
setupDefaultComponents(httpClient = { http })
|
||||
|
||||
@@ -13,13 +13,14 @@ import com.seiko.imageloader.cache.memory.MemoryCacheBuilder
|
||||
import com.seiko.imageloader.cache.memory.maxSizePercent
|
||||
import com.seiko.imageloader.component.ComponentRegistryBuilder
|
||||
import com.seiko.imageloader.component.setupDefaultComponents
|
||||
import com.seiko.imageloader.option.Options
|
||||
import com.seiko.imageloader.option.OptionsBuilder
|
||||
import okio.Path.Companion.toPath
|
||||
import platform.Foundation.NSCachesDirectory
|
||||
import platform.Foundation.NSFileManager
|
||||
import platform.Foundation.NSUserDomainMask
|
||||
|
||||
actual val imageConfig: Options.ImageConfig = Options.ImageConfig.ARGB_8888
|
||||
actual fun OptionsBuilder.configure(contextWrapper: ContextWrapper) {
|
||||
}
|
||||
|
||||
actual fun ComponentRegistryBuilder.register(contextWrapper: ContextWrapper, http: Http) {
|
||||
setupDefaultComponents(httpClient = { http })
|
||||
|
||||
Reference in New Issue
Block a user