diff --git a/React/CxxBridge/RCTCxxBridge.mm b/React/CxxBridge/RCTCxxBridge.mm index 353bbce40f4f9c..d2e33faec47eac 100644 --- a/React/CxxBridge/RCTCxxBridge.mm +++ b/React/CxxBridge/RCTCxxBridge.mm @@ -170,7 +170,6 @@ void onBatchComplete() override { @implementation RCTCxxBridge { - BOOL _wasBatchActive; BOOL _didInvalidate; BOOL _moduleRegistryCreated; @@ -1360,7 +1359,7 @@ - (void)stopProfiling:(void (^)(NSData *))callback - (BOOL)isBatchActive { - return _wasBatchActive; + return _reactInstance ? _reactInstance->isBatchActive() : NO; } - (void *)runtime diff --git a/ReactCommon/cxxreact/Instance.cpp b/ReactCommon/cxxreact/Instance.cpp index a49f1d60d9f552..23723fbbe27bce 100644 --- a/ReactCommon/cxxreact/Instance.cpp +++ b/ReactCommon/cxxreact/Instance.cpp @@ -149,6 +149,10 @@ void *Instance::getJavaScriptContext() { bool Instance::isInspectable() { return nativeToJsBridge_ ? nativeToJsBridge_->isInspectable() : false; } + +bool Instance::isBatchActive() { + return nativeToJsBridge_ ? nativeToJsBridge_->isBatchActive() : false; +} void Instance::callJSFunction(std::string &&module, std::string &&method, folly::dynamic &¶ms) { diff --git a/ReactCommon/cxxreact/Instance.h b/ReactCommon/cxxreact/Instance.h index 654fa929e9bf5b..72a5a7ee836071 100644 --- a/ReactCommon/cxxreact/Instance.h +++ b/ReactCommon/cxxreact/Instance.h @@ -58,6 +58,7 @@ class RN_EXPORT Instance { std::unique_ptr jsonValue); void *getJavaScriptContext(); bool isInspectable(); + bool isBatchActive(); void callJSFunction(std::string &&module, std::string &&method, folly::dynamic &¶ms); void callJSCallback(uint64_t callbackId, folly::dynamic &¶ms); diff --git a/ReactCommon/cxxreact/NativeToJsBridge.cpp b/ReactCommon/cxxreact/NativeToJsBridge.cpp index a9b7161df734b0..4cb428d9750d53 100644 --- a/ReactCommon/cxxreact/NativeToJsBridge.cpp +++ b/ReactCommon/cxxreact/NativeToJsBridge.cpp @@ -37,6 +37,10 @@ class JsToNativeBridge : public react::ExecutorDelegate { std::shared_ptr getModuleRegistry() override { return m_registry; } + + bool isBatchActive() { + return m_batchHadNativeModuleCalls; + } void callNativeModules( JSExecutor& executor, folly::dynamic&& calls, bool isEndOfBatch) override { @@ -222,6 +226,10 @@ void* NativeToJsBridge::getJavaScriptContext() { bool NativeToJsBridge::isInspectable() { return m_executor->isInspectable(); } + +bool NativeToJsBridge::isBatchActive() { + return m_delegate->isBatchActive(); +} void NativeToJsBridge::handleMemoryPressure(int pressureLevel) { runOnExecutorQueue([=] (JSExecutor* executor) { diff --git a/ReactCommon/cxxreact/NativeToJsBridge.h b/ReactCommon/cxxreact/NativeToJsBridge.h index 8c99d89ac5895c..cc30054acd5bf4 100644 --- a/ReactCommon/cxxreact/NativeToJsBridge.h +++ b/ReactCommon/cxxreact/NativeToJsBridge.h @@ -75,6 +75,7 @@ class NativeToJsBridge { void setGlobalVariable(std::string propName, std::unique_ptr jsonValue); void* getJavaScriptContext(); bool isInspectable(); + bool isBatchActive(); void handleMemoryPressure(int pressureLevel);