Merge pull request #1102 from kekkyojin/fix-markdown-rendering

Use Base64 to encode html when rendering Markdown files
This commit is contained in:
Akinwale Ariwodola 2021-01-12 08:33:40 +01:00 committed by GitHub
commit 74f08f8f98
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23

View file

@ -15,6 +15,7 @@ import android.os.Bundle;
import android.text.Editable;
import android.text.TextWatcher;
import android.text.format.DateUtils;
import android.util.Base64;
import android.view.ContextMenu;
import android.view.LayoutInflater;
import android.view.MenuItem;
@ -92,8 +93,6 @@ import java.util.Map;
import java.util.concurrent.Executors;
import java.util.concurrent.ScheduledExecutorService;
import java.util.concurrent.TimeUnit;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import io.lbry.browser.MainActivity;
import io.lbry.browser.R;
@ -2140,19 +2139,9 @@ public class FileViewFragment extends BaseFragment implements
ReadTextFileTask task = new ReadTextFileTask(filePath, new ReadTextFileTask.ReadTextFileHandler() {
@Override
public void onSuccess(String text) {
String html = buildMarkdownHtml(text);
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");
String html = buildMarkdownHtml(text);
webView.loadData(Base64.encodeToString(html.getBytes(), Base64.NO_PADDING), "text/html", "base64");
}
}