diff --git a/app/src/main/java/com/hippo/ehviewer/ui/scene/FavoritesScene.kt b/app/src/main/java/com/hippo/ehviewer/ui/scene/FavoritesScene.kt index f3ce126a8..19e22baed 100644 --- a/app/src/main/java/com/hippo/ehviewer/ui/scene/FavoritesScene.kt +++ b/app/src/main/java/com/hippo/ehviewer/ui/scene/FavoritesScene.kt @@ -83,6 +83,9 @@ import com.hippo.ehviewer.ui.legacy.WindowInsetsAnimationHelper import com.hippo.ehviewer.ui.setMD3Content import com.hippo.ehviewer.util.ExceptionUtils import com.hippo.ehviewer.util.getParcelableCompat +import com.hippo.ehviewer.util.getValue +import com.hippo.ehviewer.util.lazyMut +import com.hippo.ehviewer.util.setValue import com.hippo.ehviewer.yorozuya.SimpleHandler import eu.kanade.tachiyomi.util.lang.launchIO import eu.kanade.tachiyomi.util.lang.launchUI @@ -147,16 +150,10 @@ class VMStorage : ViewModel() { class FavoritesScene : SearchBarScene() { private val vm: VMStorage by viewModels() - private var urlBuilder - get() = vm.urlBuilder - set(value) { vm.urlBuilder = value } - private var initialKey - get() = vm.initialKey - set(value) { vm.initialKey = value } - private val cloudDataFlow - get() = vm.cloudDataFlow - private val localFavDataFlow - get() = vm.localFavDataFlow + private var urlBuilder by lazyMut { vm::urlBuilder } + private var initialKey by lazyMut { vm::initialKey } + private val cloudDataFlow by lazy { vm.cloudDataFlow } + private val localFavDataFlow by lazy { vm.localFavDataFlow } private var _binding: SceneFavoritesBinding? = null private val binding get() = _binding!! private var mAdapter: PagingDataAdapter? = null diff --git a/app/src/main/java/com/hippo/ehviewer/util/LazyDelegate.kt b/app/src/main/java/com/hippo/ehviewer/util/LazyDelegate.kt new file mode 100644 index 000000000..ecbbac02d --- /dev/null +++ b/app/src/main/java/com/hippo/ehviewer/util/LazyDelegate.kt @@ -0,0 +1,22 @@ +@file:Suppress("NOTHING_TO_INLINE") + +package com.hippo.ehviewer.util + +import kotlin.reflect.KMutableProperty0 +import kotlin.reflect.KProperty + +interface Lazy { + var value: T +} + +fun lazyMut(init: () -> KMutableProperty0) = object : Lazy { + private val lazy by lazy { init() } + override var value + get() = lazy.get() + set(value) = lazy.set(value) +} + +inline operator fun Lazy.getValue(thisRef: Any?, property: KProperty<*>): T = value +inline operator fun Lazy.setValue(thisRef: Any?, prop: KProperty<*>?, newValue: T) { + value = newValue +}