Skip to content
This repository was archived by the owner on Feb 5, 2021. It is now read-only.
Merged
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 @@ -15,35 +15,46 @@
*/
package com.squareup.sample.hellocomposerendering

// There is a bug in Compose dev12 that crashes the compiler when processing this code.
// See https://github.com/square/workflow-kotlin-compose/issues/42.
// /**
// * A [ComposeWorkflow] that is used by [HelloWorkflow] to render the screen.
// *
// * This workflow has type `Workflow<String, Toggle, ComposeRendering>`.
// */
// object HelloRenderingWorkflow : ComposeWorkflow<String, Toggle>() {
//
// object Toggle
//
// @Composable override fun render(
// props: String,
// outputSink: Sink<Toggle>,
// viewEnvironment: ViewEnvironment
// ) {
// MaterialTheme {
// Text(
// props,
// modifier = Modifier
// .ripple()
// .clickable(onClick = { outputSink.send(Toggle) })
// .wrapContentSize(Alignment.Center)
// )
// }
// }
// }
//
// @Preview(showBackground = true)
// @Composable fun HelloRenderingWorkflowPreview() {
// HelloRenderingWorkflow.preview(props = "hello")
// }
import androidx.compose.foundation.Text
import androidx.compose.foundation.clickable
import androidx.compose.foundation.layout.wrapContentSize
import androidx.compose.material.MaterialTheme
import androidx.compose.runtime.Composable
import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier
import androidx.ui.tooling.preview.Preview
import com.squareup.sample.hellocomposerendering.HelloRenderingWorkflow.Toggle
import com.squareup.workflow.Sink
import com.squareup.workflow.ui.ViewEnvironment
import com.squareup.workflow.ui.compose.ComposeWorkflow
import com.squareup.workflow.ui.compose.tooling.preview

/**
* A [ComposeWorkflow] that is used by [HelloWorkflow] to render the screen.
*
* This workflow has type `Workflow<String, Toggle, ComposeRendering>`.
*/
object HelloRenderingWorkflow : ComposeWorkflow<String, Toggle>() {

object Toggle

@Composable override fun render(
props: String,
outputSink: Sink<Toggle>,
viewEnvironment: ViewEnvironment
) {
MaterialTheme {
Text(
props,
modifier = Modifier
.clickable(onClick = { outputSink.send(Toggle) })
.wrapContentSize(Alignment.Center)
)
}
}
}

@Preview(showBackground = true)
@Composable fun HelloRenderingWorkflowPreview() {
HelloRenderingWorkflow.preview(props = "hello")
}
Original file line number Diff line number Diff line change
Expand Up @@ -50,9 +50,8 @@ object HelloWorkflow : StatefulWorkflow<Unit, State, Nothing, ComposeRendering>(
props: Unit,
state: State,
context: RenderContext<State, Nothing>
): ComposeRendering = ComposeRendering.NoopRendering
// See https://github.com/square/workflow-kotlin-compose/issues/42.
//context.renderChild(HelloRenderingWorkflow, state.name) { helloAction }
): ComposeRendering =
context.renderChild(HelloRenderingWorkflow, state.name) { helloAction }

override fun snapshotState(state: State): Snapshot = Snapshot.of(if (state == Hello) 1 else 0)
}
11 changes: 6 additions & 5 deletions samples/src/main/java/com/squareup/sample/launcher/Samples.kt
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,8 @@ import com.squareup.sample.hellocompose.App
import com.squareup.sample.hellocompose.HelloComposeActivity
import com.squareup.sample.hellocomposebinding.DrawHelloRenderingPreview
import com.squareup.sample.hellocomposebinding.HelloBindingActivity
import com.squareup.sample.hellocomposerendering.HelloComposeRenderingActivity
import com.squareup.sample.hellocomposerendering.HelloRenderingWorkflowPreview
import com.squareup.sample.nestedrenderings.NestedRenderingsActivity
import com.squareup.sample.nestedrenderings.RecursiveViewFactoryPreview
import kotlin.reflect.KClass
Expand All @@ -32,11 +34,10 @@ val samples = listOf(
"Hello Compose Binding", HelloBindingActivity::class,
"Creates a ViewFactory using bindCompose."
) { DrawHelloRenderingPreview() },
// Broken in dev12, see https://github.com/square/workflow-kotlin-compose/issues/42.
// Sample(
// "Hello Compose Rendering", HelloComposeRenderingActivity::class,
// "Uses ComposeWorkflow to create a workflow that draws itself."
// ) { HelloRenderingWorkflowPreview() },
Sample(
"Hello Compose Rendering", HelloComposeRenderingActivity::class,
"Uses ComposeWorkflow to create a workflow that draws itself."
) { HelloRenderingWorkflowPreview() },
Sample(
"Hello Compose", HelloComposeActivity::class,
"A pure Compose app that launches its root Workflow from inside Compose."
Expand Down