From 93f6337e6ac8d95bf96a0b343a83d68442cd2153 Mon Sep 17 00:00:00 2001 From: woodser Date: Sat, 5 Jul 2025 10:56:02 -0400 Subject: [PATCH] fix opening matrix.to link under support button by escaping --- .../main/java/haveno/desktop/util/GUIUtil.java | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) diff --git a/desktop/src/main/java/haveno/desktop/util/GUIUtil.java b/desktop/src/main/java/haveno/desktop/util/GUIUtil.java index 4aad28f464..2193cec831 100644 --- a/desktop/src/main/java/haveno/desktop/util/GUIUtil.java +++ b/desktop/src/main/java/haveno/desktop/util/GUIUtil.java @@ -124,6 +124,8 @@ import java.io.OutputStreamWriter; import java.math.BigInteger; import java.net.URI; import java.net.URISyntaxException; +import java.net.URLEncoder; +import java.nio.charset.StandardCharsets; import java.nio.file.Paths; import java.util.ArrayList; import java.util.HashMap; @@ -721,13 +723,26 @@ public class GUIUtil { private static void doOpenWebPage(String target) { try { - Utilities.openURI(new URI(target)); + Utilities.openURI(safeParse(target)); } catch (Exception e) { e.printStackTrace(); log.error(e.getMessage()); } } + private static URI safeParse(String url) throws URISyntaxException { + int hashIndex = url.indexOf('#'); + + if (hashIndex >= 0 && hashIndex < url.length() - 1) { + String base = url.substring(0, hashIndex); + String fragment = url.substring(hashIndex + 1); + String encodedFragment = URLEncoder.encode(fragment, StandardCharsets.UTF_8); + return new URI(base + "#" + encodedFragment); + } + + return new URI(url); // no fragment + } + public static String getPercentageOfTradeAmount(BigInteger fee, BigInteger tradeAmount) { String result = " (" + getPercentage(fee, tradeAmount) + " " + Res.get("guiUtil.ofTradeAmount") + ")";