Optimize rememberInVM allocation

This commit is contained in:
Dude so hot authored and renovate[bot] committed 2024-10-15 19:08:12 +08:00
1 parent 2fc8b421b0
commit b7a2d93f03
1 file changed
+3 -3
@@ -42,12 +42,12 @@ class StateMapViewModel : ViewModel() {
@Composable
inline fun <reified T : Any> rememberInVM(
vararg inputs: Any?,
userKey: Any? = null,
crossinline init: @DisallowComposableCalls ViewModel.() -> T,
) = with(viewModel<StateMapViewModel>()) {
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)