From b7a2d93f03bb9c95201de46d291321d2b76edba4 Mon Sep 17 00:00:00 2001 From: Dude so hot Date: Tue, 15 Oct 2024 19:01:47 +0800 Subject: [PATCH] Optimize rememberInVM allocation --- .../kotlin/com/hippo/ehviewer/ui/tools/RememberGlobally.kt | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/app/src/main/kotlin/com/hippo/ehviewer/ui/tools/RememberGlobally.kt b/app/src/main/kotlin/com/hippo/ehviewer/ui/tools/RememberGlobally.kt index b23d0d67e..21bf5bcbc 100644 --- a/app/src/main/kotlin/com/hippo/ehviewer/ui/tools/RememberGlobally.kt +++ b/app/src/main/kotlin/com/hippo/ehviewer/ui/tools/RememberGlobally.kt @@ -42,12 +42,12 @@ class StateMapViewModel : ViewModel() { @Composable inline fun rememberInVM( - vararg inputs: Any?, + userKey: Any? = null, crossinline init: @DisallowComposableCalls ViewModel.() -> T, ) = with(viewModel()) { val key = currentCompositeKeyHash - remember(*inputs) { - val states = statesMap.getOrPut(key) { ArrayDeque() } + remember(userKey) { + val states = statesMap.getOrPut(key, ::ArrayDeque) states.removeLastOrNull() as T? ?: init() }.also { value -> val valueState by rememberUpdatedState(value)