From c38c280dab48126b6dbb30d8fc04ee8808c73f2f Mon Sep 17 00:00:00 2001 From: LoveSy Date: Thu, 24 Jun 2021 20:54:17 +0800 Subject: [PATCH] [app] Use `ReadmeHTML` (#772) --- .../manager/repo/model/OnlineModule.java | 14 +++++++ .../manager/ui/fragment/RepoItemFragment.java | 38 +++---------------- app/src/main/res/layout/item_repo_readme.xml | 10 ----- app/src/main/res/layout/item_repo_release.xml | 10 ----- 4 files changed, 19 insertions(+), 53 deletions(-) diff --git a/app/src/main/java/org/lsposed/manager/repo/model/OnlineModule.java b/app/src/main/java/org/lsposed/manager/repo/model/OnlineModule.java index 8bb66f41..77df5ecb 100644 --- a/app/src/main/java/org/lsposed/manager/repo/model/OnlineModule.java +++ b/app/src/main/java/org/lsposed/manager/repo/model/OnlineModule.java @@ -53,6 +53,9 @@ public class OnlineModule implements Serializable, Parcelable { @SerializedName("readme") @Expose private String readme; + @SerializedName("readmeHTML") + @Expose + private String readmeHTML; @SerializedName("summary") @Expose private String summary; @@ -107,6 +110,7 @@ public class OnlineModule implements Serializable, Parcelable { this.updatedAt = ((String) in.readValue((String.class.getClassLoader()))); this.createdAt = ((String) in.readValue((String.class.getClassLoader()))); this.stargazerCount = ((Integer) in.readValue((Integer.class.getClassLoader()))); + this.readmeHTML = ((String) in.readValue((String.class.getClassLoader()))); } public OnlineModule() { @@ -168,6 +172,15 @@ public class OnlineModule implements Serializable, Parcelable { this.readme = readme; } + public String getReadmeHTML() { + return readmeHTML; + } + + public void setReadmeHTML(String readmeHTML) { + this.readmeHTML = readmeHTML; + } + + public String getSummary() { return summary; } @@ -248,6 +261,7 @@ public class OnlineModule implements Serializable, Parcelable { dest.writeValue(updatedAt); dest.writeValue(createdAt); dest.writeValue(stargazerCount); + dest.writeValue(readmeHTML); } public int describeContents() { diff --git a/app/src/main/java/org/lsposed/manager/ui/fragment/RepoItemFragment.java b/app/src/main/java/org/lsposed/manager/ui/fragment/RepoItemFragment.java index 348704c4..6e7c4789 100644 --- a/app/src/main/java/org/lsposed/manager/ui/fragment/RepoItemFragment.java +++ b/app/src/main/java/org/lsposed/manager/ui/fragment/RepoItemFragment.java @@ -35,7 +35,6 @@ import android.webkit.WebResourceRequest; import android.webkit.WebSettings; import android.webkit.WebView; import android.webkit.WebViewClient; -import android.widget.ProgressBar; import android.widget.TextView; import androidx.annotation.NonNull; @@ -71,7 +70,6 @@ import org.lsposed.manager.util.LinearLayoutManagerFix; import org.lsposed.manager.util.NavUtil; import org.lsposed.manager.util.chrome.CustomTabsURLSpan; -import java.nio.charset.StandardCharsets; import java.util.ArrayList; import java.util.List; import java.util.ListIterator; @@ -126,7 +124,7 @@ public class RepoItemFragment extends BaseFragment implements RepoLoader.Listene } - private void renderGithubMarkdown(WebView view, String text, ProgressBar progressBar) { + private void renderGithubMarkdown(WebView view, String text) { try { var json = new JSONObject(); json.put("text", text); @@ -149,36 +147,15 @@ public class RepoItemFragment extends BaseFragment implements RepoLoader.Listene } setting.setCacheMode(WebSettings.LOAD_CACHE_ELSE_NETWORK); view.setWebViewClient(new WebViewClient() { - @Override - public void onPageFinished(WebView view, String url) { - if (progressBar != null) - progressBar.setVisibility(ProgressBar.GONE); - super.onPageFinished(view, url); - } - @Override public boolean shouldOverrideUrlLoading(WebView view, WebResourceRequest request) { - if (request.getUrl().toString().equals("https://api.github.com/markdown")) return false; Intent i = new Intent(Intent.ACTION_VIEW, request.getUrl()); startActivity(i); return true; } }); - - // wrapper for https://api.github.com/markdown - /* - async function handleRequest(request) { - let response = await fetch("https://api.github.com/markdown", request); - if (!response.ok) return response; - response = new Response(`${await response.text()}`, response); - response.headers.set( - "Content-Security-Policy", - "img-src *;" - ) - return response; - } - */ - view.postUrl("https://render.lsposed.workers.dev/", json.toString().getBytes(StandardCharsets.UTF_8)); + view.loadDataWithBaseURL(null, "" + text + "", + "text/html; charset=utf-8", "utf-8", null); } catch (Throwable e) { android.util.Log.e(App.TAG, "render readme", e); } @@ -350,8 +327,7 @@ public class RepoItemFragment extends BaseFragment implements RepoLoader.Listene } else { Release release = items.get(position); holder.title.setText(release.getName()); - holder.progress.show(); - renderGithubMarkdown(holder.description, release.getDescription(), holder.progress); + renderGithubMarkdown(holder.description, release.getDescriptionHTML()); holder.openInBrowser.setOnClickListener(v -> NavUtil.startURL(requireActivity(), release.getUrl())); List assets = release.getReleaseAssets(); if (assets != null && !assets.isEmpty()) { @@ -397,7 +373,6 @@ public class RepoItemFragment extends BaseFragment implements RepoLoader.Listene description = binding.description; openInBrowser = binding.openInBrowser; viewAssets = binding.viewAssets; - progress = binding.progress; } } @@ -428,9 +403,8 @@ public class RepoItemFragment extends BaseFragment implements RepoLoader.Listene case 0: holder.scrollView.getBorderViewDelegate().setBorderVisibilityChangedListener((top, oldTop, bottom, oldBottom) -> binding.appBar.setRaised(!top)); holder.scrollView.setTag(position); - holder.progress.show(); if (module != null) - renderGithubMarkdown(holder.webView, module.getReadme(), holder.progress); + renderGithubMarkdown(holder.webView, module.getReadmeHTML()); break; case 1: case 2: @@ -465,7 +439,6 @@ public class RepoItemFragment extends BaseFragment implements RepoLoader.Listene WebView webView; BorderNestedScrollView scrollView; BorderRecyclerView recyclerView; - CircularProgressIndicator progress; public ViewHolder(@NonNull View itemView) { super(itemView); @@ -477,7 +450,6 @@ public class RepoItemFragment extends BaseFragment implements RepoLoader.Listene super(binding.getRoot()); webView = binding.readme; scrollView = binding.scrollView; - progress = binding.progress; } } diff --git a/app/src/main/res/layout/item_repo_readme.xml b/app/src/main/res/layout/item_repo_readme.xml index 94a4b2f6..e05b8651 100644 --- a/app/src/main/res/layout/item_repo_readme.xml +++ b/app/src/main/res/layout/item_repo_readme.xml @@ -27,16 +27,6 @@ android:paddingTop="104dp" app:fitsSystemWindowsInsets="top|bottom"> - - - -