From f54fa51093ffad32b9dff5471fc75fe286f49065 Mon Sep 17 00:00:00 2001 From: Zach Klippenstein Date: Wed, 27 May 2020 20:38:52 -0700 Subject: [PATCH] Update Compose to dev12. --- buildSrc/src/main/java/Dependencies.kt | 2 +- compose-tooling/api/compose-tooling.api | 6 +-- .../compose/tooling/PlaceholderViewFactory.kt | 13 +++--- core-compose/api/core-compose.api | 39 +++++++----------- .../ui/compose/ComposeViewFactoryTest.kt | 7 ++-- .../ui/compose/internal/ComposeSupportTest.kt | 12 ++++-- .../ui/compose/internal/ComposeSupport.kt | 40 +++++-------------- .../hellocomposebinding/HelloBinding.kt | 14 +++---- .../HelloRenderingWorkflow.kt | 19 +++++---- .../sample/hellocompose/HelloBinding.kt | 17 ++++---- settings.gradle.kts | 4 +- 11 files changed, 73 insertions(+), 100 deletions(-) diff --git a/buildSrc/src/main/java/Dependencies.kt b/buildSrc/src/main/java/Dependencies.kt index 9ac3f8f2..42b941cd 100644 --- a/buildSrc/src/main/java/Dependencies.kt +++ b/buildSrc/src/main/java/Dependencies.kt @@ -19,7 +19,7 @@ import java.util.Locale.US import kotlin.reflect.full.declaredMembers object Versions { - const val compose = "0.1.0-dev11" + const val compose = "0.1.0-dev12" const val kotlin = "1.3.71" const val targetSdk = 29 const val workflow = "0.28.0" diff --git a/compose-tooling/api/compose-tooling.api b/compose-tooling/api/compose-tooling.api index c283e9b9..6af39e71 100644 --- a/compose-tooling/api/compose-tooling.api +++ b/compose-tooling/api/compose-tooling.api @@ -6,12 +6,10 @@ public final class com/squareup/workflow/ui/compose/tooling/BuildConfig { } public final class com/squareup/workflow/ui/compose/tooling/ComposeWorkflowsKt { - public static final fun preview (Lcom/squareup/workflow/ui/compose/ComposeWorkflow;Ljava/lang/Object;Landroidx/ui/core/Modifier;Landroidx/ui/core/Modifier;Lkotlin/jvm/functions/Function1;Landroidx/compose/Composer;)V - public static synthetic fun preview$default (Lcom/squareup/workflow/ui/compose/ComposeWorkflow;Ljava/lang/Object;Landroidx/ui/core/Modifier;Landroidx/ui/core/Modifier;Lkotlin/jvm/functions/Function1;Landroidx/compose/Composer;ILjava/lang/Object;)V + public static final fun preview (Lcom/squareup/workflow/ui/compose/ComposeWorkflow;Ljava/lang/Object;Landroidx/ui/core/Modifier;Landroidx/ui/core/Modifier;Lkotlin/jvm/functions/Function1;Landroidx/compose/Composer;III)V } public final class com/squareup/workflow/ui/compose/tooling/ViewFactoriesKt { - public static final fun preview (Lcom/squareup/workflow/ui/ViewFactory;Ljava/lang/Object;Landroidx/ui/core/Modifier;Landroidx/ui/core/Modifier;Lkotlin/jvm/functions/Function1;Landroidx/compose/Composer;)V - public static synthetic fun preview$default (Lcom/squareup/workflow/ui/ViewFactory;Ljava/lang/Object;Landroidx/ui/core/Modifier;Landroidx/ui/core/Modifier;Lkotlin/jvm/functions/Function1;Landroidx/compose/Composer;ILjava/lang/Object;)V + public static final fun preview (Lcom/squareup/workflow/ui/ViewFactory;Ljava/lang/Object;Landroidx/ui/core/Modifier;Landroidx/ui/core/Modifier;Lkotlin/jvm/functions/Function1;Landroidx/compose/Composer;III)V } diff --git a/compose-tooling/src/main/java/com/squareup/workflow/ui/compose/tooling/PlaceholderViewFactory.kt b/compose-tooling/src/main/java/com/squareup/workflow/ui/compose/tooling/PlaceholderViewFactory.kt index 9987b25b..5c66c40a 100644 --- a/compose-tooling/src/main/java/com/squareup/workflow/ui/compose/tooling/PlaceholderViewFactory.kt +++ b/compose-tooling/src/main/java/com/squareup/workflow/ui/compose/tooling/PlaceholderViewFactory.kt @@ -18,7 +18,6 @@ package com.squareup.workflow.ui.compose.tooling import androidx.compose.Composable -import androidx.ui.core.DrawScope import androidx.ui.core.Modifier import androidx.ui.core.clipToBounds import androidx.ui.core.drawBehind @@ -26,12 +25,14 @@ import androidx.ui.foundation.Box import androidx.ui.foundation.Text import androidx.ui.foundation.drawBorder import androidx.ui.geometry.Offset +import androidx.ui.geometry.toRect import androidx.ui.graphics.Color import androidx.ui.graphics.Paint import androidx.ui.graphics.Shadow -import androidx.ui.graphics.painter.Stroke -import androidx.ui.graphics.painter.drawCanvas -import androidx.ui.graphics.painter.rotate +import androidx.ui.graphics.drawscope.DrawScope +import androidx.ui.graphics.drawscope.Stroke +import androidx.ui.graphics.drawscope.drawCanvas +import androidx.ui.graphics.drawscope.rotate import androidx.ui.graphics.withSaveLayer import androidx.ui.layout.fillMaxSize import androidx.ui.text.TextStyle @@ -39,8 +40,6 @@ import androidx.ui.text.style.TextAlign import androidx.ui.tooling.preview.Preview import androidx.ui.unit.Dp import androidx.ui.unit.dp -import androidx.ui.unit.px -import androidx.ui.unit.toRect import com.squareup.workflow.ui.ViewFactory import com.squareup.workflow.ui.compose.composedViewFactory @@ -70,7 +69,7 @@ internal fun placeholderViewFactory(modifier: Modifier): ViewFactory = style = TextStyle( textAlign = TextAlign.Center, color = Color.White, - shadow = Shadow(blurRadius = 5.px, color = Color.Black) + shadow = Shadow(blurRadius = 5f, color = Color.Black) ) ) } diff --git a/core-compose/api/core-compose.api b/core-compose/api/core-compose.api index 90273676..86dd0c51 100644 --- a/core-compose/api/core-compose.api +++ b/core-compose/api/core-compose.api @@ -1,7 +1,7 @@ public final class com/squareup/workflow/ui/compose/ComposeRendering { public static final field Companion Lcom/squareup/workflow/ui/compose/ComposeRendering$Companion; public static final fun ()V - public fun (Lkotlin/jvm/functions/Function2;)V + public fun (Lkotlin/jvm/functions/Function4;)V } public final class com/squareup/workflow/ui/compose/ComposeRendering$Companion { @@ -10,7 +10,7 @@ public final class com/squareup/workflow/ui/compose/ComposeRendering$Companion { } public final class com/squareup/workflow/ui/compose/ComposeViewFactory : com/squareup/workflow/ui/ViewFactory { - public fun (Lkotlin/reflect/KClass;Lkotlin/jvm/functions/Function3;)V + public fun (Lkotlin/reflect/KClass;Lkotlin/jvm/functions/Function5;)V public fun buildView (Ljava/lang/Object;Lcom/squareup/workflow/ui/ViewEnvironment;Landroid/content/Context;Landroid/view/ViewGroup;)Landroid/view/View; public fun getType ()Lkotlin/reflect/KClass; } @@ -18,44 +18,35 @@ public final class com/squareup/workflow/ui/compose/ComposeViewFactory : com/squ public abstract class com/squareup/workflow/ui/compose/ComposeWorkflow : com/squareup/workflow/Workflow { public fun ()V public fun asStatefulWorkflow ()Lcom/squareup/workflow/StatefulWorkflow; - public abstract fun render (Ljava/lang/Object;Lcom/squareup/workflow/Sink;Lcom/squareup/workflow/ui/ViewEnvironment;Landroidx/compose/Composer;)V + public abstract fun render (Ljava/lang/Object;Lcom/squareup/workflow/Sink;Lcom/squareup/workflow/ui/ViewEnvironment;Landroidx/compose/Composer;II)V } public final class com/squareup/workflow/ui/compose/ComposeWorkflowKt { - public static final fun composed (Lcom/squareup/workflow/Workflow$Companion;Lkotlin/jvm/functions/Function4;)Lcom/squareup/workflow/ui/compose/ComposeWorkflow; + public static final fun composed (Lcom/squareup/workflow/Workflow$Companion;Lkotlin/jvm/functions/Function6;)Lcom/squareup/workflow/ui/compose/ComposeWorkflow; } public final class com/squareup/workflow/ui/compose/CompositionRootKt { public static final fun ()V - public static final fun withCompositionRoot (Lcom/squareup/workflow/ui/ViewEnvironment;Lkotlin/jvm/functions/Function2;)Lcom/squareup/workflow/ui/ViewEnvironment; - public static final fun withCompositionRoot (Lcom/squareup/workflow/ui/ViewRegistry;Lkotlin/jvm/functions/Function2;)Lcom/squareup/workflow/ui/ViewRegistry; + public static final fun withCompositionRoot (Lcom/squareup/workflow/ui/ViewEnvironment;Lkotlin/jvm/functions/Function4;)Lcom/squareup/workflow/ui/ViewEnvironment; + public static final fun withCompositionRoot (Lcom/squareup/workflow/ui/ViewRegistry;Lkotlin/jvm/functions/Function4;)Lcom/squareup/workflow/ui/ViewRegistry; } public final class com/squareup/workflow/ui/compose/RenderAsStateKt { - public static final fun renderAsState (Lcom/squareup/workflow/Workflow;Lcom/squareup/workflow/diagnostic/WorkflowDiagnosticListener;Landroidx/compose/Composer;)Landroidx/compose/State; - public static final fun renderAsState (Lcom/squareup/workflow/Workflow;Ljava/lang/Object;Lcom/squareup/workflow/diagnostic/WorkflowDiagnosticListener;Landroidx/compose/Composer;)Landroidx/compose/State; - public static final fun renderAsState (Lcom/squareup/workflow/Workflow;Ljava/lang/Object;Lkotlin/jvm/functions/Function1;Lcom/squareup/workflow/diagnostic/WorkflowDiagnosticListener;Landroidx/compose/Composer;)Landroidx/compose/State; - public static final fun renderAsState (Lcom/squareup/workflow/Workflow;Lkotlin/jvm/functions/Function1;Lcom/squareup/workflow/diagnostic/WorkflowDiagnosticListener;Landroidx/compose/Composer;)Landroidx/compose/State; - public static synthetic fun renderAsState$default (Lcom/squareup/workflow/Workflow;Lcom/squareup/workflow/diagnostic/WorkflowDiagnosticListener;Landroidx/compose/Composer;ILjava/lang/Object;)Landroidx/compose/State; - public static synthetic fun renderAsState$default (Lcom/squareup/workflow/Workflow;Ljava/lang/Object;Lcom/squareup/workflow/diagnostic/WorkflowDiagnosticListener;Landroidx/compose/Composer;ILjava/lang/Object;)Landroidx/compose/State; - public static synthetic fun renderAsState$default (Lcom/squareup/workflow/Workflow;Ljava/lang/Object;Lkotlin/jvm/functions/Function1;Lcom/squareup/workflow/diagnostic/WorkflowDiagnosticListener;Landroidx/compose/Composer;ILjava/lang/Object;)Landroidx/compose/State; - public static synthetic fun renderAsState$default (Lcom/squareup/workflow/Workflow;Lkotlin/jvm/functions/Function1;Lcom/squareup/workflow/diagnostic/WorkflowDiagnosticListener;Landroidx/compose/Composer;ILjava/lang/Object;)Landroidx/compose/State; + public static final fun renderAsState (Lcom/squareup/workflow/Workflow;Lcom/squareup/workflow/diagnostic/WorkflowDiagnosticListener;Landroidx/compose/Composer;III)Landroidx/compose/State; + public static final fun renderAsState (Lcom/squareup/workflow/Workflow;Ljava/lang/Object;Lcom/squareup/workflow/diagnostic/WorkflowDiagnosticListener;Landroidx/compose/Composer;III)Landroidx/compose/State; + public static final fun renderAsState (Lcom/squareup/workflow/Workflow;Ljava/lang/Object;Lkotlin/jvm/functions/Function1;Lcom/squareup/workflow/diagnostic/WorkflowDiagnosticListener;Landroidx/compose/Composer;III)Landroidx/compose/State; + public static final fun renderAsState (Lcom/squareup/workflow/Workflow;Lkotlin/jvm/functions/Function1;Lcom/squareup/workflow/diagnostic/WorkflowDiagnosticListener;Landroidx/compose/Composer;III)Landroidx/compose/State; } public final class com/squareup/workflow/ui/compose/ViewEnvironmentsKt { - public static final fun WorkflowRendering (Ljava/lang/Object;Lcom/squareup/workflow/ui/ViewEnvironment;Landroidx/ui/core/Modifier;Landroidx/compose/Composer;)V - public static synthetic fun WorkflowRendering$default (Ljava/lang/Object;Lcom/squareup/workflow/ui/ViewEnvironment;Landroidx/ui/core/Modifier;Landroidx/compose/Composer;ILjava/lang/Object;)V + public static final fun WorkflowRendering (Ljava/lang/Object;Lcom/squareup/workflow/ui/ViewEnvironment;Landroidx/ui/core/Modifier;Landroidx/compose/Composer;III)V } public final class com/squareup/workflow/ui/compose/WorkflowContainerKt { - public static final fun WorkflowContainer (Lcom/squareup/workflow/Workflow;Lcom/squareup/workflow/ui/ViewEnvironment;Landroidx/ui/core/Modifier;Lcom/squareup/workflow/diagnostic/WorkflowDiagnosticListener;Landroidx/compose/Composer;)V - public static final fun WorkflowContainer (Lcom/squareup/workflow/Workflow;Ljava/lang/Object;Lcom/squareup/workflow/ui/ViewEnvironment;Landroidx/ui/core/Modifier;Lcom/squareup/workflow/diagnostic/WorkflowDiagnosticListener;Landroidx/compose/Composer;)V - public static final fun WorkflowContainer (Lcom/squareup/workflow/Workflow;Ljava/lang/Object;Lkotlin/jvm/functions/Function1;Lcom/squareup/workflow/ui/ViewEnvironment;Landroidx/ui/core/Modifier;Lcom/squareup/workflow/diagnostic/WorkflowDiagnosticListener;Landroidx/compose/Composer;)V - public static final fun WorkflowContainer (Lcom/squareup/workflow/Workflow;Lkotlin/jvm/functions/Function1;Lcom/squareup/workflow/ui/ViewEnvironment;Landroidx/ui/core/Modifier;Lcom/squareup/workflow/diagnostic/WorkflowDiagnosticListener;Landroidx/compose/Composer;)V - public static synthetic fun WorkflowContainer$default (Lcom/squareup/workflow/Workflow;Lcom/squareup/workflow/ui/ViewEnvironment;Landroidx/ui/core/Modifier;Lcom/squareup/workflow/diagnostic/WorkflowDiagnosticListener;Landroidx/compose/Composer;ILjava/lang/Object;)V - public static synthetic fun WorkflowContainer$default (Lcom/squareup/workflow/Workflow;Ljava/lang/Object;Lcom/squareup/workflow/ui/ViewEnvironment;Landroidx/ui/core/Modifier;Lcom/squareup/workflow/diagnostic/WorkflowDiagnosticListener;Landroidx/compose/Composer;ILjava/lang/Object;)V - public static synthetic fun WorkflowContainer$default (Lcom/squareup/workflow/Workflow;Ljava/lang/Object;Lkotlin/jvm/functions/Function1;Lcom/squareup/workflow/ui/ViewEnvironment;Landroidx/ui/core/Modifier;Lcom/squareup/workflow/diagnostic/WorkflowDiagnosticListener;Landroidx/compose/Composer;ILjava/lang/Object;)V - public static synthetic fun WorkflowContainer$default (Lcom/squareup/workflow/Workflow;Lkotlin/jvm/functions/Function1;Lcom/squareup/workflow/ui/ViewEnvironment;Landroidx/ui/core/Modifier;Lcom/squareup/workflow/diagnostic/WorkflowDiagnosticListener;Landroidx/compose/Composer;ILjava/lang/Object;)V + public static final fun WorkflowContainer (Lcom/squareup/workflow/Workflow;Lcom/squareup/workflow/ui/ViewEnvironment;Landroidx/ui/core/Modifier;Lcom/squareup/workflow/diagnostic/WorkflowDiagnosticListener;Landroidx/compose/Composer;III)V + public static final fun WorkflowContainer (Lcom/squareup/workflow/Workflow;Ljava/lang/Object;Lcom/squareup/workflow/ui/ViewEnvironment;Landroidx/ui/core/Modifier;Lcom/squareup/workflow/diagnostic/WorkflowDiagnosticListener;Landroidx/compose/Composer;III)V + public static final fun WorkflowContainer (Lcom/squareup/workflow/Workflow;Ljava/lang/Object;Lkotlin/jvm/functions/Function1;Lcom/squareup/workflow/ui/ViewEnvironment;Landroidx/ui/core/Modifier;Lcom/squareup/workflow/diagnostic/WorkflowDiagnosticListener;Landroidx/compose/Composer;III)V + public static final fun WorkflowContainer (Lcom/squareup/workflow/Workflow;Lkotlin/jvm/functions/Function1;Lcom/squareup/workflow/ui/ViewEnvironment;Landroidx/ui/core/Modifier;Lcom/squareup/workflow/diagnostic/WorkflowDiagnosticListener;Landroidx/compose/Composer;III)V } public final class com/squareup/workflow/ui/compose/internal/ComposeSupportKt { diff --git a/core-compose/src/androidTest/java/com/squareup/workflow/ui/compose/ComposeViewFactoryTest.kt b/core-compose/src/androidTest/java/com/squareup/workflow/ui/compose/ComposeViewFactoryTest.kt index 27f84d26..2bd3c255 100644 --- a/core-compose/src/androidTest/java/com/squareup/workflow/ui/compose/ComposeViewFactoryTest.kt +++ b/core-compose/src/androidTest/java/com/squareup/workflow/ui/compose/ComposeViewFactoryTest.kt @@ -22,7 +22,6 @@ import androidx.compose.mutableStateOf import androidx.test.ext.junit.runners.AndroidJUnit4 import androidx.ui.foundation.Text import androidx.ui.layout.Column -import androidx.ui.test.assertIsDisplayed import androidx.ui.test.createComposeRule import androidx.ui.test.findByText import com.squareup.workflow.ui.ViewEnvironment @@ -53,11 +52,13 @@ class ComposeViewFactoryTest { RootView(viewEnvironment = viewEnvironment) } - findByText("one\ntwo").assertIsDisplayed() + // Compose bug doesn't let us use assertIsDisplayed on older devices. + // See https://issuetracker.google.com/issues/157728188. + findByText("one\ntwo").assertExists() FrameManager.framed { wrapperText.value = "ENO" } - findByText("ENO\ntwo").assertIsDisplayed() + findByText("ENO\ntwo").assertExists() } private class RootView(context: Context) : FrameLayout(context) { diff --git a/core-compose/src/androidTest/java/com/squareup/workflow/ui/compose/internal/ComposeSupportTest.kt b/core-compose/src/androidTest/java/com/squareup/workflow/ui/compose/internal/ComposeSupportTest.kt index 0c6a10d1..1a23845d 100644 --- a/core-compose/src/androidTest/java/com/squareup/workflow/ui/compose/internal/ComposeSupportTest.kt +++ b/core-compose/src/androidTest/java/com/squareup/workflow/ui/compose/internal/ComposeSupportTest.kt @@ -30,8 +30,8 @@ import androidx.compose.currentComposer import androidx.compose.mutableStateOf import androidx.test.ext.junit.runners.AndroidJUnit4 import androidx.ui.foundation.Text -import androidx.ui.test.assertIsDisplayed import androidx.ui.test.createComposeRule +import androidx.ui.test.findBySubstring import androidx.ui.test.findByText import org.junit.Rule import org.junit.Test @@ -47,7 +47,9 @@ class ComposeSupportTest { TestComposable("foo") } - findByText("foo").assertIsDisplayed() + // Compose bug doesn't let us use assertIsDisplayed on older devices. + // See https://issuetracker.google.com/issues/157728188. + findByText("foo").assertExists() } @Test fun ambientChangesPassThroughSubcomposition() { @@ -56,11 +58,13 @@ class ComposeSupportTest { TestComposable(ambientValue.value) } - findByText("foo").assertIsDisplayed() + // Compose bug doesn't let us use assertIsDisplayed on older devices. + // See https://issuetracker.google.com/issues/157728188. + findBySubstring("foo").assertExists() FrameManager.framed { ambientValue.value = "bar" } - findByText("bar").assertIsDisplayed() + findByText("bar").assertExists() } @Composable private fun TestComposable(ambientValue: String) { diff --git a/core-compose/src/main/java/com/squareup/workflow/ui/compose/internal/ComposeSupport.kt b/core-compose/src/main/java/com/squareup/workflow/ui/compose/internal/ComposeSupport.kt index 72c97918..f5a5b9b7 100644 --- a/core-compose/src/main/java/com/squareup/workflow/ui/compose/internal/ComposeSupport.kt +++ b/core-compose/src/main/java/com/squareup/workflow/ui/compose/internal/ComposeSupport.kt @@ -18,25 +18,19 @@ package com.squareup.workflow.ui.compose.internal import android.content.Context -import android.view.View import android.view.ViewGroup import androidx.compose.Composable import androidx.compose.Composition import androidx.compose.CompositionReference +import androidx.compose.FrameManager import androidx.compose.Recomposer import androidx.compose.compositionFor -import androidx.lifecycle.LifecycleOwner +import androidx.ui.core.AndroidOwner import androidx.ui.node.UiComposer -import com.squareup.workflow.ui.compose.internal.ReflectionSupport.ANDROID_OWNER_CLASS -import com.squareup.workflow.ui.compose.internal.ReflectionSupport.androidOwnerView -import com.squareup.workflow.ui.compose.internal.ReflectionSupport.createOwner import com.squareup.workflow.ui.compose.internal.ReflectionSupport.createWrappedContent -import com.squareup.workflow.ui.compose.internal.ReflectionSupport.ownerRoot import com.squareup.workflow.ui.core.compose.R -private typealias AndroidOwner = Any private typealias WrappedComposition = Composition -private typealias LayoutNode = Any private val DefaultLayoutParams = ViewGroup.LayoutParams( ViewGroup.LayoutParams.WRAP_CONTENT, @@ -59,12 +53,13 @@ internal fun ViewGroup.setContent( parent: CompositionReference, content: @Composable() () -> Unit ): Composition { + FrameManager.ensureStarted() val composeView: AndroidOwner = if (childCount > 0) { - getChildAt(0).takeIf(ANDROID_OWNER_CLASS::isInstance) + getChildAt(0) as? AndroidOwner } else { removeAllViews(); null - } ?: createOwner(context).also { addView(androidOwnerView(it), DefaultLayoutParams) } + } ?: AndroidOwner(context).also { addView(it.view, DefaultLayoutParams) } return doSetContent(context, composeView, recomposer, parent, content) } @@ -80,21 +75,20 @@ private fun doSetContent( content: @Composable() () -> Unit ): Composition { // val original = compositionFor(context, owner.root, recomposer) - val container = ownerRoot(owner) val original = compositionFor( - container = container, + container = owner.root, recomposer = recomposer, parent = parent, composerFactory = { slotTable, factoryRecomposer -> - UiComposer(context, container, slotTable, factoryRecomposer) + UiComposer(context, owner.root, slotTable, factoryRecomposer) } ) - val wrapped = androidOwnerView(owner).getTag(R.id.wrapped_composition_tag) + val wrapped = owner.view.getTag(R.id.wrapped_composition_tag) as? WrappedComposition // ?: WrappedComposition(owner, original).also { ?: createWrappedContent(owner, original).also { - androidOwnerView(owner).setTag(R.id.wrapped_composition_tag, it) + owner.view.setTag(R.id.wrapped_composition_tag, it) } wrapped.setContent(content) return wrapped @@ -102,31 +96,17 @@ private fun doSetContent( private object ReflectionSupport { - val ANDROID_OWNER_CLASS = Class.forName("androidx.ui.core.AndroidOwner") private val WRAPPED_COMPOSITION_CLASS = Class.forName("androidx.ui.core.WrappedComposition") - private val ANDROID_OWNER_KT_CLASS = Class.forName("androidx.ui.core.AndroidOwnerKt") private val WRAPPED_COMPOSITION_CTOR = - WRAPPED_COMPOSITION_CLASS.getConstructor(ANDROID_OWNER_CLASS, Composition::class.java) - - private val CREATE_OWNER_FUN = - ANDROID_OWNER_KT_CLASS.getMethod("createOwner", Context::class.java, LifecycleOwner::class.java) - private val ANDROID_OWNER_ROOT_GETTER = ANDROID_OWNER_CLASS.getMethod("getRoot") + WRAPPED_COMPOSITION_CLASS.getConstructor(AndroidOwner::class.java, Composition::class.java) init { WRAPPED_COMPOSITION_CTOR.isAccessible = true } - fun createOwner(context: Context): AndroidOwner = - CREATE_OWNER_FUN.invoke(null, context, null) as AndroidOwner - - fun ownerRoot(owner: AndroidOwner): LayoutNode = - ANDROID_OWNER_ROOT_GETTER.invoke(owner) as LayoutNode - fun createWrappedContent( owner: AndroidOwner, original: Composition ): WrappedComposition = WRAPPED_COMPOSITION_CTOR.newInstance(owner, original) as Composition - - fun androidOwnerView(owner: AndroidOwner): View = owner as View } diff --git a/samples/hello-compose-binding/src/main/java/com/squareup/sample/hellocomposebinding/HelloBinding.kt b/samples/hello-compose-binding/src/main/java/com/squareup/sample/hellocomposebinding/HelloBinding.kt index f51613ab..a91020fa 100644 --- a/samples/hello-compose-binding/src/main/java/com/squareup/sample/hellocomposebinding/HelloBinding.kt +++ b/samples/hello-compose-binding/src/main/java/com/squareup/sample/hellocomposebinding/HelloBinding.kt @@ -18,8 +18,8 @@ package com.squareup.sample.hellocomposebinding import androidx.compose.Composable import androidx.ui.core.Alignment import androidx.ui.core.Modifier -import androidx.ui.foundation.Clickable import androidx.ui.foundation.Text +import androidx.ui.foundation.clickable import androidx.ui.layout.fillMaxSize import androidx.ui.layout.wrapContentSize import androidx.ui.material.ripple.ripple @@ -29,13 +29,13 @@ import com.squareup.workflow.ui.compose.composedViewFactory import com.squareup.workflow.ui.compose.tooling.preview val HelloBinding = composedViewFactory { rendering, _ -> - Clickable( + Text( + rendering.message, modifier = Modifier.fillMaxSize() - .ripple(bounded = true), - onClick = { rendering.onClick() } - ) { - Text(rendering.message, modifier = Modifier.wrapContentSize(Alignment.Center)) - } + .ripple() + .clickable(onClick = rendering.onClick) + .wrapContentSize(Alignment.Center) + ) } @Preview(heightDp = 150, showBackground = true) diff --git a/samples/hello-compose-rendering/src/main/java/com/squareup/sample/hellocomposerendering/HelloRenderingWorkflow.kt b/samples/hello-compose-rendering/src/main/java/com/squareup/sample/hellocomposerendering/HelloRenderingWorkflow.kt index 1cd1906c..7faf8e71 100644 --- a/samples/hello-compose-rendering/src/main/java/com/squareup/sample/hellocomposerendering/HelloRenderingWorkflow.kt +++ b/samples/hello-compose-rendering/src/main/java/com/squareup/sample/hellocomposerendering/HelloRenderingWorkflow.kt @@ -18,17 +18,16 @@ package com.squareup.sample.hellocomposerendering import androidx.compose.Composable import androidx.ui.core.Alignment import androidx.ui.core.Modifier -import androidx.ui.foundation.Clickable import androidx.ui.foundation.Text -import androidx.ui.layout.fillMaxSize +import androidx.ui.foundation.clickable import androidx.ui.layout.wrapContentSize import androidx.ui.material.MaterialTheme import androidx.ui.material.ripple.ripple import androidx.ui.tooling.preview.Preview import com.squareup.sample.hellocomposerendering.HelloRenderingWorkflow.Toggle import com.squareup.workflow.Sink -import com.squareup.workflow.ui.compose.ComposeWorkflow import com.squareup.workflow.ui.ViewEnvironment +import com.squareup.workflow.ui.compose.ComposeWorkflow import com.squareup.workflow.ui.compose.tooling.preview /** @@ -46,13 +45,13 @@ object HelloRenderingWorkflow : ComposeWorkflow() { viewEnvironment: ViewEnvironment ) { MaterialTheme { - Clickable( - onClick = { outputSink.send(Toggle) }, - modifier = Modifier.ripple(bounded = true) - .fillMaxSize() - ) { - Text(props, modifier = Modifier.wrapContentSize(Alignment.Center)) - } + Text( + props, + modifier = Modifier + .ripple() + .clickable(onClick = { outputSink.send(Toggle) }) + .wrapContentSize(Alignment.Center) + ) } } } diff --git a/samples/hello-compose/src/main/java/com/squareup/sample/hellocompose/HelloBinding.kt b/samples/hello-compose/src/main/java/com/squareup/sample/hellocompose/HelloBinding.kt index 57d19a87..5b39a449 100644 --- a/samples/hello-compose/src/main/java/com/squareup/sample/hellocompose/HelloBinding.kt +++ b/samples/hello-compose/src/main/java/com/squareup/sample/hellocompose/HelloBinding.kt @@ -17,20 +17,19 @@ package com.squareup.sample.hellocompose import androidx.ui.core.Alignment import androidx.ui.core.Modifier -import androidx.ui.foundation.Clickable import androidx.ui.foundation.Text -import androidx.ui.layout.fillMaxSize +import androidx.ui.foundation.clickable import androidx.ui.layout.wrapContentSize import androidx.ui.material.ripple.ripple import com.squareup.sample.hellocompose.HelloWorkflow.Rendering import com.squareup.workflow.ui.compose.composedViewFactory val HelloBinding = composedViewFactory { rendering, _ -> - Clickable( - onClick = { rendering.onClick() }, - modifier = Modifier.ripple(bounded = true) - .fillMaxSize() - ) { - Text(rendering.message, modifier = Modifier.wrapContentSize(Alignment.Center)) - } + Text( + rendering.message, + modifier = Modifier + .ripple() + .clickable(onClick = rendering.onClick) + .wrapContentSize(Alignment.Center) + ) } diff --git a/settings.gradle.kts b/settings.gradle.kts index a273408d..7b1a1e0a 100644 --- a/settings.gradle.kts +++ b/settings.gradle.kts @@ -20,6 +20,8 @@ include( ":core-compose", ":samples:hello-compose", ":samples:hello-compose-binding", - ":samples:hello-compose-rendering", + // This module is crashing the compiler with dev12. Just disable it for now. + // See https://github.com/square/workflow-kotlin-compose/issues/42. + // ":samples:hello-compose-rendering", ":samples:nested-renderings" )