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
This commit is contained in:
Pascal Hartig
2019-05-02 09:05:45 -07:00
committed by Facebook Github Bot
parent c3efb7b45e
commit 18af62ebfd
9 changed files with 80 additions and 22 deletions

View File

@@ -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

View File

@@ -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())
)
}

View File

@@ -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()
}
}

View File

@@ -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)
}
}

View File

@@ -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)

View File

@@ -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()

View File

@@ -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())
)
}

View File

@@ -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

View File

@@ -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