From 4363566599d4c2cc37582f9a1237945f24dbcdc9 Mon Sep 17 00:00:00 2001 From: Zach Klippenstein Date: Tue, 28 Jul 2020 10:01:04 -0700 Subject: [PATCH] Revert "Emit output before next render pass." This reverts commit b084b16cf72618702e442e8ceac99cf168debbcd from #68 and closes #147. The change this reverts was related to issue #54. --- .../src/main/java/com/squareup/workflow1/RenderWorkflow.kt | 6 ++++-- .../java/com/squareup/workflow1/RenderWorkflowInTest.kt | 4 ++-- 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/workflow-runtime/src/main/java/com/squareup/workflow1/RenderWorkflow.kt b/workflow-runtime/src/main/java/com/squareup/workflow1/RenderWorkflow.kt index 8f399a250..86f4fee5a 100644 --- a/workflow-runtime/src/main/java/com/squareup/workflow1/RenderWorkflow.kt +++ b/workflow-runtime/src/main/java/com/squareup/workflow1/RenderWorkflow.kt @@ -151,10 +151,12 @@ fun renderWorkflowIn( // It might look weird to start by consuming the output before getting the rendering below, // but remember the first render pass already occurred above, before this coroutine was even // launched. - runner.nextOutput() - ?.let { onOutput(it.value) } + val output = runner.nextOutput() + // After receiving an output, the next render pass must be done before emitting that output, + // so that the workflow states appear consistent to observers of the outputs and renderings. renderingsAndSnapshots.value = runner.nextRendering() + output?.let { onOutput(it.value) } } } diff --git a/workflow-runtime/src/test/java/com/squareup/workflow1/RenderWorkflowInTest.kt b/workflow-runtime/src/test/java/com/squareup/workflow1/RenderWorkflowInTest.kt index 93a83c776..012b66eed 100644 --- a/workflow-runtime/src/test/java/com/squareup/workflow1/RenderWorkflowInTest.kt +++ b/workflow-runtime/src/test/java/com/squareup/workflow1/RenderWorkflowInTest.kt @@ -439,8 +439,8 @@ class RenderWorkflowInTest { assertEquals( listOf( "rendering({no output})", - "output(output)", - "rendering(output)" + "rendering(output)", + "output(output)" ), events )