Adds a fix to avoid to translate URLs and TAGs

This commit is contained in:
tom79 2017-08-21 19:06:26 +02:00
parent 907235878b
commit 1d17f808a9
3 changed files with 23 additions and 12 deletions

View File

@ -262,7 +262,7 @@ public class NotificationsListAdapter extends BaseAdapter implements OnPostActio
}
SpannableString spannableString = Helper.clickableElements(context, status.getContent(),
status.getReblog() != null?status.getReblog().getMentions():status.getMentions());
status.getReblog() != null?status.getReblog().getMentions():status.getMentions(), true);
holder.notification_status_content.setText(spannableString, TextView.BufferType.SPANNABLE);
holder.notification_status_content.setMovementMethod(null);
holder.notification_status_content.setMovementMethod(LinkMovementMethod.getInstance());

View File

@ -308,16 +308,22 @@ public class StatusListAdapter extends BaseAdapter implements OnPostActionInterf
@Override
public void onClick(View v) {
try {
String text = status.getContent();
SpannableString spannableString;
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N)
spannableString = new SpannableString(Html.fromHtml(status.getContent(), Html.FROM_HTML_MODE_LEGACY));
else
//noinspection deprecation
spannableString = new SpannableString(Html.fromHtml(status.getContent()));
String text = spannableString.toString();
if( !status.isTranslated() ){
tagConversion = new HashMap<>();
urlConversion = new HashMap<>();
Matcher matcher;
//Extracts urls
if (Build.VERSION.SDK_INT > Build.VERSION_CODES.KITKAT)
matcher = Patterns.WEB_URL.matcher(text);
matcher = Patterns.WEB_URL.matcher(spannableString.toString());
else
matcher = Helper.urlPattern.matcher(text);
matcher = Helper.urlPattern.matcher(spannableString.toString());
int i = 0;
//replaces them by a kind of variable which shouldn't be translated ie: __u0__, __u1__, etc.
while (matcher.find()){
@ -504,7 +510,7 @@ public class StatusListAdapter extends BaseAdapter implements OnPostActionInterf
if( status.getContent_translated() != null && status.getContent_translated().length() > 0){
SpannableString spannableStringTrans = Helper.clickableElements(context, status.getContent_translated(),
status.getReblog() != null?status.getReblog().getMentions():status.getMentions());
status.getReblog() != null?status.getReblog().getMentions():status.getMentions(), false);
holder.status_content_translated.setText(spannableStringTrans, TextView.BufferType.SPANNABLE);
holder.status_content_translated.setOnLongClickListener(new View.OnLongClickListener() {
@Override
@ -527,7 +533,7 @@ public class StatusListAdapter extends BaseAdapter implements OnPostActionInterf
}
final SpannableString spannableString = Helper.clickableElements(context,content,
status.getReblog() != null?status.getReblog().getMentions():status.getMentions());
status.getReblog() != null?status.getReblog().getMentions():status.getMentions(), true);
holder.status_content.setText(spannableString, TextView.BufferType.SPANNABLE);
holder.status_content.setOnLongClickListener(new View.OnLongClickListener() {
@Override

View File

@ -1066,14 +1066,18 @@ public class Helper {
* @param mentions List<Mention>
* @return TextView
*/
public static SpannableString clickableElements(final Context context, String fullContent, List<Mention> mentions) {
public static SpannableString clickableElements(final Context context, String fullContent, List<Mention> mentions, boolean useHTML) {
SpannableString spannableString;
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N)
spannableString = new SpannableString(Html.fromHtml(fullContent, Html.FROM_HTML_MODE_LEGACY));
else
//noinspection deprecation
spannableString = new SpannableString(Html.fromHtml(fullContent));
if( useHTML) {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N)
spannableString = new SpannableString(Html.fromHtml(fullContent, Html.FROM_HTML_MODE_LEGACY));
else
//noinspection deprecation
spannableString = new SpannableString(Html.fromHtml(fullContent));
}else{
spannableString = new SpannableString(fullContent);
}
SharedPreferences sharedpreferences = context.getSharedPreferences(Helper.APP_PREFS, Context.MODE_PRIVATE);
boolean embedded_browser = sharedpreferences.getBoolean(Helper.SET_EMBEDDED_BROWSER, true);
if( embedded_browser){
@ -1082,6 +1086,7 @@ public class Helper {
matcher = Patterns.WEB_URL.matcher(spannableString);
else
matcher = urlPattern.matcher(spannableString);
while (matcher.find()){
int matchStart = matcher.start(1);
int matchEnd = matcher.end();