Merge branch 'feature/nextgen_dagger' into feature/nextgen

This commit is contained in:
Koitharu
2022-07-25 21:26:09 +03:00
181 changed files with 1750 additions and 1378 deletions

View File

@@ -0,0 +1,46 @@
package org.koitharu.kotatsu.utils.ext
import androidx.activity.ComponentActivity
import androidx.activity.viewModels
import androidx.annotation.MainThread
import androidx.fragment.app.Fragment
import androidx.fragment.app.createViewModelLazy
import androidx.fragment.app.viewModels
import androidx.lifecycle.AbstractSavedStateViewModelFactory
import androidx.lifecycle.SavedStateHandle
import androidx.lifecycle.ViewModel
import androidx.lifecycle.ViewModelProvider
import androidx.lifecycle.viewmodel.CreationExtras
@MainThread
inline fun <reified VM : ViewModel> ComponentActivity.assistedViewModels(
noinline viewModelProducer: (SavedStateHandle) -> VM,
): Lazy<VM> = viewModels {
object : AbstractSavedStateViewModelFactory(this, intent.extras) {
override fun <T : ViewModel> create(key: String, modelClass: Class<T>, handle: SavedStateHandle): T {
return requireNotNull(modelClass.cast(viewModelProducer(handle)))
}
}
}
@MainThread
inline fun <reified VM : ViewModel> Fragment.assistedViewModels(
noinline viewModelProducer: (SavedStateHandle) -> VM,
): Lazy<VM> = viewModels {
object : AbstractSavedStateViewModelFactory(this, arguments) {
override fun <T : ViewModel> create(key: String, modelClass: Class<T>, handle: SavedStateHandle): T {
return requireNotNull(modelClass.cast(viewModelProducer(handle)))
}
}
}
@MainThread
inline fun <reified VM : ViewModel> Fragment.parentFragmentViewModels(
noinline extrasProducer: (() -> CreationExtras)? = null,
noinline factoryProducer: (() -> ViewModelProvider.Factory)? = null,
): Lazy<VM> = createViewModelLazy(
viewModelClass = VM::class,
storeProducer = { requireParentFragment().viewModelStore },
extrasProducer = { extrasProducer?.invoke() ?: requireParentFragment().defaultViewModelCreationExtras },
factoryProducer = factoryProducer ?: { requireParentFragment().defaultViewModelProviderFactory },
)

View File

@@ -6,9 +6,11 @@ import android.text.Html
import coil.ImageLoader
import coil.executeBlocking
import coil.request.ImageRequest
import dagger.hilt.android.qualifiers.ApplicationContext
import javax.inject.Inject
class CoilImageGetter(
private val context: Context,
class CoilImageGetter @Inject constructor(
@ApplicationContext private val context: Context,
private val coil: ImageLoader,
) : Html.ImageGetter {
@@ -17,9 +19,9 @@ class CoilImageGetter(
ImageRequest.Builder(context)
.data(source)
.allowHardware(false)
.build()
.build(),
).drawable?.apply {
setBounds(0, 0, intrinsicHeight, intrinsicHeight)
}
}
}
}