From 18af62ebfd6953645e5c63da79389e090f18b28f Mon Sep 17 00:00:00 2001 From: Pascal Hartig Date: Thu, 2 May 2019 09:05:45 -0700 Subject: [PATCH] Add a basic android plugin Summary: Moves some things around for package access reasons. Otherwise sets up the simplest possible plugin that just sends over all the data it shows in the UI on connection time. Is that a good idea? You tell me. JS part coming with the next diff. Reviewed By: jknoxville Differential Revision: D15182282 fbshipit-source-id: da5c1de43dfaee273b4eecc0f4512bef872a0ac6 --- .../sample/tutorial/{ui => }/MarineMammal.kt | 2 +- .../flipper/sample/tutorial/MarineMammals.kt | 28 +++++++++++++ .../sample/tutorial/TutorialApplication.kt | 2 + .../tutorial/plugin/SeaMammalFlipperPlugin.kt | 41 +++++++++++++++++++ .../sample/tutorial/ui/FeedItemCardSpec.kt | 4 +- .../sample/tutorial/ui/FeedSectionSpec.kt | 4 +- .../sample/tutorial/ui/MarineMammals.kt | 19 --------- .../tutorial/ui/MarineMammelComponentSpec.kt | 1 + .../sample/tutorial/ui/RootComponentSpec.kt | 1 + 9 files changed, 80 insertions(+), 22 deletions(-) rename android/tutorial/src/main/java/com/facebook/flipper/sample/tutorial/{ui => }/MarineMammal.kt (85%) create mode 100644 android/tutorial/src/main/java/com/facebook/flipper/sample/tutorial/MarineMammals.kt create mode 100644 android/tutorial/src/main/java/com/facebook/flipper/sample/tutorial/plugin/SeaMammalFlipperPlugin.kt delete mode 100644 android/tutorial/src/main/java/com/facebook/flipper/sample/tutorial/ui/MarineMammals.kt diff --git a/android/tutorial/src/main/java/com/facebook/flipper/sample/tutorial/ui/MarineMammal.kt b/android/tutorial/src/main/java/com/facebook/flipper/sample/tutorial/MarineMammal.kt similarity index 85% rename from android/tutorial/src/main/java/com/facebook/flipper/sample/tutorial/ui/MarineMammal.kt rename to android/tutorial/src/main/java/com/facebook/flipper/sample/tutorial/MarineMammal.kt index 3d98df4bf..fa37d856f 100644 --- a/android/tutorial/src/main/java/com/facebook/flipper/sample/tutorial/ui/MarineMammal.kt +++ b/android/tutorial/src/main/java/com/facebook/flipper/sample/tutorial/MarineMammal.kt @@ -5,7 +5,7 @@ * in the root directory of this source tree. */ -package com.facebook.flipper.sample.tutorial.ui +package com.facebook.flipper.sample.tutorial import android.net.Uri diff --git a/android/tutorial/src/main/java/com/facebook/flipper/sample/tutorial/MarineMammals.kt b/android/tutorial/src/main/java/com/facebook/flipper/sample/tutorial/MarineMammals.kt new file mode 100644 index 000000000..1e73759bd --- /dev/null +++ b/android/tutorial/src/main/java/com/facebook/flipper/sample/tutorial/MarineMammals.kt @@ -0,0 +1,28 @@ +/* + * Copyright (c) 2018-present, Facebook, Inc. + * + * This source code is licensed under the MIT license found in the LICENSE + * file in the root directory of this source tree. + * + */ + +package com.facebook.flipper.sample.tutorial + +import androidx.core.net.toUri + +object MarineMammals { + val list = listOf( + MarineMammal( + "Polar Bear", + "https://upload.wikimedia.org/wikipedia/commons/thumb/8/84/Ursus_maritimus_4_1996-08-04.jpg/190px-Ursus_maritimus_4_1996-08-04.jpg".toUri()), + MarineMammal( + "Sea Otter", + "https://upload.wikimedia.org/wikipedia/commons/thumb/1/15/Sea_otter_cropped.jpg/220px-Sea_otter_cropped.jpg".toUri()), + MarineMammal( + "West Indian Manatee", + "https://upload.wikimedia.org/wikipedia/commons/thumb/6/6f/FL_fig04.jpg/230px-FL_fig04.jpg".toUri()), + MarineMammal( + "Bottlenose Dolphin", + "https://upload.wikimedia.org/wikipedia/commons/thumb/1/10/Tursiops_truncatus_01.jpg/220px-Tursiops_truncatus_01.jpg".toUri()) + ) +} \ No newline at end of file diff --git a/android/tutorial/src/main/java/com/facebook/flipper/sample/tutorial/TutorialApplication.kt b/android/tutorial/src/main/java/com/facebook/flipper/sample/tutorial/TutorialApplication.kt index bb84e48c2..effb6eb1d 100644 --- a/android/tutorial/src/main/java/com/facebook/flipper/sample/tutorial/TutorialApplication.kt +++ b/android/tutorial/src/main/java/com/facebook/flipper/sample/tutorial/TutorialApplication.kt @@ -15,6 +15,7 @@ import com.facebook.flipper.plugins.fresco.FrescoFlipperPlugin import com.facebook.flipper.plugins.inspector.DescriptorMapping import com.facebook.flipper.plugins.inspector.InspectorFlipperPlugin import com.facebook.flipper.plugins.litho.LithoFlipperDescriptors +import com.facebook.flipper.sample.tutorial.plugin.SeaMammalFlipperPlugin import com.facebook.litho.config.ComponentsConfiguration import com.facebook.litho.sections.config.SectionsConfiguration import com.facebook.litho.widget.SectionsDebug @@ -37,6 +38,7 @@ class TutorialApplication : Application() { flipperClient.addPlugin(InspectorFlipperPlugin(this, descriptorMapping)) flipperClient.addPlugin(FrescoFlipperPlugin()) + flipperClient.addPlugin(SeaMammalFlipperPlugin()) flipperClient.start() } } diff --git a/android/tutorial/src/main/java/com/facebook/flipper/sample/tutorial/plugin/SeaMammalFlipperPlugin.kt b/android/tutorial/src/main/java/com/facebook/flipper/sample/tutorial/plugin/SeaMammalFlipperPlugin.kt new file mode 100644 index 000000000..45f2f2be1 --- /dev/null +++ b/android/tutorial/src/main/java/com/facebook/flipper/sample/tutorial/plugin/SeaMammalFlipperPlugin.kt @@ -0,0 +1,41 @@ +/* + * Copyright (c) 2018-present, Facebook, Inc. + * + * This source code is licensed under the MIT license found in the LICENSE + * file in the root directory of this source tree. + * + */ + +package com.facebook.flipper.sample.tutorial.plugin + +import com.facebook.flipper.core.FlipperConnection +import com.facebook.flipper.core.FlipperObject +import com.facebook.flipper.core.FlipperPlugin +import com.facebook.flipper.sample.tutorial.MarineMammals + +class SeaMammalFlipperPlugin : FlipperPlugin { + private var connection: FlipperConnection? = null + + override fun getId(): String = "sea-mammals" + + override fun onConnect(connection: FlipperConnection?) { + this.connection = connection + + MarineMammals.list.mapIndexed { index, (title, picture_url) -> + FlipperObject.Builder() + .put("id", index) + .put("title", title) + .put("url", picture_url).build() + }.forEach(this::newRow) + } + + override fun onDisconnect() { + connection = null + } + + override fun runInBackground(): Boolean = false + + private fun newRow(row: FlipperObject) { + connection?.send("newRow", row) + } +} \ No newline at end of file diff --git a/android/tutorial/src/main/java/com/facebook/flipper/sample/tutorial/ui/FeedItemCardSpec.kt b/android/tutorial/src/main/java/com/facebook/flipper/sample/tutorial/ui/FeedItemCardSpec.kt index bb11f87ab..765ca174e 100644 --- a/android/tutorial/src/main/java/com/facebook/flipper/sample/tutorial/ui/FeedItemCardSpec.kt +++ b/android/tutorial/src/main/java/com/facebook/flipper/sample/tutorial/ui/FeedItemCardSpec.kt @@ -7,6 +7,7 @@ package com.facebook.flipper.sample.tutorial.ui +import com.facebook.flipper.sample.tutorial.MarineMammal import com.facebook.litho.Column import com.facebook.litho.Component import com.facebook.litho.ComponentContext @@ -24,7 +25,8 @@ object FeedItemCardSpec { @OnCreateLayout fun onCreateLayout( c: ComponentContext, - @Prop mammal: MarineMammal): Component = + @Prop mammal: MarineMammal + ): Component = Column.create(c) .paddingDip(VERTICAL, 8f) .paddingDip(HORIZONTAL, 16f) diff --git a/android/tutorial/src/main/java/com/facebook/flipper/sample/tutorial/ui/FeedSectionSpec.kt b/android/tutorial/src/main/java/com/facebook/flipper/sample/tutorial/ui/FeedSectionSpec.kt index a63e93a43..572cfa60b 100644 --- a/android/tutorial/src/main/java/com/facebook/flipper/sample/tutorial/ui/FeedSectionSpec.kt +++ b/android/tutorial/src/main/java/com/facebook/flipper/sample/tutorial/ui/FeedSectionSpec.kt @@ -7,6 +7,7 @@ package com.facebook.flipper.sample.tutorial.ui +import com.facebook.flipper.sample.tutorial.MarineMammal import com.facebook.litho.annotations.FromEvent import com.facebook.litho.annotations.OnEvent import com.facebook.litho.annotations.Prop @@ -32,7 +33,8 @@ object FeedSectionSpec { @OnEvent(RenderEvent::class) fun render( c: SectionContext, - @FromEvent model: MarineMammal): RenderInfo = + @FromEvent model: MarineMammal + ): RenderInfo = ComponentRenderInfo.create() .component(FeedItemCard.create(c).mammal(model).build()) .build() diff --git a/android/tutorial/src/main/java/com/facebook/flipper/sample/tutorial/ui/MarineMammals.kt b/android/tutorial/src/main/java/com/facebook/flipper/sample/tutorial/ui/MarineMammals.kt deleted file mode 100644 index 5d98dfbb2..000000000 --- a/android/tutorial/src/main/java/com/facebook/flipper/sample/tutorial/ui/MarineMammals.kt +++ /dev/null @@ -1,19 +0,0 @@ -/* - * Copyright (c) Facebook, Inc. and its affiliates. - * - * This source code is licensed under the MIT license found in the LICENSE file - * in the root directory of this source tree. - */ - -package com.facebook.flipper.sample.tutorial.ui - -import androidx.core.net.toUri - -object MarineMammals { - val list = listOf( - MarineMammal("Polar Bear", "https://upload.wikimedia.org/wikipedia/commons/thumb/8/84/Ursus_maritimus_4_1996-08-04.jpg/190px-Ursus_maritimus_4_1996-08-04.jpg".toUri()), - MarineMammal("Sea Otter", "https://upload.wikimedia.org/wikipedia/commons/thumb/1/15/Sea_otter_cropped.jpg/220px-Sea_otter_cropped.jpg".toUri()), - MarineMammal("West Indian Manatee", "https://upload.wikimedia.org/wikipedia/commons/thumb/6/6f/FL_fig04.jpg/230px-FL_fig04.jpg".toUri()), - MarineMammal("Bottlenose Dolphin", "https://upload.wikimedia.org/wikipedia/commons/thumb/1/10/Tursiops_truncatus_01.jpg/220px-Tursiops_truncatus_01.jpg".toUri()) - ) -} \ No newline at end of file diff --git a/android/tutorial/src/main/java/com/facebook/flipper/sample/tutorial/ui/MarineMammelComponentSpec.kt b/android/tutorial/src/main/java/com/facebook/flipper/sample/tutorial/ui/MarineMammelComponentSpec.kt index f5ed5c14d..9e2839a1a 100644 --- a/android/tutorial/src/main/java/com/facebook/flipper/sample/tutorial/ui/MarineMammelComponentSpec.kt +++ b/android/tutorial/src/main/java/com/facebook/flipper/sample/tutorial/ui/MarineMammelComponentSpec.kt @@ -8,6 +8,7 @@ package com.facebook.flipper.sample.tutorial.ui import android.graphics.Typeface +import com.facebook.flipper.sample.tutorial.MarineMammal import com.facebook.litho.Column import com.facebook.litho.Component import com.facebook.litho.ComponentContext diff --git a/android/tutorial/src/main/java/com/facebook/flipper/sample/tutorial/ui/RootComponentSpec.kt b/android/tutorial/src/main/java/com/facebook/flipper/sample/tutorial/ui/RootComponentSpec.kt index 196347b2c..1ecda766b 100644 --- a/android/tutorial/src/main/java/com/facebook/flipper/sample/tutorial/ui/RootComponentSpec.kt +++ b/android/tutorial/src/main/java/com/facebook/flipper/sample/tutorial/ui/RootComponentSpec.kt @@ -7,6 +7,7 @@ package com.facebook.flipper.sample.tutorial.ui +import com.facebook.flipper.sample.tutorial.MarineMammals import com.facebook.litho.Component import com.facebook.litho.ComponentContext import com.facebook.litho.annotations.LayoutSpec