diff --git a/android/sample/src/debug/java/com/facebook/flipper/sample/FlipperInitializer.java b/android/sample/src/debug/java/com/facebook/flipper/sample/FlipperInitializer.java index d971d9f3e..b45cbce57 100644 --- a/android/sample/src/debug/java/com/facebook/flipper/sample/FlipperInitializer.java +++ b/android/sample/src/debug/java/com/facebook/flipper/sample/FlipperInitializer.java @@ -7,6 +7,7 @@ package com.facebook.flipper.sample; +import android.app.Application; import android.content.Context; import com.facebook.flipper.core.FlipperClient; import com.facebook.flipper.plugins.crashreporter.CrashReporterPlugin; @@ -20,6 +21,7 @@ import com.facebook.flipper.plugins.network.FlipperOkhttpInterceptor; import com.facebook.flipper.plugins.network.NetworkFlipperPlugin; import com.facebook.flipper.plugins.sharedpreferences.SharedPreferencesFlipperPlugin; import com.facebook.flipper.plugins.sharedpreferences.SharedPreferencesFlipperPlugin.SharedPreferencesDescriptor; +import com.facebook.flipper.plugins.uidebugger.UIDebuggerFlipperPlugin; import com.facebook.litho.config.ComponentsConfiguration; import com.facebook.litho.editor.flipper.LithoFlipperDescriptors; import java.util.Arrays; @@ -54,6 +56,7 @@ public final class FlipperInitializer { client.addPlugin(CrashReporterPlugin.getInstance()); client.addPlugin(new DatabasesFlipperPlugin(context)); client.addPlugin(NavigationFlipperPlugin.getInstance()); + client.addPlugin(new UIDebuggerFlipperPlugin((Application) context)); client.start(); final OkHttpClient okHttpClient = diff --git a/android/src/main/java/com/facebook/flipper/plugins/uidebugger/UIDebuggerFlipperPlugin.kt b/android/src/main/java/com/facebook/flipper/plugins/uidebugger/UIDebuggerFlipperPlugin.kt index d7c45bc68..9eb084b47 100644 --- a/android/src/main/java/com/facebook/flipper/plugins/uidebugger/UIDebuggerFlipperPlugin.kt +++ b/android/src/main/java/com/facebook/flipper/plugins/uidebugger/UIDebuggerFlipperPlugin.kt @@ -9,24 +9,29 @@ package com.facebook.flipper.plugins.uidebugger import android.app.Application import com.facebook.flipper.core.FlipperConnection +import com.facebook.flipper.core.FlipperObject import com.facebook.flipper.core.FlipperPlugin -import com.facebook.flipper.plugins.uidebugger.commands.CommandRegister -import com.facebook.flipper.plugins.uidebugger.commands.GetRoot import com.facebook.flipper.plugins.uidebugger.core.ApplicationRef import com.facebook.flipper.plugins.uidebugger.core.Context -class UIDebuggerFlipperPlugin(application: Application) : FlipperPlugin { +class UIDebuggerFlipperPlugin(val application: Application) : FlipperPlugin { + private val context: Context = Context(ApplicationRef(application)) private var connection: FlipperConnection? = null override fun getId(): String { - return "UIDebugger" + return "ui-debugger" } @Throws(Exception::class) override fun onConnect(connection: FlipperConnection) { this.connection = connection - registerCommands(connection) + // temp solution, get from descriptor + connection.send( + "init", + FlipperObject.Builder() + .put("rootId", System.identityHashCode(application).toString()) + .build()) } @Throws(Exception::class) @@ -37,8 +42,4 @@ class UIDebuggerFlipperPlugin(application: Application) : FlipperPlugin { override fun runInBackground(): Boolean { return true } - - fun registerCommands(connection: FlipperConnection) { - CommandRegister.register(connection, GetRoot(context)) - } } diff --git a/android/src/main/java/com/facebook/flipper/plugins/uidebugger/commands/GetRoot.kt b/android/src/main/java/com/facebook/flipper/plugins/uidebugger/commands/GetRoot.kt deleted file mode 100644 index 753a132fa..000000000 --- a/android/src/main/java/com/facebook/flipper/plugins/uidebugger/commands/GetRoot.kt +++ /dev/null @@ -1,20 +0,0 @@ -/* - * 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.commands - -import com.facebook.flipper.core.FlipperObject -import com.facebook.flipper.core.FlipperResponder -import com.facebook.flipper.plugins.uidebugger.core.Context - -class GetRoot(context: Context) : Command(context) { - override fun identifier(): String { - return "getRoot" - } - - override fun execute(params: FlipperObject, response: FlipperResponder) {} -} diff --git a/desktop/plugins/public/ui-debugger/components/main.tsx b/desktop/plugins/public/ui-debugger/components/main.tsx new file mode 100644 index 000000000..754d69149 --- /dev/null +++ b/desktop/plugins/public/ui-debugger/components/main.tsx @@ -0,0 +1,19 @@ +/** + * 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. + * + * @format + */ + +import React from 'react'; +import {plugin} from '../index'; +import {usePlugin, useValue} from 'flipper-plugin'; + +export function Component() { + const instance = usePlugin(plugin); + const rootId = useValue(instance.rootId); + + return
{rootId}
; +} diff --git a/desktop/plugins/public/ui-debugger/docs/overview.mdx b/desktop/plugins/public/ui-debugger/docs/overview.mdx new file mode 100644 index 000000000..49f24b50c --- /dev/null +++ b/desktop/plugins/public/ui-debugger/docs/overview.mdx @@ -0,0 +1 @@ +This is an experimental plugin in development. Everything will change and comes with no warranty / support guarantees \ No newline at end of file diff --git a/desktop/plugins/public/ui-debugger/index.tsx b/desktop/plugins/public/ui-debugger/index.tsx new file mode 100644 index 000000000..1684cbb86 --- /dev/null +++ b/desktop/plugins/public/ui-debugger/index.tsx @@ -0,0 +1,22 @@ +/** + * 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. + * + * @format + */ + +import {PluginClient, createState} from 'flipper-plugin'; + +type Events = { + init: {rootId: string}; +}; + +export function plugin(client: PluginClient) { + const rootId = createState(undefined); + client.onMessage('init', (root) => rootId.set(root.rootId)); + return {rootId}; +} + +export {Component} from './components/main'; diff --git a/desktop/plugins/public/ui-debugger/package.json b/desktop/plugins/public/ui-debugger/package.json new file mode 100644 index 000000000..029302f9a --- /dev/null +++ b/desktop/plugins/public/ui-debugger/package.json @@ -0,0 +1,29 @@ +{ + "$schema": "https://fbflipper.com/schemas/plugin-package/v2.json", + "name": "flipper-plugin-ui-debugger", + "id": "ui-debugger", + "pluginType": "client", + "version": "0.0.0", + "flipperBundlerEntry": "index.tsx", + "main": "dist/bundle.js", + "license": "MIT", + "title": "UI Debugger (alpha)", + "icon": "nav-magnifying-glass", + "keywords": [ + "flipper-plugin" + ], + "bugs": { + "url": "https://github.com/facebook/flipper/issues" + }, + "peerDependencies": { + "flipper-plugin": "*", + "antd": "*", + "react": "*", + "react-dom": "*", + "@emotion/styled": "*", + "@ant-design/icons": "*", + "@types/react": "*", + "@types/react-dom": "*", + "@types/node": "*" + } +} diff --git a/desktop/static/icons.json b/desktop/static/icons.json index 10916be3c..a3a4fe31d 100644 --- a/desktop/static/icons.json +++ b/desktop/static/icons.json @@ -642,5 +642,8 @@ ], "app-instagram": [ 16 + ], + "nav-magnifying-glass": [ + 16 ] } \ No newline at end of file