From c3ad4f7180e2b0185517d0082f75b5001f120e1a Mon Sep 17 00:00:00 2001 From: Luke De Feo Date: Wed, 20 Sep 2023 05:45:30 -0700 Subject: [PATCH] Send warning when bloks tree not prepared Summary: Give the user something actionable when tree is not ready due to flipper connected check failing Reviewed By: lblasa Differential Revision: D49455254 fbshipit-source-id: 8869cacde5b65260f4615f5ba2ba34f967d7d27f --- .../descriptors/DescriptorRegister.kt | 1 + .../descriptors/WarningMessageDescriptor.kt | 37 +++++++++++++++++++ .../flipper/plugins/uidebugger/model/Types.kt | 2 + 3 files changed, 40 insertions(+) create mode 100644 android/src/main/java/com/facebook/flipper/plugins/uidebugger/descriptors/WarningMessageDescriptor.kt diff --git a/android/src/main/java/com/facebook/flipper/plugins/uidebugger/descriptors/DescriptorRegister.kt b/android/src/main/java/com/facebook/flipper/plugins/uidebugger/descriptors/DescriptorRegister.kt index 77faea846..8bdc78965 100644 --- a/android/src/main/java/com/facebook/flipper/plugins/uidebugger/descriptors/DescriptorRegister.kt +++ b/android/src/main/java/com/facebook/flipper/plugins/uidebugger/descriptors/DescriptorRegister.kt @@ -27,6 +27,7 @@ class DescriptorRegister { fun withDefaults(): DescriptorRegister { val mapping = DescriptorRegister() mapping.register(Any::class.java, ObjectDescriptor) + mapping.register(WarningMessage::class.java, WarningMessageDescriptor) mapping.register(ApplicationRef::class.java, ApplicationRefDescriptor) mapping.register(Activity::class.java, ActivityDescriptor) mapping.register(Window::class.java, WindowDescriptor) diff --git a/android/src/main/java/com/facebook/flipper/plugins/uidebugger/descriptors/WarningMessageDescriptor.kt b/android/src/main/java/com/facebook/flipper/plugins/uidebugger/descriptors/WarningMessageDescriptor.kt new file mode 100644 index 000000000..1a858c209 --- /dev/null +++ b/android/src/main/java/com/facebook/flipper/plugins/uidebugger/descriptors/WarningMessageDescriptor.kt @@ -0,0 +1,37 @@ +/* + * Copyright (c) Meta Platforms, Inc. and 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.plugins.uidebugger.descriptors + +import com.facebook.flipper.plugins.uidebugger.model.Bounds +import com.facebook.flipper.plugins.uidebugger.model.InspectableObject +import com.facebook.flipper.plugins.uidebugger.model.MetadataId +import com.facebook.flipper.plugins.uidebugger.util.Immediate +import com.facebook.flipper.plugins.uidebugger.util.MaybeDeferred +import com.facebook.flipper.plugins.uidebugger.util.objectIdentity + +data class WarningMessage(val message: String, val parentBounds: Bounds) + +object WarningMessageDescriptor : NodeDescriptor { + override fun getId(node: WarningMessage): Id = node.message.objectIdentity() + + override fun getBounds(node: WarningMessage): Bounds = node.parentBounds.copy(x = 0, y = 0) + + override fun getName(node: WarningMessage): String = node.message + + override fun getQualifiedName(node: WarningMessage): String = "" + + override fun getChildren(node: WarningMessage): List = listOf() + + override fun getActiveChild(node: WarningMessage): Any? = null + + override fun getAttributes( + node: WarningMessage + ): MaybeDeferred> = Immediate(mapOf()) + + override fun getTags(node: WarningMessage): Set = setOf("Warning") +} diff --git a/android/src/main/java/com/facebook/flipper/plugins/uidebugger/model/Types.kt b/android/src/main/java/com/facebook/flipper/plugins/uidebugger/model/Types.kt index a14137eb3..47e99e777 100644 --- a/android/src/main/java/com/facebook/flipper/plugins/uidebugger/model/Types.kt +++ b/android/src/main/java/com/facebook/flipper/plugins/uidebugger/model/Types.kt @@ -16,6 +16,8 @@ data class Bounds(val x: Int, val y: Int, val width: Int, val height: Int) { fun fromRect(rect: Rect): Bounds { return Bounds(rect.left, rect.top, rect.width(), rect.height()) } + + fun zero() = Bounds(0, 0, 0, 0) } }