Merge branch 'feature/nextgen_dagger' into feature/nextgen
This commit is contained in:
@@ -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 },
|
||||
)
|
||||
@@ -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)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user