Skip to content

Commit

Permalink
Browse files Browse the repository at this point in the history
  • Loading branch information
KaustubhPatange committed Dec 26, 2020
1 parent fb7053d commit f7e0857
Show file tree
Hide file tree
Showing 2 changed files with 58 additions and 20 deletions.
Original file line number Diff line number Diff line change
@@ -1,13 +1,15 @@
package com.fastaccess.provider.markdown;

import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import android.net.Uri;
import android.text.Html;
import android.view.ViewTreeObserver;
import android.webkit.MimeTypeMap;
import android.widget.EditText;
import android.widget.TextView;

import androidx.annotation.NonNull;
import androidx.annotation.Nullable;

import com.annimon.stream.IntStream;
import com.fastaccess.helper.InputHelper;
import com.fastaccess.helper.Logger;
Expand Down Expand Up @@ -45,7 +47,8 @@ public class MarkDownProvider {
".dmg", ".pdf", ".ico", ".docx", ".doc", ".xlsx", ".hwp", ".pptx", ".show", ".mp3", ".ogg", ".ipynb"
};

private MarkDownProvider() {}
private MarkDownProvider() {
}

public static void setMdText(@NonNull TextView textView, String markdown) {
if (!InputHelper.isEmpty(markdown)) {
Expand All @@ -54,7 +57,8 @@ public static void setMdText(@NonNull TextView textView, String markdown) {
render(textView, markdown, width);
} else {
textView.getViewTreeObserver().addOnPreDrawListener(new ViewTreeObserver.OnPreDrawListener() {
@Override public boolean onPreDraw() {
@Override
public boolean onPreDraw() {
textView.getViewTreeObserver().removeOnPreDrawListener(this);
render(textView, markdown, textView.getMeasuredWidth());
return true;
Expand Down Expand Up @@ -103,7 +107,8 @@ public static void stripMdText(@NonNull TextView textView, String markdown) {
}
}

@NonNull public static String stripMdText(String markdown) {
@NonNull
public static String stripMdText(String markdown) {
if (!InputHelper.isEmpty(markdown)) {
Parser parser = Parser.builder().build();
Node node = parser.parse(markdown);
Expand Down Expand Up @@ -292,7 +297,8 @@ public static boolean isImage(@Nullable String name) {
name = name.toLowerCase();
for (String value : IMAGE_EXTENSIONS) {
String extension = MimeTypeMap.getFileExtensionFromUrl(name);
if ((extension != null && value.replace(".", "").equals(extension)) || name.endsWith(value)) return true;
if ((extension != null && value.replace(".", "").equals(extension)) || name.endsWith(value))
return true;
}
return false;
}
Expand All @@ -314,7 +320,8 @@ public static boolean isArchive(@Nullable String name) {
name = name.toLowerCase();
for (String value : ARCHIVE_EXTENSIONS) {
String extension = MimeTypeMap.getFileExtensionFromUrl(name);
if ((extension != null && value.replace(".", "").equals(extension)) || name.endsWith(value)) return true;
if ((extension != null && value.replace(".", "").equals(extension)) || name.endsWith(value))
return true;
}

return false;
Expand All @@ -336,4 +343,13 @@ public static void insertAtCursor(@NonNull EditText editText, @NonNull String te
editText.setSelection(index + text.length());
}
}

public static boolean isGithubBlobImage(@NonNull Uri uri) {
return uri.getAuthority().equals("github.com");
}

public static String minifyGithubImageUri(@NonNull Uri uri) {
return uri.buildUpon().authority("raw.githubusercontent.com")
.build().toString().replace("/blob/", "/");
}
}
48 changes: 35 additions & 13 deletions app/src/main/java/com/prettifier/pretty/PrettifyWebView.java
Original file line number Diff line number Diff line change
Expand Up @@ -5,8 +5,6 @@
import android.content.res.TypedArray;
import android.net.Uri;
import android.os.Build;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import android.util.AttributeSet;
import android.view.MotionEvent;
import android.view.View;
Expand All @@ -16,6 +14,9 @@
import android.webkit.WebView;
import android.webkit.WebViewClient;

import androidx.annotation.NonNull;
import androidx.annotation.Nullable;

import com.fastaccess.R;
import com.fastaccess.helper.AppHelper;
import com.fastaccess.helper.InputHelper;
Expand Down Expand Up @@ -56,18 +57,22 @@ public PrettifyWebView(Context context, AttributeSet attrs, int defStyleAttr) {
initView(attrs);
}

@Override public boolean onInterceptTouchEvent(MotionEvent p) {
@Override
public boolean onInterceptTouchEvent(MotionEvent p) {
return true;
}

@SuppressLint("ClickableViewAccessibility") @Override public boolean onTouchEvent(MotionEvent event) {
@SuppressLint("ClickableViewAccessibility")
@Override
public boolean onTouchEvent(MotionEvent event) {
if (getParent() != null) {
getParent().requestDisallowInterceptTouchEvent(interceptTouch);
}
return super.onTouchEvent(event);
}

@SuppressLint("SetJavaScriptEnabled") private void initView(@Nullable AttributeSet attrs) {
@SuppressLint("SetJavaScriptEnabled")
private void initView(@Nullable AttributeSet attrs) {
if (isInEditMode()) return;
if (attrs != null) {
TypedArray tp = getContext().obtainStyledAttributes(attrs, R.styleable.PrettifyWebView);
Expand Down Expand Up @@ -102,14 +107,16 @@ public PrettifyWebView(Context context, AttributeSet attrs, int defStyleAttr) {
});
}

@Override protected void onScrollChanged(int l, int t, int oldl, int oldt) {
@Override
protected void onScrollChanged(int l, int t, int oldl, int oldt) {
super.onScrollChanged(l, t, oldl, oldt);
if (onContentChangedListener != null) {
onContentChangedListener.onScrollChanged(t == 0, t);
}
}

@Override protected void onDetachedFromWindow() {
@Override
protected void onDetachedFromWindow() {
onContentChangedListener = null;
super.onDetachedFromWindow();
}
Expand Down Expand Up @@ -171,7 +178,8 @@ public static String[] getLineNo(@Nullable String url) {
if (lineNumber != null) {
lineNo = lineNumber.replaceAll("L", "").split("-");
}
} catch (Exception ignored) {}
} catch (Exception ignored) {
}
}
return lineNo;
}
Expand All @@ -195,7 +203,8 @@ public void setWikiContent(@NonNull String source, @Nullable String baseUrl) {
}

public void setGithubContent(@NonNull String source, @Nullable String baseUrl, boolean toggleNestScrolling, boolean enableBridge) {
if (enableBridge) addJavascriptInterface(new MarkDownInterceptorInterface(this, toggleNestScrolling), "Android");
if (enableBridge)
addJavascriptInterface(new MarkDownInterceptorInterface(this, toggleNestScrolling), "Android");
String page = GithubHelper.generateContent(getContext(), source, baseUrl, AppHelper.isNightMode(getResources()),
AppHelper.isNightMode(getResources()), false);
post(() -> loadDataWithBaseURL("file:///android_asset/md/", page, "text/html", "utf-8", null));
Expand Down Expand Up @@ -233,7 +242,12 @@ public void setEnableNestedScrolling(boolean enableNestedScrolling) {
private void startActivity(@Nullable Uri url) {
if (url == null) return;
if (MarkDownProvider.isImage(url.toString())) {
CodeViewerActivity.startActivity(getContext(), url.toString(), url.toString());
if (MarkDownProvider.isGithubBlobImage(url)) {
String minifiedUrl = MarkDownProvider.minifyGithubImageUri(url);
launchCodeViewerActivity(minifiedUrl);
} else {
launchCodeViewerActivity(url.toString());
}
} else {
String lastSegment = url.getEncodedFragment();
if (lastSegment != null || url.toString().startsWith("#") || url.toString().indexOf('#') != -1) {
Expand All @@ -243,8 +257,13 @@ private void startActivity(@Nullable Uri url) {
}
}

private void launchCodeViewerActivity(String url) {
CodeViewerActivity.startActivity(getContext(), url, url);
}

private class ChromeClient extends WebChromeClient {
@Override public void onProgressChanged(WebView view, int progress) {
@Override
public void onProgressChanged(WebView view, int progress) {
super.onProgressChanged(view, progress);
if (onContentChangedListener != null) {
onContentChangedListener.onContentChanged(progress);
Expand All @@ -253,14 +272,17 @@ private class ChromeClient extends WebChromeClient {
}

private class WebClient extends WebViewClient {
@Override public boolean shouldOverrideUrlLoading(WebView view, WebResourceRequest request) {
@Override
public boolean shouldOverrideUrlLoading(WebView view, WebResourceRequest request) {
startActivity(request.getUrl());
return true;
}
}

private class WebClientCompat extends WebViewClient {
@SuppressWarnings("deprecation") @Override public boolean shouldOverrideUrlLoading(WebView view, String url) {
@SuppressWarnings("deprecation")
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
startActivity(Uri.parse(url));
return true;
}
Expand Down

0 comments on commit f7e0857

Please sign in to comment.