From 637f1931204bed7cd8bda5b94077de6ff672256c Mon Sep 17 00:00:00 2001 From: tom79 Date: Mon, 28 Oct 2019 12:55:19 +0100 Subject: Fix card view --- .../fedilab/android/drawers/StatusListAdapter.java | 163 ++++++++++----------- 1 file changed, 78 insertions(+), 85 deletions(-) diff --git a/app/src/main/java/app/fedilab/android/drawers/StatusListAdapter.java b/app/src/main/java/app/fedilab/android/drawers/StatusListAdapter.java index d035af3e4..0c00bcbcb 100644 --- a/app/src/main/java/app/fedilab/android/drawers/StatusListAdapter.java +++ b/app/src/main/java/app/fedilab/android/drawers/StatusListAdapter.java @@ -2540,103 +2540,96 @@ public class StatusListAdapter extends RecyclerView.Adapter implements OnPostAct dialog.show(); }); - if ((type == RetrieveFeedsAsyncTask.Type.CONTEXT && viewHolder.getAdapterPosition() == conversationPosition) || display_card || display_video_preview) { - if (type == RetrieveFeedsAsyncTask.Type.CONTEXT & viewHolder.getAdapterPosition() == conversationPosition) - holder.status_cardview_content.setVisibility(View.VISIBLE); - else - holder.status_cardview_content.setVisibility(View.GONE); - - if (viewHolder.getAdapterPosition() == conversationPosition || display_card || display_video_preview) { - Card card = status.getReblog() != null ? status.getReblog().getCard() : status.getCard(); - if (card != null) { - holder.status_cardview_content.setText(card.getDescription()); - holder.status_cardview_title.setText(card.getTitle()); - holder.status_cardview_url.setText(card.getUrl()); - if (card.getImage() != null && card.getImage().length() > 10) { - holder.status_cardview_image.setVisibility(View.VISIBLE); - if (!((Activity) context).isFinishing()) - Glide.with(holder.status_cardview_image.getContext()) - .load(card.getImage()) - .apply(new RequestOptions().transforms(new CenterCrop(), new RoundedCorners((int) Helper.convertDpToPixel(3, context)))) - .into(holder.status_cardview_image); - } else - holder.status_cardview_image.setVisibility(View.GONE); - if (!card.getType().toLowerCase().equals("video") && (display_card || viewHolder.getAdapterPosition() == conversationPosition)) { - holder.status_cardview.setVisibility(View.VISIBLE); - holder.status_cardview_video.setVisibility(View.GONE); - holder.status_cardview.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View view) { - String url = card.getUrl(); - boolean nitter = sharedpreferences.getBoolean(Helper.SET_NITTER, false); - if (nitter) { - Matcher matcher = Helper.nitterPattern.matcher(url); - while (matcher.find()) { - final String nitter_directory = matcher.group(2); - String nitterHost = sharedpreferences.getString(Helper.SET_NITTER_HOST, Helper.DEFAULT_NITTER_HOST).toLowerCase(); - url = url.replaceAll("https://"+Pattern.quote(matcher.group()), Matcher.quoteReplacement("https://"+nitterHost + nitter_directory)); - } - } - Helper.openBrowser(context, url); - } - }); - } else if (card.getType().toLowerCase().equals("video") && (display_video_preview || viewHolder.getAdapterPosition() == conversationPosition)) { + holder.status_cardview_content.setVisibility(View.VISIBLE); + + Card card = status.getReblog() != null ? status.getReblog().getCard() : status.getCard(); + if (card != null) { + holder.status_cardview_content.setText(card.getDescription()); + holder.status_cardview_title.setText(card.getTitle()); + holder.status_cardview_url.setText(card.getUrl()); + if (card.getImage() != null && card.getImage().length() > 10) { + holder.status_cardview_image.setVisibility(View.VISIBLE); + if (!((Activity) context).isFinishing()) Glide.with(holder.status_cardview_image.getContext()) .load(card.getImage()) - .apply(new RequestOptions().transforms(new CenterCrop(), new RoundedCorners(10))) - .into(holder.webview_preview_card); - holder.status_cardview.setVisibility(View.GONE); - holder.status_cardview_video.setVisibility(View.VISIBLE); - holder.status_cardview_webview.getSettings().setJavaScriptEnabled(true); - String html = card.getHtml(); - String src = card.getUrl(); - if (html != null) { - Matcher matcher = Pattern.compile("src=\"([^\"]+)\"").matcher(html); - if (matcher.find()) - src = matcher.group(1); - } - final String finalSrc = src; - holder.status_cardview_webview.setWebViewClient(new WebViewClient() { - @Override - public void onReceivedError(WebView view, int errorCode, String description, String failingUrl) { - holder.status_cardview_video.setVisibility(View.GONE); + .apply(new RequestOptions().transforms(new CenterCrop(), new RoundedCorners((int) Helper.convertDpToPixel(3, context)))) + .into(holder.status_cardview_image); + } else + holder.status_cardview_image.setVisibility(View.GONE); + if (!card.getType().toLowerCase().equals("video") && (display_card || (type == RetrieveFeedsAsyncTask.Type.CONTEXT && viewHolder.getAdapterPosition() == conversationPosition))) { + holder.status_cardview.setVisibility(View.VISIBLE); + holder.status_cardview_video.setVisibility(View.GONE); + holder.status_cardview.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View view) { + String url = card.getUrl(); + boolean nitter = sharedpreferences.getBoolean(Helper.SET_NITTER, false); + if (nitter) { + Matcher matcher = Helper.nitterPattern.matcher(url); + while (matcher.find()) { + final String nitter_directory = matcher.group(2); + String nitterHost = sharedpreferences.getString(Helper.SET_NITTER_HOST, Helper.DEFAULT_NITTER_HOST).toLowerCase(); + url = url.replaceAll("https://"+Pattern.quote(matcher.group()), Matcher.quoteReplacement("https://"+nitterHost + nitter_directory)); + } } - }); - holder.webview_preview.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - String url = finalSrc; - if (url != null) { - boolean invidious = sharedpreferences.getBoolean(Helper.SET_INVIDIOUS, false); - if (invidious) { - Matcher matcher = Helper.youtubePattern.matcher(url); - while (matcher.find()) { - final String youtubeId = matcher.group(3); - String invidiousHost = sharedpreferences.getString(Helper.SET_INVIDIOUS_HOST, Helper.DEFAULT_INVIDIOUS_HOST).toLowerCase(); - if( matcher.group(2) != null && matcher.group(2).equals("youtu.be")){ - url = url.replaceAll("https://"+Pattern.quote(matcher.group()), Matcher.quoteReplacement("https://"+invidiousHost + "/watch?v="+youtubeId+"&local=true")); - }else{ - url = url.replaceAll("https://"+Pattern.quote(matcher.group()), Matcher.quoteReplacement("https://"+invidiousHost + "/"+youtubeId+"&local=true")); - } + Helper.openBrowser(context, url); + } + }); + } else if (card.getType().toLowerCase().equals("video") && (display_video_preview || (type == RetrieveFeedsAsyncTask.Type.CONTEXT && viewHolder.getAdapterPosition() == conversationPosition))) { + Glide.with(holder.status_cardview_image.getContext()) + .load(card.getImage()) + .apply(new RequestOptions().transforms(new CenterCrop(), new RoundedCorners(10))) + .into(holder.webview_preview_card); + holder.status_cardview.setVisibility(View.GONE); + holder.status_cardview_video.setVisibility(View.VISIBLE); + holder.status_cardview_webview.getSettings().setJavaScriptEnabled(true); + String html = card.getHtml(); + String src = card.getUrl(); + if (html != null) { + Matcher matcher = Pattern.compile("src=\"([^\"]+)\"").matcher(html); + if (matcher.find()) + src = matcher.group(1); + } + final String finalSrc = src; + holder.status_cardview_webview.setWebViewClient(new WebViewClient() { + @Override + public void onReceivedError(WebView view, int errorCode, String description, String failingUrl) { + holder.status_cardview_video.setVisibility(View.GONE); + } + }); + holder.webview_preview.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + String url = finalSrc; + if (url != null) { + boolean invidious = sharedpreferences.getBoolean(Helper.SET_INVIDIOUS, false); + if (invidious) { + Matcher matcher = Helper.youtubePattern.matcher(url); + while (matcher.find()) { + final String youtubeId = matcher.group(3); + String invidiousHost = sharedpreferences.getString(Helper.SET_INVIDIOUS_HOST, Helper.DEFAULT_INVIDIOUS_HOST).toLowerCase(); + if( matcher.group(2) != null && matcher.group(2).equals("youtu.be")){ + url = url.replaceAll("https://"+Pattern.quote(matcher.group()), Matcher.quoteReplacement("https://"+invidiousHost + "/watch?v="+youtubeId+"&local=true")); + }else{ + url = url.replaceAll("https://"+Pattern.quote(matcher.group()), Matcher.quoteReplacement("https://"+invidiousHost + "/"+youtubeId+"&local=true")); } } } - if( status.getReblog() == null) { - status.setWebviewURL(url); - }else{ - status.getReblog().setWebviewURL(url); - } - notifyStatusChanged(status); } - }); - } - } else { + if( status.getReblog() == null) { + status.setWebviewURL(url); + }else{ + status.getReblog().setWebviewURL(url); + } + notifyStatusChanged(status); + } + }); + }else{ holder.status_cardview.setVisibility(View.GONE); holder.status_cardview_video.setVisibility(View.GONE); } - } else { holder.status_cardview.setVisibility(View.GONE); holder.status_cardview_video.setVisibility(View.GONE); -- cgit v1.2.3