Use '%23' instead of '#' when rendering #hashtag style text from markdown

This commit is contained in:
Javi Rueda 2020-10-15 01:49:53 +02:00
parent 1877b75188
commit cfca8facbe

View file

@ -92,6 +92,8 @@ import java.util.Map;
import java.util.concurrent.Executors; import java.util.concurrent.Executors;
import java.util.concurrent.ScheduledExecutorService; import java.util.concurrent.ScheduledExecutorService;
import java.util.concurrent.TimeUnit; import java.util.concurrent.TimeUnit;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import io.lbry.browser.MainActivity; import io.lbry.browser.MainActivity;
import io.lbry.browser.R; import io.lbry.browser.R;
@ -2072,7 +2074,17 @@ public class FileViewFragment extends BaseFragment implements
@Override @Override
public void onSuccess(String text) { public void onSuccess(String text) {
String html = buildMarkdownHtml(text); String html = buildMarkdownHtml(text);
if (webView != null) { if (webView != null) {
// Due to a change to Chrome, WebView only displays '#' -and everything after it-
// if it is '%23' instead. Problem appears in text like '#2' or #hashtags.
Pattern pattern = Pattern.compile("#(\\S+)");
Matcher matcher = pattern.matcher(html);
if (matcher.find()) {
html = html.replaceAll(pattern.toString(), "&%2335;" + matcher.group(1));
}
webView.loadData(html, "text/html", "utf-8"); webView.loadData(html, "text/html", "utf-8");
} }
} }