From 3468af54ce1915a54f6e6051a7bdea66a3d41133 Mon Sep 17 00:00:00 2001 From: Mehdi Mulani Date: Fri, 5 Jul 2019 08:36:30 -0700 Subject: [PATCH] Android support for changing bundle location Summary: With this, you can load the bundle from another server on the fly. This makes it much easier to hit a named server. Reviewed By: makovkastar Differential Revision: D16076020 fbshipit-source-id: 46d78ccd55b9b11481628f4585030494f9282003 --- .../devsupport/DevSupportManagerImpl.java | 36 +++++++++++++++++++ .../PackagerConnectionSettings.java | 4 +++ .../main/res/devsupport/values/strings.xml | 1 + 3 files changed, 41 insertions(+) diff --git a/ReactAndroid/src/main/java/com/facebook/react/devsupport/DevSupportManagerImpl.java b/ReactAndroid/src/main/java/com/facebook/react/devsupport/DevSupportManagerImpl.java index 4ac47639b70..9d101741a48 100644 --- a/ReactAndroid/src/main/java/com/facebook/react/devsupport/DevSupportManagerImpl.java +++ b/ReactAndroid/src/main/java/com/facebook/react/devsupport/DevSupportManagerImpl.java @@ -18,6 +18,7 @@ import android.content.pm.PackageInfo; import android.content.pm.PackageManager; import android.hardware.SensorManager; import android.util.Pair; +import android.widget.EditText; import android.widget.Toast; import androidx.annotation.Nullable; import com.facebook.common.logging.FLog; @@ -457,6 +458,41 @@ public class DevSupportManagerImpl } }); } + options.put( + mApplicationContext.getString(R.string.catalyst_change_bundle_location), + new DevOptionHandler() { + @Override + public void onOptionSelected() { + Activity context = mReactInstanceManagerHelper.getCurrentActivity(); + if (context == null || context.isFinishing()) { + FLog.e( + ReactConstants.TAG, + "Unable to launch change bundle location because react activity is not available"); + return; + } + + final EditText input = new EditText(context); + input.setHint("localhost:8081"); + + AlertDialog bundleLocationDialog = + new AlertDialog.Builder(context) + .setTitle( + mApplicationContext.getString(R.string.catalyst_change_bundle_location)) + .setView(input) + .setPositiveButton( + android.R.string.ok, + new DialogInterface.OnClickListener() { + @Override + public void onClick(DialogInterface dialog, int which) { + String host = input.getText().toString(); + mDevSettings.getPackagerConnectionSettings().setDebugServerHost(host); + handleReloadJS(); + } + }) + .create(); + bundleLocationDialog.show(); + } + }); options.put( // NOTE: `isElementInspectorEnabled` is not guaranteed to be accurate. mApplicationContext.getString(R.string.catalyst_inspector), diff --git a/ReactAndroid/src/main/java/com/facebook/react/packagerconnection/PackagerConnectionSettings.java b/ReactAndroid/src/main/java/com/facebook/react/packagerconnection/PackagerConnectionSettings.java index c0e65e373d8..6e0c81f6819 100644 --- a/ReactAndroid/src/main/java/com/facebook/react/packagerconnection/PackagerConnectionSettings.java +++ b/ReactAndroid/src/main/java/com/facebook/react/packagerconnection/PackagerConnectionSettings.java @@ -52,6 +52,10 @@ public class PackagerConnectionSettings { return host; } + public void setDebugServerHost(String host) { + mPreferences.edit().putString(PREFS_DEBUG_SERVER_HOST_KEY, host).apply(); + } + public String getInspectorServerHost() { return AndroidInfoHelpers.getInspectorProxyHost(mAppContext); } diff --git a/ReactAndroid/src/main/res/devsupport/values/strings.xml b/ReactAndroid/src/main/res/devsupport/values/strings.xml index 8aa02b7c5c1..750b8acffed 100644 --- a/ReactAndroid/src/main/res/devsupport/values/strings.xml +++ b/ReactAndroid/src/main/res/devsupport/values/strings.xml @@ -2,6 +2,7 @@ Reload Failed to load bundle. Try restarting the bundler or reconnecting your device. + Change Bundle Location Debug Stop Debugging Connecting to debugger...