Skip to content
Snippets Groups Projects
Select Git revision
  • main default protected
  • wip
  • ChenZhangg-Modify_GRADLE_1
  • jetpack-compose-rewrite
  • demo-jump-in-history
  • attachments
  • 1.7.0 protected
  • 1.6.2 protected
  • 1.6.1 protected
  • 1.6.0 protected
  • 1.5.3 protected
  • 1.5.2 protected
  • 1.5.1 protected
  • 1.5.0 protected
  • 1.4.4 protected
  • 1.4.3 protected
  • 1.4.2 protected
  • 1.4.1 protected
  • 1.4.0 protected
  • v1.3.3 protected
  • v1.3.2 protected
  • v1.3.1 protected
  • v1.3.0 protected
  • v1.2.28 protected
  • v1.2.27 protected
  • v1.2.26 protected
26 results

FlowExtensions.kt

Blame
  • FlowExtensions.kt 1.07 KiB
    package de.justjanne.quasseldroid.util
    
    import androidx.compose.runtime.Composable
    import androidx.compose.runtime.DisallowComposableCalls
    import androidx.compose.runtime.collectAsState
    import androidx.compose.runtime.remember
    import kotlinx.coroutines.flow.Flow
    import kotlinx.coroutines.flow.StateFlow
    import kotlinx.coroutines.flow.emitAll
    import kotlinx.coroutines.flow.transform
    
    inline fun <T, R> Flow<T?>.mapNullable(crossinline transform: suspend (value: T) -> R): Flow<R?> =
      transform { value ->
        emit(value?.let { transform(it) })
      }
    
    inline fun <T, R> Flow<T?>.flatMapLatestNullable(crossinline transform: suspend (value: T) -> Flow<R>): Flow<R?> =
      transform { value ->
        if (value == null) emit(null)
        else emitAll(transform(value))
      }
    
    @Composable
    inline fun <T> rememberFlow(initial: T, calculation: @DisallowComposableCalls () -> Flow<T>): T {
      return remember(calculation).collectAsState(initial).value
    }
    
    @Composable
    inline fun <T> rememberFlow(calculation: @DisallowComposableCalls () -> StateFlow<T>): T {
      return remember(calculation).collectAsState().value
    }