From 9244fe19d18b7e732ccd217eb9527426ac566c11 Mon Sep 17 00:00:00 2001 From: stom79 Date: Wed, 2 Jan 2019 15:22:23 +0100 Subject: [PATCH] Fix issue #683 --- .../activities/ShowAccountActivity.java | 2 - .../drawers/NotificationsListAdapter.java | 3 - .../gouv/etalab/mastodon/helper/Helper.java | 107 +++++++++++++++--- .../layout-sw600dp/activity_show_account.xml | 2 - .../main/res/layout/activity_show_account.xml | 1 - 5 files changed, 89 insertions(+), 26 deletions(-) diff --git a/app/src/main/java/fr/gouv/etalab/mastodon/activities/ShowAccountActivity.java b/app/src/main/java/fr/gouv/etalab/mastodon/activities/ShowAccountActivity.java index 5f15a4647..97aae1b96 100644 --- a/app/src/main/java/fr/gouv/etalab/mastodon/activities/ShowAccountActivity.java +++ b/app/src/main/java/fr/gouv/etalab/mastodon/activities/ShowAccountActivity.java @@ -46,7 +46,6 @@ import android.text.Spanned; import android.text.method.LinkMovementMethod; import android.text.style.ForegroundColorSpan; import android.text.style.UnderlineSpan; -import android.util.Log; import android.view.Menu; import android.view.MenuItem; import android.view.View; @@ -806,7 +805,6 @@ public class ShowAccountActivity extends BaseActivity implements OnPostActionInt private void manageButtonVisibility(){ if( relationship == null) return; - Log.v(Helper.TAG,"relationship.isRequested()= " + relationship.isRequested()); account_follow.setEnabled(true); if( account.getId() != null && account.getId().equals(userId)){ account_follow.hide(); diff --git a/app/src/main/java/fr/gouv/etalab/mastodon/drawers/NotificationsListAdapter.java b/app/src/main/java/fr/gouv/etalab/mastodon/drawers/NotificationsListAdapter.java index cbbda4338..820a8a36a 100644 --- a/app/src/main/java/fr/gouv/etalab/mastodon/drawers/NotificationsListAdapter.java +++ b/app/src/main/java/fr/gouv/etalab/mastodon/drawers/NotificationsListAdapter.java @@ -34,7 +34,6 @@ import android.support.v7.widget.PopupMenu; import android.support.v7.widget.RecyclerView; import android.text.Html; import android.text.method.LinkMovementMethod; -import android.util.Log; import android.util.TypedValue; import android.view.LayoutInflater; import android.view.MenuItem; @@ -1095,9 +1094,7 @@ public class NotificationsListAdapter extends RecyclerView.Adapter implements On @Override public void onRetrieveEmoji(Notification notification) { - Log.v(Helper.TAG,"notification: " + notification); if( notification != null && notification.getStatus() != null) { - Log.v(Helper.TAG,"getContent: " + notification.getStatus().getContent()); notification.getStatus().setEmojiFound(true); notifyNotificationChanged(notification); } diff --git a/app/src/main/java/fr/gouv/etalab/mastodon/helper/Helper.java b/app/src/main/java/fr/gouv/etalab/mastodon/helper/Helper.java index bccd7d0b8..a69081a4d 100644 --- a/app/src/main/java/fr/gouv/etalab/mastodon/helper/Helper.java +++ b/app/src/main/java/fr/gouv/etalab/mastodon/helper/Helper.java @@ -1819,24 +1819,26 @@ public class Helper { int matchStart = matcher.start(1); int matchEnd = matcher.end(); final String url = spannableString.toString().substring(matchStart, matchEnd); - if( matchEnd <= spannableString.toString().length() && matchEnd >= matchStart) - spannableString.setSpan(new ClickableSpan() { - @Override - public void onClick(View textView) { - Helper.openBrowser(context, url); - } - @Override - public void updateDrawState(TextPaint ds) { - super.updateDrawState(ds); - ds.setUnderlineText(false); - if (theme == THEME_DARK) - ds.setColor(ContextCompat.getColor(context, R.color.dark_link_toot)); - else if (theme == THEME_BLACK) - ds.setColor(ContextCompat.getColor(context, R.color.black_link_toot)); - else if (theme == THEME_LIGHT) - ds.setColor(ContextCompat.getColor(context, R.color.mastodonC4)); - } - }, matchStart, matchEnd, Spanned.SPAN_INCLUSIVE_EXCLUSIVE); + + if( url.startsWith("http")) + if( matchEnd <= spannableString.toString().length() && matchEnd >= matchStart) + spannableString.setSpan(new ClickableSpan() { + @Override + public void onClick(View textView) { + Helper.openBrowser(context, url); + } + @Override + public void updateDrawState(TextPaint ds) { + super.updateDrawState(ds); + ds.setUnderlineText(false); + if (theme == THEME_DARK) + ds.setColor(ContextCompat.getColor(context, R.color.dark_link_toot)); + else if (theme == THEME_BLACK) + ds.setColor(ContextCompat.getColor(context, R.color.black_link_toot)); + else if (theme == THEME_LIGHT) + ds.setColor(ContextCompat.getColor(context, R.color.mastodonC4)); + } + }, matchStart, matchEnd, Spanned.SPAN_INCLUSIVE_EXCLUSIVE); } matcher = hashtagPattern.matcher(spannableString); while (matcher.find()){ @@ -1897,7 +1899,76 @@ public class Helper { } } } + matcher = android.util.Patterns.EMAIL_ADDRESS.matcher(spannableString); + while (matcher.find()){ + int matchStart = matcher.start(0); + int matchEnd = matcher.end(); + final String email = spannableString.toString().substring(matchStart, matchEnd); + if( matchEnd <= spannableString.toString().length() && matchEnd >= matchStart) { + urls = spannableString.getSpans(matchStart, matchEnd, URLSpan.class); + for(URLSpan span : urls) + spannableString.removeSpan(span); + spannableString.setSpan(new ClickableSpan() { + @Override + public void onClick(View textView) { + try { + final Intent emailIntent = new Intent(android.content.Intent.ACTION_SEND); + emailIntent.setType("plain/text"); + emailIntent.putExtra(android.content.Intent.EXTRA_EMAIL, new String[]{email}); + context.startActivity(Intent.createChooser(emailIntent, context.getString(R.string.send_email))); + }catch (Exception e){ + Toasty.error(context, context.getString(R.string.toast_no_apps), Toast.LENGTH_LONG).show(); + } + } + @Override + public void updateDrawState(TextPaint ds) { + super.updateDrawState(ds); + ds.setUnderlineText(false); + if (theme == THEME_DARK) + ds.setColor(ContextCompat.getColor(context, R.color.dark_link_toot)); + else if (theme == THEME_BLACK) + ds.setColor(ContextCompat.getColor(context, R.color.black_link_toot)); + else if (theme == THEME_LIGHT) + ds.setColor(ContextCompat.getColor(context, R.color.light_link_toot)); + } + }, matchStart, matchEnd, Spanned.SPAN_INCLUSIVE_EXCLUSIVE); + } + } + matcher = Helper.xmppPattern.matcher(spannableString); + while (matcher.find()){ + int matchStart = matcher.start(0); + int matchEnd = matcher.end(); + final String url = spannableString.toString().substring(matchStart, matchEnd); + if( matchEnd <= spannableString.toString().length() && matchEnd >= matchStart) { + urls = spannableString.getSpans(matchStart, matchEnd, URLSpan.class); + for(URLSpan span : urls) + spannableString.removeSpan(span); + spannableString.setSpan(new ClickableSpan() { + @Override + public void onClick(View textView) { + try { + Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(url)); + context.startActivity(intent); + }catch (Exception e){ + Toasty.error(context, context.getString(R.string.toast_no_apps), Toast.LENGTH_LONG).show(); + } + } + @Override + public void updateDrawState(TextPaint ds) { + super.updateDrawState(ds); + ds.setUnderlineText(false); + if (theme == THEME_DARK) + ds.setColor(ContextCompat.getColor(context, R.color.dark_link_toot)); + else if (theme == THEME_BLACK) + ds.setColor(ContextCompat.getColor(context, R.color.black_link_toot)); + else if (theme == THEME_LIGHT) + ds.setColor(ContextCompat.getColor(context, R.color.light_link_toot)); + } + }, matchStart, matchEnd, Spanned.SPAN_INCLUSIVE_EXCLUSIVE); + } + + } return spannableString; } diff --git a/app/src/main/res/layout-sw600dp/activity_show_account.xml b/app/src/main/res/layout-sw600dp/activity_show_account.xml index 41eb222ab..313ba628e 100644 --- a/app/src/main/res/layout-sw600dp/activity_show_account.xml +++ b/app/src/main/res/layout-sw600dp/activity_show_account.xml @@ -211,8 +211,6 @@ android:gravity="center" android:textColor="?attr/color_in_account_header" android:layout_width="match_parent" - android:maxLines="4" - android:autoLink="web" android:layout_height="wrap_content" /> diff --git a/app/src/main/res/layout/activity_show_account.xml b/app/src/main/res/layout/activity_show_account.xml index 3e46d7ce1..18fd8cf5c 100644 --- a/app/src/main/res/layout/activity_show_account.xml +++ b/app/src/main/res/layout/activity_show_account.xml @@ -220,7 +220,6 @@ android:gravity="center" android:textColor="?attr/color_in_account_header" android:layout_width="match_parent" - android:autoLink="web" android:layout_height="wrap_content" />