Fixes custom emoji in usernames
This commit is contained in:
parent
88fc241e21
commit
93f14ed439
|
@ -16,7 +16,6 @@ package fr.gouv.etalab.mastodon.asynctasks;
|
|||
|
||||
import android.content.Context;
|
||||
import android.os.AsyncTask;
|
||||
import android.util.Log;
|
||||
|
||||
import java.lang.ref.WeakReference;
|
||||
import java.util.List;
|
||||
|
@ -128,14 +127,10 @@ public class PostActionAsyncTask extends AsyncTask<Void, Void, Void> {
|
|||
}
|
||||
}else if(remoteAccount != null){
|
||||
String searchString = remoteAccount.getAcct().contains("@")?"@" + remoteAccount.getAcct():"@" + remoteAccount.getAcct() + "@" + Helper.getLiveInstance(contextReference.get());
|
||||
Log.v(Helper.TAG,"searchString: " + searchString);
|
||||
Results search = api.search(searchString);
|
||||
Log.v(Helper.TAG,"search: " + search);
|
||||
if (search != null) {
|
||||
List<Account> accounts = search.getAccounts();
|
||||
Log.v(Helper.TAG,"accounts: " + accounts);
|
||||
if (accounts != null && accounts.size() > 0) {
|
||||
Log.v(Helper.TAG,"accounts.size(): " + accounts.size());
|
||||
Account accountTmp = accounts.get(0);
|
||||
this.targetedId = accountTmp.getId();
|
||||
statusCode = api.postAction(apiAction, targetedId);
|
||||
|
|
|
@ -243,7 +243,7 @@ public class Status implements Parcelable{
|
|||
}
|
||||
|
||||
public SpannableString getDisplayNameSpan(){
|
||||
return this.status.getAccount().getdisplayNameSpanSpan();
|
||||
return this.displayNameSpan;
|
||||
}
|
||||
public void setDisplayNameSpan(SpannableString displayNameSpan){
|
||||
this.displayNameSpan = displayNameSpan;
|
||||
|
@ -513,8 +513,22 @@ public class Status implements Parcelable{
|
|||
|
||||
if( ((Activity)context).isFinishing() )
|
||||
return;
|
||||
|
||||
final List<Emojis> emojis = status.getReblog() != null ? status.getReblog().getEmojis() : status.getEmojis();
|
||||
final List<Emojis> emojisAccounts = status.getAccount().getEmojis();
|
||||
|
||||
|
||||
String displayName;
|
||||
if( status.getReblog() != null){
|
||||
displayName = Helper.shortnameToUnicode(status.getReblog().getAccount().getDisplay_name(), true);
|
||||
displayName = String.format("%s @%s",displayName,status.getReblog().getAccount().getAcct());
|
||||
}else {
|
||||
displayName = Helper.shortnameToUnicode(status.getAccount().getDisplay_name(), true);
|
||||
displayName = String.format("%s @%s",displayName,status.getAccount().getAcct());
|
||||
}
|
||||
displayNameSpan = new SpannableString(displayName);
|
||||
|
||||
if( emojisAccounts != null)
|
||||
emojis.addAll(emojisAccounts);
|
||||
if( emojis != null && emojis.size() > 0 ) {
|
||||
final int[] i = {0};
|
||||
for (final Emojis emoji : emojis) {
|
||||
|
@ -635,14 +649,14 @@ public class Status implements Parcelable{
|
|||
})
|
||||
.into(new SimpleTarget<Bitmap>() {
|
||||
@Override
|
||||
public void onResourceReady(Bitmap resource, Transition<? super Bitmap> transition) {
|
||||
public void onResourceReady(@NonNull Bitmap resource, Transition<? super Bitmap> transition) {
|
||||
final String targetedEmoji = ":" + emoji.getShortcode() + ":";
|
||||
|
||||
if (finalSpannableStringTranslated != null && finalSpannableStringTranslated.toString().contains(targetedEmoji)) {
|
||||
//emojis can be used several times so we have to loop
|
||||
for (int startPosition = -1; (startPosition = finalSpannableStringTranslated.toString().indexOf(targetedEmoji, startPosition + 1)) != -1; startPosition++) {
|
||||
final int endPosition = startPosition + targetedEmoji.length();
|
||||
if( startPosition >= 0 && endPosition <= finalSpannableStringTranslated.toString().length() && endPosition >= startPosition)
|
||||
if( endPosition <= finalSpannableStringTranslated.toString().length() && endPosition >= startPosition)
|
||||
finalSpannableStringTranslated.setSpan(
|
||||
new ImageSpan(context,
|
||||
Bitmap.createScaledBitmap(resource, (int) Helper.convertDpToPixel(20, context),
|
||||
|
@ -686,7 +700,7 @@ public class Status implements Parcelable{
|
|||
int matchStart = matcher.start(2);
|
||||
int matchEnd = matcher.end();
|
||||
final String twittername = spannableString.toString().substring(matchStart, matchEnd);
|
||||
if( matchStart >= 0 && matchEnd <= spannableString.toString().length() && matchEnd >= matchStart)
|
||||
if( matchEnd <= spannableString.toString().length() && matchEnd >= matchStart)
|
||||
spannableString.setSpan(new ClickableSpan() {
|
||||
@Override
|
||||
public void onClick(View textView) {
|
||||
|
@ -699,7 +713,7 @@ public class Status implements Parcelable{
|
|||
ds.setUnderlineText(false);
|
||||
}
|
||||
}, matchStart, matchEnd, Spanned.SPAN_INCLUSIVE_EXCLUSIVE);
|
||||
if( matchStart >= 0 && matchEnd <= spannableString.toString().length() && matchEnd >= matchStart)
|
||||
if( matchEnd <= spannableString.toString().length() && matchEnd >= matchStart)
|
||||
spannableString.setSpan(new ForegroundColorSpan(ContextCompat.getColor(context, (theme==Helper.THEME_DARK||theme==Helper.THEME_BLACK)?R.color.mastodonC2:R.color.mastodonC4)), matchStart, matchEnd,
|
||||
Spanned.SPAN_INCLUSIVE_EXCLUSIVE);
|
||||
}
|
||||
|
@ -709,7 +723,7 @@ public class Status implements Parcelable{
|
|||
int matchStart = matcher.start(1);
|
||||
int matchEnd = matcher.end();
|
||||
final String url = spannableString.toString().substring(matchStart, matchEnd);
|
||||
if( matchStart >= 0 && matchEnd <= spannableString.toString().length() && matchEnd >= matchStart)
|
||||
if( matchEnd <= spannableString.toString().length() && matchEnd >= matchStart)
|
||||
spannableString.setSpan(new ClickableSpan() {
|
||||
@Override
|
||||
public void onClick(View textView) {
|
||||
|
@ -726,7 +740,7 @@ public class Status implements Parcelable{
|
|||
},
|
||||
matchStart, matchEnd,
|
||||
Spanned.SPAN_INCLUSIVE_EXCLUSIVE);
|
||||
if( matchStart >= 0 && matchEnd <= spannableString.toString().length() && matchEnd >= matchStart)
|
||||
if( matchEnd <= spannableString.toString().length() && matchEnd >= matchStart)
|
||||
spannableString.setSpan(new ForegroundColorSpan(ContextCompat.getColor(context, (theme==Helper.THEME_DARK||theme==Helper.THEME_BLACK)?R.color.mastodonC2:R.color.mastodonC4)), matchStart, matchEnd,
|
||||
Spanned.SPAN_INCLUSIVE_EXCLUSIVE);
|
||||
}
|
||||
|
@ -740,7 +754,7 @@ public class Status implements Parcelable{
|
|||
//Accounts can be mentioned several times so we have to loop
|
||||
for(int startPosition = -1 ; (startPosition = spannableString.toString().indexOf(targetedAccount, startPosition + 1)) != -1 ; startPosition++){
|
||||
int endPosition = startPosition + targetedAccount.length();
|
||||
if( startPosition >= 0 && endPosition <= spannableString.toString().length() && endPosition >= startPosition)
|
||||
if( endPosition <= spannableString.toString().length() && endPosition >= startPosition)
|
||||
spannableString.setSpan(new ClickableSpan() {
|
||||
@Override
|
||||
public void onClick(View textView) {
|
||||
|
@ -758,7 +772,7 @@ public class Status implements Parcelable{
|
|||
},
|
||||
startPosition, endPosition,
|
||||
Spanned.SPAN_INCLUSIVE_EXCLUSIVE);
|
||||
if( startPosition >= 0 && endPosition <= spannableString.toString().length() && endPosition >= startPosition)
|
||||
if(endPosition <= spannableString.toString().length() && endPosition >= startPosition)
|
||||
spannableString.setSpan(new ForegroundColorSpan(ContextCompat.getColor(context, (theme==Helper.THEME_DARK||theme==Helper.THEME_BLACK)?R.color.mastodonC2:R.color.mastodonC4)), startPosition, endPosition,
|
||||
Spanned.SPAN_INCLUSIVE_EXCLUSIVE);
|
||||
}
|
||||
|
@ -771,7 +785,7 @@ public class Status implements Parcelable{
|
|||
int matchStart = matcher.start(1);
|
||||
int matchEnd = matcher.end();
|
||||
final String tag = spannableString.toString().substring(matchStart, matchEnd);
|
||||
if( matchStart >= 0 && matchEnd <= spannableString.toString().length() && matchEnd >= matchStart)
|
||||
if( matchEnd <= spannableString.toString().length() && matchEnd >= matchStart)
|
||||
spannableString.setSpan(new ClickableSpan() {
|
||||
@Override
|
||||
public void onClick(View textView) {
|
||||
|
@ -787,7 +801,7 @@ public class Status implements Parcelable{
|
|||
ds.setUnderlineText(false);
|
||||
}
|
||||
}, matchStart, matchEnd, Spanned.SPAN_INCLUSIVE_EXCLUSIVE);
|
||||
if( matchStart >= 0 && matchEnd <= spannableString.toString().length() && matchEnd >= matchStart)
|
||||
if( matchEnd <= spannableString.toString().length() && matchEnd >= matchStart)
|
||||
spannableString.setSpan(new ForegroundColorSpan(ContextCompat.getColor(context, (theme==Helper.THEME_DARK||theme==Helper.THEME_BLACK)?R.color.mastodonC2:R.color.mastodonC4)), matchStart, matchEnd,
|
||||
Spanned.SPAN_INCLUSIVE_EXCLUSIVE);
|
||||
}
|
||||
|
|
|
@ -40,14 +40,12 @@ import android.support.v7.widget.PopupMenu;
|
|||
import android.support.v7.widget.RecyclerView;
|
||||
import android.text.Html;
|
||||
import android.text.Spannable;
|
||||
import android.text.SpannableString;
|
||||
import android.text.Spanned;
|
||||
import android.text.method.LinkMovementMethod;
|
||||
import android.text.style.ForegroundColorSpan;
|
||||
import android.util.TypedValue;
|
||||
import android.view.LayoutInflater;
|
||||
import android.view.MenuItem;
|
||||
import android.view.MotionEvent;
|
||||
import android.view.View;
|
||||
import android.view.ViewGroup;
|
||||
import android.webkit.WebView;
|
||||
|
@ -641,7 +639,7 @@ public class StatusListAdapter extends RecyclerView.Adapter implements OnPostAct
|
|||
|
||||
holder.status_content.setText(status.getContentSpan(), TextView.BufferType.SPANNABLE);
|
||||
holder.status_spoiler.setText(status.getContentSpanCW(), TextView.BufferType.SPANNABLE);
|
||||
holder.status_account_displayname.setText(status.getAccount().getdisplayNameSpanSpan(), TextView.BufferType.SPANNABLE);
|
||||
holder.status_account_displayname.setText(status.getDisplayNameSpan(), TextView.BufferType.SPANNABLE);
|
||||
holder.status_content.setMovementMethod(LinkMovementMethod.getInstance());
|
||||
holder.status_spoiler.setMovementMethod(LinkMovementMethod.getInstance());
|
||||
|
||||
|
@ -686,27 +684,18 @@ public class StatusListAdapter extends RecyclerView.Adapter implements OnPostAct
|
|||
|
||||
|
||||
//Displays name & emoji in toot header
|
||||
final String displayName;
|
||||
final String username;
|
||||
final String ppurl;
|
||||
String name;
|
||||
if( status.getReblog() != null){
|
||||
displayName = Helper.shortnameToUnicode(status.getReblog().getAccount().getDisplay_name(), true);
|
||||
username = status.getReblog().getAccount().getUsername();
|
||||
holder.status_account_displayname.setText(String.format("%s @%s",displayName, username));
|
||||
ppurl = status.getReblog().getAccount().getAvatar();
|
||||
holder.status_account_displayname.setVisibility(View.VISIBLE);
|
||||
holder.status_account_displayname.setText(context.getResources().getString(R.string.reblog_by, status.getAccount().getUsername()));
|
||||
name = String.format("%s @%s",displayName,status.getReblog().getAccount().getAcct());
|
||||
}else {
|
||||
ppurl = status.getAccount().getAvatar();
|
||||
displayName = Helper.shortnameToUnicode(status.getAccount().getDisplay_name(), true);
|
||||
name = String.format("%s @%s",displayName,status.getAccount().getAcct());
|
||||
}
|
||||
//-------- END -> Displays name & emoji in toot header
|
||||
|
||||
//Change the color in gray for accounts in DARK Theme only
|
||||
Spannable wordtoSpan = new SpannableString(name);
|
||||
Spannable wordtoSpan = status.getDisplayNameSpan();
|
||||
if( theme == THEME_DARK || theme == Helper.THEME_BLACK) {
|
||||
Pattern hashAcct;
|
||||
if( status.getReblog() != null)
|
||||
|
@ -1952,7 +1941,16 @@ public class StatusListAdapter extends RecyclerView.Adapter implements OnPostAct
|
|||
|
||||
@Override
|
||||
public void onRetrieveEmoji(Status status, boolean fromTranslation) {
|
||||
if( !fromTranslation) {
|
||||
if( status != null) {
|
||||
if( !fromTranslation) {
|
||||
status.setEmojiFound(true);
|
||||
}else {
|
||||
status.setEmojiTranslateFound(true);
|
||||
}
|
||||
notifyStatusChanged(status);
|
||||
}
|
||||
|
||||
/* if( !fromTranslation) {
|
||||
if (!status.isEmojiFound()) {
|
||||
for (int i = 0; i < statusListAdapter.getItemCount(); i++) {
|
||||
//noinspection ConstantConditions
|
||||
|
@ -1978,7 +1976,7 @@ public class StatusListAdapter extends RecyclerView.Adapter implements OnPostAct
|
|||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}*/
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
Loading…
Reference in New Issue