Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -22,10 +22,10 @@ import com.squareup.sample.poetry.model.Poem
import com.squareup.workflow1.RuntimeConfig
import com.squareup.workflow1.RuntimeConfigOptions.Companion.RENDER_PER_ACTION
import com.squareup.workflow1.WorkflowInterceptor
import com.squareup.workflow1.android.renderWorkflowIn
import com.squareup.workflow1.ui.Screen
import com.squareup.workflow1.ui.ViewEnvironment.Companion.EMPTY
import com.squareup.workflow1.ui.ViewRegistry
import com.squareup.workflow1.ui.renderWorkflowIn
import com.squareup.workflow1.ui.withEnvironment
import com.squareup.workflow1.ui.workflowContentView
import kotlinx.coroutines.flow.StateFlow
Expand Down
2 changes: 2 additions & 0 deletions gradle/libs.versions.toml
Original file line number Diff line number Diff line change
Expand Up @@ -92,6 +92,7 @@ timber = "5.0.1"
truth = "1.4.4"
turbine = "1.0.0"
vanniktech-publish = "0.32.0"
uiAndroidVersion = "1.8.2"

[plugins]

Expand Down Expand Up @@ -135,6 +136,7 @@ androidx-compose-runtime = { module = "androidx.compose.runtime:runtime" }
androidx-compose-runtime-saveable = { module = "androidx.compose.runtime:runtime-saveable" }

androidx-compose-ui = { module = "androidx.compose.ui:ui" }
androidx-compose-ui-android = { module = "androidx.compose.ui:ui-android" }
androidx-compose-ui-geometry = { module = "androidx.compose.ui:ui-geometry" }
androidx-compose-ui-graphics = { module = "androidx.compose.ui:ui-graphics" }
androidx-compose-ui-test-junit4 = { module = "androidx.compose.ui:ui-test-junit4" }
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,14 +10,14 @@ import androidx.lifecycle.SavedStateHandle
import androidx.lifecycle.ViewModel
import androidx.lifecycle.viewModelScope
import com.squareup.workflow1.WorkflowExperimentalRuntime
import com.squareup.workflow1.android.renderWorkflowIn
import com.squareup.workflow1.config.AndroidRuntimeConfigTools
import com.squareup.workflow1.mapRendering
import com.squareup.workflow1.ui.Screen
import com.squareup.workflow1.ui.ViewEnvironment
import com.squareup.workflow1.ui.ViewRegistry
import com.squareup.workflow1.ui.compose.withComposeInteropSupport
import com.squareup.workflow1.ui.plus
import com.squareup.workflow1.ui.renderWorkflowIn
import com.squareup.workflow1.ui.withEnvironment
import com.squareup.workflow1.ui.workflowContentView
import kotlinx.coroutines.flow.StateFlow
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,12 +9,12 @@ import androidx.lifecycle.SavedStateHandle
import androidx.lifecycle.ViewModel
import androidx.lifecycle.viewModelScope
import com.squareup.workflow1.WorkflowExperimentalRuntime
import com.squareup.workflow1.android.renderWorkflowIn
import com.squareup.workflow1.config.AndroidRuntimeConfigTools
import com.squareup.workflow1.mapRendering
import com.squareup.workflow1.ui.Screen
import com.squareup.workflow1.ui.ViewEnvironment
import com.squareup.workflow1.ui.compose.withComposeInteropSupport
import com.squareup.workflow1.ui.renderWorkflowIn
import com.squareup.workflow1.ui.withEnvironment
import com.squareup.workflow1.ui.workflowContentView
import kotlinx.coroutines.flow.StateFlow
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,12 +9,12 @@ import androidx.lifecycle.SavedStateHandle
import androidx.lifecycle.ViewModel
import androidx.lifecycle.viewModelScope
import com.squareup.workflow1.WorkflowExperimentalRuntime
import com.squareup.workflow1.android.renderWorkflowIn
import com.squareup.workflow1.config.AndroidRuntimeConfigTools
import com.squareup.workflow1.mapRendering
import com.squareup.workflow1.ui.Screen
import com.squareup.workflow1.ui.ViewEnvironment
import com.squareup.workflow1.ui.compose.withComposeInteropSupport
import com.squareup.workflow1.ui.renderWorkflowIn
import com.squareup.workflow1.ui.withEnvironment
import com.squareup.workflow1.ui.workflowContentView
import kotlinx.coroutines.flow.StateFlow
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,14 +11,14 @@ import androidx.lifecycle.SavedStateHandle
import androidx.lifecycle.ViewModel
import androidx.lifecycle.viewModelScope
import com.squareup.workflow1.WorkflowExperimentalRuntime
import com.squareup.workflow1.android.renderWorkflowIn
import com.squareup.workflow1.config.AndroidRuntimeConfigTools
import com.squareup.workflow1.mapRendering
import com.squareup.workflow1.ui.Screen
import com.squareup.workflow1.ui.ViewEnvironment
import com.squareup.workflow1.ui.ViewRegistry
import com.squareup.workflow1.ui.compose.withComposeInteropSupport
import com.squareup.workflow1.ui.plus
import com.squareup.workflow1.ui.renderWorkflowIn
import com.squareup.workflow1.ui.withEnvironment
import com.squareup.workflow1.ui.workflowContentView
import kotlinx.coroutines.flow.StateFlow
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -13,10 +13,10 @@ import com.squareup.sample.poetry.RealPoemWorkflow
import com.squareup.sample.poetry.RealPoemsBrowserWorkflow
import com.squareup.sample.poetry.model.Poem
import com.squareup.workflow1.WorkflowExperimentalRuntime
import com.squareup.workflow1.android.renderWorkflowIn
import com.squareup.workflow1.config.AndroidRuntimeConfigTools
import com.squareup.workflow1.ui.Screen
import com.squareup.workflow1.ui.navigation.reportNavigation
import com.squareup.workflow1.ui.renderWorkflowIn
import com.squareup.workflow1.ui.withRegistry
import com.squareup.workflow1.ui.workflowContentView
import kotlinx.coroutines.flow.Flow
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -13,10 +13,10 @@ import com.squareup.sample.container.SampleContainers
import com.squareup.sample.poetry.RealPoemWorkflow
import com.squareup.sample.poetry.model.Raven
import com.squareup.workflow1.WorkflowExperimentalRuntime
import com.squareup.workflow1.android.renderWorkflowIn
import com.squareup.workflow1.config.AndroidRuntimeConfigTools
import com.squareup.workflow1.ui.Screen
import com.squareup.workflow1.ui.navigation.reportNavigation
import com.squareup.workflow1.ui.renderWorkflowIn
import com.squareup.workflow1.ui.withRegistry
import com.squareup.workflow1.ui.workflowContentView
import kotlinx.coroutines.Job
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,10 +11,10 @@ import androidx.lifecycle.lifecycleScope
import androidx.lifecycle.viewModelScope
import com.squareup.sample.container.SampleContainers
import com.squareup.workflow1.WorkflowExperimentalRuntime
import com.squareup.workflow1.android.renderWorkflowIn
import com.squareup.workflow1.config.AndroidRuntimeConfigTools
import com.squareup.workflow1.ui.Screen
import com.squareup.workflow1.ui.navigation.reportNavigation
import com.squareup.workflow1.ui.renderWorkflowIn
import com.squareup.workflow1.ui.withRegistry
import com.squareup.workflow1.ui.workflowContentView
import kotlinx.coroutines.Job
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,10 +6,10 @@ import androidx.lifecycle.ViewModel
import androidx.lifecycle.viewModelScope
import androidx.savedstate.SavedStateRegistryOwner
import com.squareup.workflow1.WorkflowExperimentalRuntime
import com.squareup.workflow1.android.renderWorkflowIn
import com.squareup.workflow1.config.AndroidRuntimeConfigTools
import com.squareup.workflow1.diagnostic.tracing.TracingWorkflowInterceptor
import com.squareup.workflow1.ui.Screen
import com.squareup.workflow1.ui.renderWorkflowIn
import kotlinx.coroutines.flow.StateFlow
import java.io.File
import kotlin.time.ExperimentalTime
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,9 +11,9 @@ import androidx.lifecycle.ViewModel
import androidx.lifecycle.ViewModelProvider
import androidx.lifecycle.viewModelScope
import com.squareup.workflow1.WorkflowExperimentalRuntime
import com.squareup.workflow1.android.renderWorkflowIn
import com.squareup.workflow1.config.AndroidRuntimeConfigTools
import com.squareup.workflow1.ui.WorkflowLayout
import com.squareup.workflow1.ui.renderWorkflowIn
import kotlinx.coroutines.flow.StateFlow

class HelloWorkflowFragment : Fragment() {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,8 +9,8 @@ import androidx.lifecycle.SavedStateHandle
import androidx.lifecycle.ViewModel
import androidx.lifecycle.viewModelScope
import com.squareup.workflow1.WorkflowExperimentalRuntime
import com.squareup.workflow1.android.renderWorkflowIn
import com.squareup.workflow1.config.AndroidRuntimeConfigTools
import com.squareup.workflow1.ui.renderWorkflowIn
import com.squareup.workflow1.ui.workflowContentView
import kotlinx.coroutines.flow.StateFlow

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,9 +9,9 @@ import androidx.lifecycle.SavedStateHandle
import androidx.lifecycle.ViewModel
import androidx.lifecycle.viewModelScope
import com.squareup.workflow1.WorkflowExperimentalRuntime
import com.squareup.workflow1.android.renderWorkflowIn
import com.squareup.workflow1.config.AndroidRuntimeConfigTools
import com.squareup.workflow1.ui.Screen
import com.squareup.workflow1.ui.renderWorkflowIn
import com.squareup.workflow1.ui.workflowContentView
import kotlinx.coroutines.flow.StateFlow

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,9 +9,9 @@ import androidx.lifecycle.SavedStateHandle
import androidx.lifecycle.ViewModel
import androidx.lifecycle.viewModelScope
import com.squareup.workflow1.WorkflowExperimentalRuntime
import com.squareup.workflow1.android.renderWorkflowIn
import com.squareup.workflow1.config.AndroidRuntimeConfigTools
import com.squareup.workflow1.ui.Screen
import com.squareup.workflow1.ui.renderWorkflowIn
import com.squareup.workflow1.ui.workflowContentView
import kotlinx.coroutines.flow.StateFlow

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,10 +9,10 @@ import androidx.lifecycle.viewModelScope
import androidx.savedstate.SavedStateRegistryOwner
import com.squareup.sample.mainworkflow.TicTacToeWorkflow
import com.squareup.workflow1.WorkflowExperimentalRuntime
import com.squareup.workflow1.android.renderWorkflowIn
import com.squareup.workflow1.config.AndroidRuntimeConfigTools
import com.squareup.workflow1.diagnostic.tracing.TracingWorkflowInterceptor
import com.squareup.workflow1.ui.Screen
import com.squareup.workflow1.ui.renderWorkflowIn
import kotlinx.coroutines.Job
import kotlinx.coroutines.flow.StateFlow
import java.io.File
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,11 +10,11 @@ import androidx.lifecycle.ViewModel
import androidx.lifecycle.viewModelScope
import com.squareup.sample.container.overviewdetail.OverviewDetailContainer
import com.squareup.workflow1.WorkflowExperimentalRuntime
import com.squareup.workflow1.android.renderWorkflowIn
import com.squareup.workflow1.config.AndroidRuntimeConfigTools
import com.squareup.workflow1.diagnostic.tracing.TracingWorkflowInterceptor
import com.squareup.workflow1.ui.Screen
import com.squareup.workflow1.ui.ViewRegistry
import com.squareup.workflow1.ui.renderWorkflowIn
import com.squareup.workflow1.ui.withRegistry
import com.squareup.workflow1.ui.workflowContentView
import kotlinx.coroutines.flow.StateFlow
Expand Down
1 change: 1 addition & 0 deletions settings.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -64,6 +64,7 @@ include(
":workflow-config:config-jvm",
":workflow-core",
":workflow-runtime",
":workflow-runtime-android",
":workflow-rx2",
":workflow-testing",
":workflow-tracing",
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,14 @@ internal fun <P, S, O> BaseRenderContext<P, S, O>.eventHandler0(
remember: Boolean,
update: Updater<P, S, O>.() -> Unit
): () -> Unit {
val handler = { actionSink.send(action("eH: $name", update)) }
val handler = {
actionSink.send(
action(
name = "eH: $name",
apply = update,
)
)
}
return if (remember) {
val box = remember(name) { HandlerBox0() }
box.handler = handler
Expand All @@ -34,7 +41,13 @@ internal inline fun <P, S, O, reified EventT> BaseRenderContext<P, S, O>.eventHa
remember: Boolean,
noinline update: Updater<P, S, O>.(EventT) -> Unit
): (EventT) -> Unit {
val handler = { e: EventT -> actionSink.send(action("eH: $name") { update(e) }) }
val handler = { e: EventT ->
actionSink.send(
action(
name = "eH: $name",
) { update(e) }
)
}
return if (remember) {
val box = remember(name, typeOf<EventT>()) { HandlerBox1<EventT>() }
box.handler = handler
Expand All @@ -56,7 +69,13 @@ internal inline fun <P, S, O, reified E1, reified E2> BaseRenderContext<P, S, O>
remember: Boolean,
noinline update: Updater<P, S, O>.(E1, E2) -> Unit
): (E1, E2) -> Unit {
val handler = { e1: E1, e2: E2 -> actionSink.send(action("eH: $name") { update(e1, e2) }) }
val handler = { e1: E1, e2: E2 ->
actionSink.send(
action(
name = "eH: $name",
) { update(e1, e2) }
)
}
return if (remember) {
val box = remember(name, typeOf<E1>(), typeOf<E2>()) { HandlerBox2<E1, E2>() }
box.handler = handler
Expand Down Expand Up @@ -86,7 +105,13 @@ internal inline fun <
noinline update: Updater<P, S, O>.(E1, E2, E3) -> Unit
): (E1, E2, E3) -> Unit {
val handler =
{ e1: E1, e2: E2, e3: E3 -> actionSink.send(action("eH: $name") { update(e1, e2, e3) }) }
{ e1: E1, e2: E2, e3: E3 ->
actionSink.send(
action(
name = "eH: $name",
) { update(e1, e2, e3) }
)
}
return if (remember) {
val box =
remember(name, typeOf<E1>(), typeOf<E2>(), typeOf<E3>()) { HandlerBox3<E1, E2, E3>() }
Expand Down Expand Up @@ -118,7 +143,11 @@ internal inline fun <
noinline update: Updater<P, S, O>.(E1, E2, E3, E4) -> Unit
): (E1, E2, E3, E4) -> Unit {
val handler = { e1: E1, e2: E2, e3: E3, e4: E4 ->
actionSink.send(action("eH: $name") { update(e1, e2, e3, e4) })
actionSink.send(
action(
name = "eH: $name",
) { update(e1, e2, e3, e4) }
)
}
return if (remember) {
val box = remember(
Expand Down Expand Up @@ -158,7 +187,11 @@ internal inline fun <
noinline update: Updater<P, S, O>.(E1, E2, E3, E4, E5) -> Unit
): (E1, E2, E3, E4, E5) -> Unit {
val handler = { e1: E1, e2: E2, e3: E3, e4: E4, e5: E5 ->
actionSink.send(action("eH: $name") { update(e1, e2, e3, e4, e5) })
actionSink.send(
action(
name = "eH: $name",
) { update(e1, e2, e3, e4, e5) }
)
}
return if (remember) {
val box = remember(
Expand Down Expand Up @@ -200,7 +233,11 @@ internal inline fun <
noinline update: Updater<P, S, O>.(E1, E2, E3, E4, E5, E6) -> Unit
): (E1, E2, E3, E4, E5, E6) -> Unit {
val handler = { e1: E1, e2: E2, e3: E3, e4: E4, e5: E5, e6: E6 ->
actionSink.send(action("eH: $name") { update(e1, e2, e3, e4, e5, e6) })
actionSink.send(
action(
name = "eH: $name",
) { update(e1, e2, e3, e4, e5, e6) }
)
}
return if (remember) {
val box = remember(
Expand Down Expand Up @@ -244,7 +281,11 @@ internal inline fun <
noinline update: Updater<P, S, O>.(E1, E2, E3, E4, E5, E6, E7) -> Unit
): (E1, E2, E3, E4, E5, E6, E7) -> Unit {
val handler = { e1: E1, e2: E2, e3: E3, e4: E4, e5: E5, e6: E6, e7: E7 ->
actionSink.send(action("eH: $name") { update(e1, e2, e3, e4, e5, e6, e7) })
actionSink.send(
action(
name = "eH: $name",
) { update(e1, e2, e3, e4, e5, e6, e7) }
)
}
return if (remember) {
val box = remember(
Expand Down Expand Up @@ -290,7 +331,11 @@ internal inline fun <
noinline update: Updater<P, S, O>.(E1, E2, E3, E4, E5, E6, E7, E8) -> Unit
): (E1, E2, E3, E4, E5, E6, E7, E8) -> Unit {
val handler = { e1: E1, e2: E2, e3: E3, e4: E4, e5: E5, e6: E6, e7: E7, e8: E8 ->
actionSink.send(action("eH: $name") { update(e1, e2, e3, e4, e5, e6, e7, e8) })
actionSink.send(
action(
name = "eH: $name",
) { update(e1, e2, e3, e4, e5, e6, e7, e8) }
)
}
return if (remember) {
val box = remember(
Expand Down Expand Up @@ -338,7 +383,11 @@ internal inline fun <
noinline update: Updater<P, S, O>.(E1, E2, E3, E4, E5, E6, E7, E8, E9) -> Unit
): (E1, E2, E3, E4, E5, E6, E7, E8, E9) -> Unit {
val handler = { e1: E1, e2: E2, e3: E3, e4: E4, e5: E5, e6: E6, e7: E7, e8: E8, e9: E9 ->
actionSink.send(action("eH: $name") { update(e1, e2, e3, e4, e5, e6, e7, e8, e9) })
actionSink.send(
action(
name = "eH: $name",
) { update(e1, e2, e3, e4, e5, e6, e7, e8, e9) }
)
}
return if (remember) {
val box = remember(
Expand Down Expand Up @@ -389,7 +438,11 @@ internal inline fun <
): (E1, E2, E3, E4, E5, E6, E7, E8, E9, E10) -> Unit {
val handler =
{ e1: E1, e2: E2, e3: E3, e4: E4, e5: E5, e6: E6, e7: E7, e8: E8, e9: E9, e10: E10 ->
actionSink.send(action("eH: $name") { update(e1, e2, e3, e4, e5, e6, e7, e8, e9, e10) })
actionSink.send(
action(
name = "eH: $name",
) { update(e1, e2, e3, e4, e5, e6, e7, e8, e9, e10) }
)
}
return if (remember) {
val box = remember(
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,16 @@ public annotation class WorkflowExperimentalRuntime

public typealias RuntimeConfig = Set<RuntimeConfigOptions>

/**
* Whether or not we have an optimization enabled that should cause us to consider 'deferring'
* the application of the first action received after resuming from suspension in the runtime
* loop.
*/
// @WorkflowExperimentalRuntime
// public fun RuntimeConfig.shouldDeferFirstAction(): Boolean {
// return contains(RuntimeConfigOptions.CONFLATE_STALE_RENDERINGS)
// }

/**
* A specification of the possible Workflow Runtime options.
*/
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -59,9 +59,10 @@ internal class WorkerWorkflow<OutputT>(
renderState: Int,
context: RenderContext<Worker<OutputT>, Int, OutputT>
) {
val localKey = renderState.toString()
// Scope the side effect coroutine to the state value, so the worker will be re-started when
// it changes (such that doesSameWorkAs returns false above).
context.runningSideEffect(renderState.toString()) {
context.runningSideEffect(localKey) {
runWorker(renderProps, key, context.actionSink)
}
}
Expand Down
Loading
Loading