From 5ff9ae4a46c64758b634c4f4ebdb846ff3b5ebb5 Mon Sep 17 00:00:00 2001 From: Emily Janzer Date: Thu, 27 Feb 2020 12:14:58 -0800 Subject: [PATCH] Refactor reloadJSFromServer to use a callback internally Summary: This is step 3 in creating a new DevSupportManager with a better async API for loading the JS bundle from Metro. Right now DevSupportManagerImpl calls a method on its ReactInstanceManagerDevHelper delegate when the JS bundle is done being downloaded from the server. However, I want to move to a callback-based method for bridgeless mode (similar to packager status). In this diff, I'm adding a protected method that uses a callback, and then calling that from `reloadJSFromServer` with a callback that calls the delegate, to preserve existing behavior. Changelog: [Internal] Reviewed By: mdvacca Differential Revision: D19871102 fbshipit-source-id: 2dbb6b91c5b927df86c3db42aa11e080d57ea78e --- .../devsupport/DevSupportManagerBase.java | 32 +++++++++++++------ 1 file changed, 23 insertions(+), 9 deletions(-) diff --git a/ReactAndroid/src/main/java/com/facebook/react/devsupport/DevSupportManagerBase.java b/ReactAndroid/src/main/java/com/facebook/react/devsupport/DevSupportManagerBase.java index 99e181b330f..c29483bae32 100644 --- a/ReactAndroid/src/main/java/com/facebook/react/devsupport/DevSupportManagerBase.java +++ b/ReactAndroid/src/main/java/com/facebook/react/devsupport/DevSupportManagerBase.java @@ -1012,6 +1012,27 @@ public abstract class DevSupportManagerBase } public void reloadJSFromServer(final String bundleURL) { + reloadJSFromServer( + bundleURL, + new BundleLoadCallback() { + @Override + public void onSuccess() { + UiThreadUtil.runOnUiThread( + new Runnable() { + @Override + public void run() { + mReactInstanceManagerHelper.onJSBundleLoadedFromServer(); + } + }); + } + }); + } + + protected interface BundleLoadCallback { + void onSuccess(); + } + + protected void reloadJSFromServer(final String bundleURL, final BundleLoadCallback callback) { ReactMarker.logMarker(ReactMarkerConstants.DOWNLOAD_START); mDevLoadingViewController.showForUrl(bundleURL); @@ -1032,15 +1053,8 @@ public abstract class DevSupportManagerBase if (mBundleDownloadListener != null) { mBundleDownloadListener.onSuccess(); } - UiThreadUtil.runOnUiThread( - new Runnable() { - @Override - public void run() { - ReactMarker.logMarker( - ReactMarkerConstants.DOWNLOAD_END, bundleInfo.toJSONString()); - mReactInstanceManagerHelper.onJSBundleLoadedFromServer(); - } - }); + ReactMarker.logMarker(ReactMarkerConstants.DOWNLOAD_END, bundleInfo.toJSONString()); + callback.onSuccess(); } @Override