Coverage Summary for Class: NavigationResultsKt (com.georgeci.moneysurfer.navigation.util)

Class Method, % Branch, % Line, % Instruction, %
NavigationResultsKt 0% (0/2) 0% (0/6) 0% (0/5) 0% (0/124)
NavigationResultsKt$rememberNavigationResult$1$1 0% (0/1) 0% (0/2) 0% (0/2) 0% (0/12)
Total 0% (0/3) 0% (0/8) 0% (0/7) 0% (0/136)


 package com.georgeci.moneysurfer.navigation.util
 
 import androidx.compose.runtime.Composable
 import androidx.compose.runtime.LaunchedEffect
 import androidx.compose.runtime.getValue
 import androidx.compose.runtime.remember
 import io.github.irgaly.navigation3.resultstate.LocalNavigationResultConsumer
 import io.github.irgaly.navigation3.resultstate.SerializableNavigationResultKey
 import io.github.irgaly.navigation3.resultstate.clearResult
 import io.github.irgaly.navigation3.resultstate.getResultState
 
 /**
  * Reads the current navigation result for [key] and clears it after observation. Returns the
  * deserialized value (or `null` when no result is pending). Each consumer entry only sees the
  * result on the composition where it was written; the next composition observes `null`.
  */
 @Composable
 fun <T> rememberNavigationResult(key: SerializableNavigationResultKey<T>): T? {
     val consumer = LocalNavigationResultConsumer.current
     val raw by remember(consumer) { consumer.getResultState(key) }
     val value = raw?.getResult()
     LaunchedEffect(value) {
         value ?: return@LaunchedEffect
         consumer.clearResult(key)
     }
     return value
 }