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