From 4beb8f6be0cc08d32c7fa63f16dc6beebf5fcaba Mon Sep 17 00:00:00 2001 From: Kudo Chien Date: Fri, 16 Sep 2022 09:51:53 +0800 Subject: [PATCH 1/4] Fix port as -1 if dev server without specifying port on Android --- .../react/devsupport/DevLoadingViewController.java | 11 +++++------ .../react/devsupport/DevSupportManagerBase.java | 13 ++++++------- 2 files changed, 11 insertions(+), 13 deletions(-) diff --git a/ReactAndroid/src/main/java/com/facebook/react/devsupport/DevLoadingViewController.java b/ReactAndroid/src/main/java/com/facebook/react/devsupport/DevLoadingViewController.java index db8ef299fc67..daea825bd2ab 100644 --- a/ReactAndroid/src/main/java/com/facebook/react/devsupport/DevLoadingViewController.java +++ b/ReactAndroid/src/main/java/com/facebook/react/devsupport/DevLoadingViewController.java @@ -22,9 +22,8 @@ import com.facebook.react.R; import com.facebook.react.bridge.UiThreadUtil; import com.facebook.react.common.ReactConstants; -import java.net.MalformedURLException; -import java.net.URL; import java.util.Locale; +import okhttp3.HttpUrl; /** Controller to display loading messages on top of the screen. All methods are thread safe. */ public class DevLoadingViewController { @@ -61,17 +60,17 @@ public void showForUrl(String url) { return; } - URL parsedURL; + HttpUrl parsedURL; try { - parsedURL = new URL(url); - } catch (MalformedURLException e) { + parsedURL = HttpUrl.get(url); + } catch (IllegalArgumentException e) { FLog.e(ReactConstants.TAG, "Bundle url format is invalid. \n\n" + e.toString()); return; } showMessage( context.getString( - R.string.catalyst_loading_from_url, parsedURL.getHost() + ":" + parsedURL.getPort())); + R.string.catalyst_loading_from_url, parsedURL.host() + ":" + parsedURL.port())); } public void showForRemoteJSEnabled() { 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 76977bfb4626..d48baa487f5a 100644 --- a/ReactAndroid/src/main/java/com/facebook/react/devsupport/DevSupportManagerBase.java +++ b/ReactAndroid/src/main/java/com/facebook/react/devsupport/DevSupportManagerBase.java @@ -57,13 +57,12 @@ import com.facebook.react.packagerconnection.RequestHandler; import com.facebook.react.packagerconnection.Responder; import java.io.File; -import java.net.MalformedURLException; -import java.net.URL; import java.util.ArrayList; import java.util.LinkedHashMap; import java.util.List; import java.util.Locale; import java.util.Map; +import okhttp3.HttpUrl; public abstract class DevSupportManagerBase implements DevSupportManager { @@ -700,14 +699,14 @@ private void resetCurrentContext(@Nullable ReactContext reactContext) { if (mCurrentContext != null) { try { - URL sourceUrl = new URL(getSourceUrl()); - String path = sourceUrl.getPath().substring(1); // strip initial slash in path - String host = sourceUrl.getHost(); - int port = sourceUrl.getPort(); + HttpUrl sourceUrl = HttpUrl.get(getSourceUrl()); + String path = sourceUrl.encodedPath().substring(1); // strip initial slash in path + String host = sourceUrl.host(); + int port = sourceUrl.port(); mCurrentContext .getJSModule(HMRClient.class) .setup("android", path, host, port, mDevSettings.isHotModuleReplacementEnabled()); - } catch (MalformedURLException e) { + } catch (IllegalArgumentException e) { showNewJavaError(e.getMessage(), e); } } From 60fad7ee391d0bb33ddda2d7fb91c2c5fbbf4c5b Mon Sep 17 00:00:00 2001 From: Kudo Chien Date: Fri, 16 Sep 2022 15:42:15 +0800 Subject: [PATCH 2/4] Fix another case when react-dev-tools reach to ws://host/:9097 --- Libraries/Core/setUpReactDevTools.js | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/Libraries/Core/setUpReactDevTools.js b/Libraries/Core/setUpReactDevTools.js index 46955da62035..be647e33b4d2 100644 --- a/Libraries/Core/setUpReactDevTools.js +++ b/Libraries/Core/setUpReactDevTools.js @@ -39,7 +39,10 @@ if (__DEV__) { // Get hostname from development server (packager) const devServer = getDevServer(); const host = devServer.bundleLoadedFromServer - ? devServer.url.replace(/https?:\/\//, '').split(':')[0] + ? devServer.url + .replace(/https?:\/\//, '') + .replace(/\/$/, '') + .split(':')[0] : 'localhost'; // Read the optional global variable for backward compatibility. From 9d95963dcc19d953e26043a1565ba541878fa2b6 Mon Sep 17 00:00:00 2001 From: Kudo Chien Date: Thu, 22 Sep 2022 15:30:28 +0800 Subject: [PATCH 3/4] Revert "Fix port as -1 if dev server without specifying port on Android" This reverts commit 4beb8f6be0cc08d32c7fa63f16dc6beebf5fcaba. --- .../react/devsupport/DevLoadingViewController.java | 11 ++++++----- .../react/devsupport/DevSupportManagerBase.java | 13 +++++++------ 2 files changed, 13 insertions(+), 11 deletions(-) diff --git a/ReactAndroid/src/main/java/com/facebook/react/devsupport/DevLoadingViewController.java b/ReactAndroid/src/main/java/com/facebook/react/devsupport/DevLoadingViewController.java index daea825bd2ab..db8ef299fc67 100644 --- a/ReactAndroid/src/main/java/com/facebook/react/devsupport/DevLoadingViewController.java +++ b/ReactAndroid/src/main/java/com/facebook/react/devsupport/DevLoadingViewController.java @@ -22,8 +22,9 @@ import com.facebook.react.R; import com.facebook.react.bridge.UiThreadUtil; import com.facebook.react.common.ReactConstants; +import java.net.MalformedURLException; +import java.net.URL; import java.util.Locale; -import okhttp3.HttpUrl; /** Controller to display loading messages on top of the screen. All methods are thread safe. */ public class DevLoadingViewController { @@ -60,17 +61,17 @@ public void showForUrl(String url) { return; } - HttpUrl parsedURL; + URL parsedURL; try { - parsedURL = HttpUrl.get(url); - } catch (IllegalArgumentException e) { + parsedURL = new URL(url); + } catch (MalformedURLException e) { FLog.e(ReactConstants.TAG, "Bundle url format is invalid. \n\n" + e.toString()); return; } showMessage( context.getString( - R.string.catalyst_loading_from_url, parsedURL.host() + ":" + parsedURL.port())); + R.string.catalyst_loading_from_url, parsedURL.getHost() + ":" + parsedURL.getPort())); } public void showForRemoteJSEnabled() { 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 d48baa487f5a..76977bfb4626 100644 --- a/ReactAndroid/src/main/java/com/facebook/react/devsupport/DevSupportManagerBase.java +++ b/ReactAndroid/src/main/java/com/facebook/react/devsupport/DevSupportManagerBase.java @@ -57,12 +57,13 @@ import com.facebook.react.packagerconnection.RequestHandler; import com.facebook.react.packagerconnection.Responder; import java.io.File; +import java.net.MalformedURLException; +import java.net.URL; import java.util.ArrayList; import java.util.LinkedHashMap; import java.util.List; import java.util.Locale; import java.util.Map; -import okhttp3.HttpUrl; public abstract class DevSupportManagerBase implements DevSupportManager { @@ -699,14 +700,14 @@ private void resetCurrentContext(@Nullable ReactContext reactContext) { if (mCurrentContext != null) { try { - HttpUrl sourceUrl = HttpUrl.get(getSourceUrl()); - String path = sourceUrl.encodedPath().substring(1); // strip initial slash in path - String host = sourceUrl.host(); - int port = sourceUrl.port(); + URL sourceUrl = new URL(getSourceUrl()); + String path = sourceUrl.getPath().substring(1); // strip initial slash in path + String host = sourceUrl.getHost(); + int port = sourceUrl.getPort(); mCurrentContext .getJSModule(HMRClient.class) .setup("android", path, host, port, mDevSettings.isHotModuleReplacementEnabled()); - } catch (IllegalArgumentException e) { + } catch (MalformedURLException e) { showNewJavaError(e.getMessage(), e); } } From 6eb4b3de7aa885054f852e6dc85d17c26b8f5c75 Mon Sep 17 00:00:00 2001 From: Kudo Chien Date: Thu, 22 Sep 2022 15:40:52 +0800 Subject: [PATCH 4/4] another attempt for using java.net.URL.getDefaultPort --- .../facebook/react/devsupport/DevLoadingViewController.java | 4 ++-- .../com/facebook/react/devsupport/DevSupportManagerBase.java | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/ReactAndroid/src/main/java/com/facebook/react/devsupport/DevLoadingViewController.java b/ReactAndroid/src/main/java/com/facebook/react/devsupport/DevLoadingViewController.java index db8ef299fc67..fa1554bda002 100644 --- a/ReactAndroid/src/main/java/com/facebook/react/devsupport/DevLoadingViewController.java +++ b/ReactAndroid/src/main/java/com/facebook/react/devsupport/DevLoadingViewController.java @@ -69,9 +69,9 @@ public void showForUrl(String url) { return; } + int port = parsedURL.getPort() != -1 ? parsedURL.getPort() : parsedURL.getDefaultPort(); showMessage( - context.getString( - R.string.catalyst_loading_from_url, parsedURL.getHost() + ":" + parsedURL.getPort())); + context.getString(R.string.catalyst_loading_from_url, parsedURL.getHost() + ":" + port)); } public void showForRemoteJSEnabled() { 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 76977bfb4626..0141e70c3eb6 100644 --- a/ReactAndroid/src/main/java/com/facebook/react/devsupport/DevSupportManagerBase.java +++ b/ReactAndroid/src/main/java/com/facebook/react/devsupport/DevSupportManagerBase.java @@ -703,7 +703,7 @@ private void resetCurrentContext(@Nullable ReactContext reactContext) { URL sourceUrl = new URL(getSourceUrl()); String path = sourceUrl.getPath().substring(1); // strip initial slash in path String host = sourceUrl.getHost(); - int port = sourceUrl.getPort(); + int port = sourceUrl.getPort() != -1 ? sourceUrl.getPort() : sourceUrl.getDefaultPort(); mCurrentContext .getJSModule(HMRClient.class) .setup("android", path, host, port, mDevSettings.isHotModuleReplacementEnabled());