From 1b1394cf5df5782522c56238c4dc8c3949d0f732 Mon Sep 17 00:00:00 2001 From: topjohnwu Date: Tue, 8 Aug 2017 16:12:49 +0800 Subject: [PATCH] Improve Markdown support Close #259 --- app/build.gradle | 2 +- .../magisk/adapters/ReposAdapter.java | 5 +- .../magisk/asyncs/MarkDownWindow.java | 50 +++++++++++++++++++ .../magisk/components/MarkDownWindow.java | 31 ------------ 4 files changed, 54 insertions(+), 34 deletions(-) create mode 100644 app/src/main/java/com/topjohnwu/magisk/asyncs/MarkDownWindow.java delete mode 100644 app/src/main/java/com/topjohnwu/magisk/components/MarkDownWindow.java diff --git a/app/build.gradle b/app/build.gradle index 7c1c0ed40..396267405 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -53,7 +53,7 @@ dependencies { implementation 'com.android.support:design:26.0.0' implementation 'com.android.support:support-v4:26.0.0' implementation 'com.jakewharton:butterknife:8.7.0' - implementation 'us.feras.mdv:markdownview:1.1.0' + implementation 'com.atlassian.commonmark:commonmark:0.9.0' implementation 'org.bouncycastle:bcprov-jdk15on:1.57' implementation 'org.bouncycastle:bcpkix-jdk15on:1.57' implementation 'com.google.android.gms:play-services-safetynet:9.0.1' diff --git a/app/src/main/java/com/topjohnwu/magisk/adapters/ReposAdapter.java b/app/src/main/java/com/topjohnwu/magisk/adapters/ReposAdapter.java index f47249977..3c61bf65b 100644 --- a/app/src/main/java/com/topjohnwu/magisk/adapters/ReposAdapter.java +++ b/app/src/main/java/com/topjohnwu/magisk/adapters/ReposAdapter.java @@ -15,9 +15,9 @@ import android.widget.LinearLayout; import android.widget.TextView; import com.topjohnwu.magisk.R; +import com.topjohnwu.magisk.asyncs.MarkDownWindow; import com.topjohnwu.magisk.asyncs.ProcessRepoZip; import com.topjohnwu.magisk.components.AlertDialogBuilder; -import com.topjohnwu.magisk.components.MarkDownWindow; import com.topjohnwu.magisk.database.RepoDatabaseHelper; import com.topjohnwu.magisk.module.Module; import com.topjohnwu.magisk.module.Repo; @@ -97,7 +97,8 @@ public class ReposAdapter extends SectionedAdapter new MarkDownWindow(null, repo.getDetailUrl(), context)); + holder.infoLayout.setOnClickListener(v -> + new MarkDownWindow((Activity) context, null, repo.getDetailUrl()).exec()); holder.downloadImage.setOnClickListener(v -> { String filename = repo.getName() + "-" + repo.getVersion() + ".zip"; diff --git a/app/src/main/java/com/topjohnwu/magisk/asyncs/MarkDownWindow.java b/app/src/main/java/com/topjohnwu/magisk/asyncs/MarkDownWindow.java new file mode 100644 index 000000000..5b266a7b9 --- /dev/null +++ b/app/src/main/java/com/topjohnwu/magisk/asyncs/MarkDownWindow.java @@ -0,0 +1,50 @@ +package com.topjohnwu.magisk.asyncs; + +import android.app.Activity; +import android.support.v7.app.AlertDialog; +import android.webkit.WebView; + +import com.topjohnwu.magisk.R; +import com.topjohnwu.magisk.utils.WebService; + +import org.commonmark.node.Node; +import org.commonmark.parser.Parser; +import org.commonmark.renderer.html.HtmlRenderer; + +public class MarkDownWindow extends ParallelTask { + + private String mTitle, mUrl; + + public MarkDownWindow(Activity context, String title, String url) { + super(context); + mTitle = title; + mUrl = url; + } + + @Override + protected String doInBackground(Void... voids) { + String md = WebService.getString(mUrl); + Parser parser = Parser.builder().build(); + HtmlRenderer renderer = HtmlRenderer.builder().build(); + Node doc = parser.parse(md); + return renderer.render(doc); + } + + @Override + protected void onPostExecute(String html) { + AlertDialog.Builder alert = new AlertDialog.Builder(getActivity()); + alert.setTitle(mTitle); + + WebView wv = new WebView(getActivity()); + + html = String.format( + " %s", + getMagiskManager().isDarkTheme ? "dark" : "light", html); + + wv.loadDataWithBaseURL("fake://", html, "text/html", "UTF-8", null); + + alert.setView(wv); + alert.setNegativeButton(R.string.close, (dialog, id) -> dialog.dismiss()); + alert.show(); + } +} diff --git a/app/src/main/java/com/topjohnwu/magisk/components/MarkDownWindow.java b/app/src/main/java/com/topjohnwu/magisk/components/MarkDownWindow.java deleted file mode 100644 index 5690e5e16..000000000 --- a/app/src/main/java/com/topjohnwu/magisk/components/MarkDownWindow.java +++ /dev/null @@ -1,31 +0,0 @@ -package com.topjohnwu.magisk.components; - -import android.content.Context; -import android.support.v7.app.AlertDialog; - -import com.topjohnwu.magisk.MagiskManager; -import com.topjohnwu.magisk.R; -import com.topjohnwu.magisk.utils.Logger; -import com.topjohnwu.magisk.utils.Utils; - -import us.feras.mdv.MarkdownView; - -public class MarkDownWindow { - - public MarkDownWindow(String title, String url, Context context) { - MagiskManager magiskManager = Utils.getMagiskManager(context); - AlertDialog.Builder alert = new AlertDialog.Builder(context); - alert.setTitle(title); - - Logger.dev("WebView: URL = " + url); - - MarkdownView md = new MarkdownView(context); - md.loadMarkdownFile(url, "file:///android_asset/" + - (magiskManager.isDarkTheme ? "dark" : "light") + ".css"); - - alert.setView(md); - alert.setNegativeButton(R.string.close, (dialog, id) -> dialog.dismiss()); - alert.show(); - } - -}