From 168f020d5e2fada422983d800bdb0afcae8a7b34 Mon Sep 17 00:00:00 2001 From: Ramanpreet Nara Date: Fri, 17 Jun 2022 15:06:31 -0700 Subject: [PATCH] Unbreak SurfaceRegistry users in bridge mode Summary: Changelog: [Internal] Reviewed By: nlutsenko Differential Revision: D37250414 fbshipit-source-id: be3b98ba661c6f267d0d0dcac8d816584ef58c51 --- .../uimanager/SurfaceRegistryBinding.cpp | 52 ++++++++++++++----- 1 file changed, 38 insertions(+), 14 deletions(-) diff --git a/ReactCommon/react/renderer/uimanager/SurfaceRegistryBinding.cpp b/ReactCommon/react/renderer/uimanager/SurfaceRegistryBinding.cpp index 93c4c4885a26b5..e65992faacb648 100644 --- a/ReactCommon/react/renderer/uimanager/SurfaceRegistryBinding.cpp +++ b/ReactCommon/react/renderer/uimanager/SurfaceRegistryBinding.cpp @@ -44,13 +44,25 @@ void SurfaceRegistryBinding::startSurface( jsi::valueFromDynamic(runtime, parameters), jsi::Value(runtime, displayModeToInt(displayMode))}); } else { - callMethodOfModule( - runtime, - "AppRegistry", - "runApplication", - {jsi::String::createFromUtf8(runtime, moduleName), - jsi::valueFromDynamic(runtime, parameters), - jsi::Value(runtime, displayModeToInt(displayMode))}); + if (moduleName != "LogBox" && + global.hasProperty(runtime, "RN$SurfaceRegistry")) { + auto registry = global.getPropertyAsObject(runtime, "RN$SurfaceRegistry"); + auto method = registry.getPropertyAsFunction(runtime, "renderSurface"); + + method.call( + runtime, + {jsi::String::createFromUtf8(runtime, moduleName), + jsi::valueFromDynamic(runtime, parameters), + jsi::Value(runtime, displayModeToInt(displayMode))}); + } else { + callMethodOfModule( + runtime, + "AppRegistry", + "runApplication", + {jsi::String::createFromUtf8(runtime, moduleName), + jsi::valueFromDynamic(runtime, parameters), + jsi::Value(runtime, displayModeToInt(displayMode))}); + } } } @@ -86,13 +98,25 @@ void SurfaceRegistryBinding::setSurfaceProps( jsi::valueFromDynamic(runtime, parameters), jsi::Value(runtime, displayModeToInt(displayMode))}); } else { - callMethodOfModule( - runtime, - "AppRegistry", - "setSurfaceProps", - {jsi::String::createFromUtf8(runtime, moduleName), - jsi::valueFromDynamic(runtime, parameters), - jsi::Value(runtime, displayModeToInt(displayMode))}); + if (moduleName != "LogBox" && + global.hasProperty(runtime, "RN$SurfaceRegistry")) { + auto registry = global.getPropertyAsObject(runtime, "RN$SurfaceRegistry"); + auto method = registry.getPropertyAsFunction(runtime, "setSurfaceProps"); + + method.call( + runtime, + {jsi::String::createFromUtf8(runtime, moduleName), + jsi::valueFromDynamic(runtime, parameters), + jsi::Value(runtime, displayModeToInt(displayMode))}); + } else { + callMethodOfModule( + runtime, + "AppRegistry", + "setSurfaceProps", + {jsi::String::createFromUtf8(runtime, moduleName), + jsi::valueFromDynamic(runtime, parameters), + jsi::Value(runtime, displayModeToInt(displayMode))}); + } } }