From a148454fed4515714af9cfa6ea5ef9ba0cccf7eb Mon Sep 17 00:00:00 2001 From: stom79 Date: Sat, 8 Sep 2018 15:34:25 +0200 Subject: [PATCH] Fix emoji in notifications --- .../activities/ShowAccountActivity.java | 2 +- .../mastodon/client/Entities/Account.java | 7 +++---- .../mastodon/client/Entities/Status.java | 2 +- .../drawers/NotificationsListAdapter.java | 20 ++++++++++++++----- 4 files changed, 20 insertions(+), 11 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 37c9dadb0..b945427d0 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 @@ -1026,7 +1026,7 @@ public class ShowAccountActivity extends BaseActivity implements OnPostActionInt @Override public void onRetrieveEmojiAccount(Account account) { account_note.setText(account.getNoteSpan(), TextView.BufferType.SPANNABLE); - account_dn.setText(account.getdisplayNameSpanSpan(), TextView.BufferType.SPANNABLE);; + account_dn.setText(account.getdisplayNameSpan(), TextView.BufferType.SPANNABLE);; if ( account.getFieldsSpan() != null && account.getFieldsSpan().size() > 0){ HashMap fieldsSpan = account.getFieldsSpan(); Iterator it = fieldsSpan.entrySet().iterator(); diff --git a/app/src/main/java/fr/gouv/etalab/mastodon/client/Entities/Account.java b/app/src/main/java/fr/gouv/etalab/mastodon/client/Entities/Account.java index ca304d63d..3143562a8 100644 --- a/app/src/main/java/fr/gouv/etalab/mastodon/client/Entities/Account.java +++ b/app/src/main/java/fr/gouv/etalab/mastodon/client/Entities/Account.java @@ -30,6 +30,7 @@ import android.text.Spanned; import android.text.TextPaint; import android.text.style.ClickableSpan; import android.text.style.ImageSpan; +import android.util.Log; import android.view.View; import com.bumptech.glide.Glide; @@ -209,11 +210,11 @@ public class Account implements Parcelable { this.username = username; } - public SpannableString getdisplayNameSpanSpan() { + public SpannableString getdisplayNameSpan() { return displayNameSpan; } - public void setdisplayNameSpanSpan(SpannableString displayNameSpan) { + public void setdisplayNameSpan(SpannableString displayNameSpan) { this.displayNameSpan = displayNameSpan; } @@ -535,8 +536,6 @@ public class Account implements Parcelable { if( i[0] == (emojis.size())) { if( noteSpan != null) account.setNoteSpan(noteSpan); - if( displayNameSpan != null) - account.setdisplayNameSpanSpan(displayNameSpan); account.setFieldsSpan(fieldsSpan); listener.onRetrieveEmojiAccount(account); } diff --git a/app/src/main/java/fr/gouv/etalab/mastodon/client/Entities/Status.java b/app/src/main/java/fr/gouv/etalab/mastodon/client/Entities/Status.java index 40eebe5b8..2e72f4c06 100644 --- a/app/src/main/java/fr/gouv/etalab/mastodon/client/Entities/Status.java +++ b/app/src/main/java/fr/gouv/etalab/mastodon/client/Entities/Status.java @@ -532,7 +532,7 @@ public class Status implements Parcelable{ if( status.getReblog() == null && status.getEmojis() == null) return; final List emojis = status.getReblog() != null ? status.getReblog().getEmojis() : status.getEmojis(); - final List emojisAccounts = status.getAccount().getEmojis(); + final List emojisAccounts = status.getReblog() != null ?status.getReblog().getAccount().getEmojis():status.getAccount().getEmojis(); String displayName; 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 0ff0b8106..14b0a37da 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,6 +34,7 @@ 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; @@ -66,6 +67,7 @@ import fr.gouv.etalab.mastodon.asynctasks.PostNotificationsAsyncTask; import fr.gouv.etalab.mastodon.asynctasks.RetrieveFeedsAsyncTask; import fr.gouv.etalab.mastodon.client.API; import fr.gouv.etalab.mastodon.client.APIResponse; +import fr.gouv.etalab.mastodon.client.Entities.Account; import fr.gouv.etalab.mastodon.client.Entities.Attachment; import fr.gouv.etalab.mastodon.client.Entities.Emojis; import fr.gouv.etalab.mastodon.client.Entities.Error; @@ -73,6 +75,7 @@ import fr.gouv.etalab.mastodon.helper.CrossActions; import fr.gouv.etalab.mastodon.helper.CustomTextView; import fr.gouv.etalab.mastodon.interfaces.OnPostActionInterface; import fr.gouv.etalab.mastodon.interfaces.OnPostNotificationsActionInterface; +import fr.gouv.etalab.mastodon.interfaces.OnRetrieveEmojiAccountInterface; import fr.gouv.etalab.mastodon.interfaces.OnRetrieveEmojiInterface; import fr.gouv.etalab.mastodon.client.Entities.Notification; import fr.gouv.etalab.mastodon.client.Entities.Status; @@ -89,7 +92,7 @@ import static fr.gouv.etalab.mastodon.helper.Helper.getLiveInstance; * Adapter for Status */ -public class NotificationsListAdapter extends RecyclerView.Adapter implements OnPostActionInterface, OnPostNotificationsActionInterface, OnRetrieveEmojiInterface { +public class NotificationsListAdapter extends RecyclerView.Adapter implements OnPostActionInterface, OnPostNotificationsActionInterface, OnRetrieveEmojiInterface, OnRetrieveEmojiAccountInterface { private Context context; private List notifications; @@ -97,7 +100,7 @@ public class NotificationsListAdapter extends RecyclerView.Adapter implements On private NotificationsListAdapter notificationsListAdapter; private int behaviorWithAttachments; private boolean isOnWifi; - + private NotificationsListAdapter.ViewHolder holder; public NotificationsListAdapter(Context context, boolean isOnWifi, int behaviorWithAttachments, List notifications){ this.context = context; @@ -119,7 +122,7 @@ public class NotificationsListAdapter extends RecyclerView.Adapter implements On @Override public void onBindViewHolder(@NonNull RecyclerView.ViewHolder viewHolder, int position) { - final NotificationsListAdapter.ViewHolder holder = (NotificationsListAdapter.ViewHolder) viewHolder; + holder = (NotificationsListAdapter.ViewHolder) viewHolder; final Notification notification = notifications.get(position); final SharedPreferences sharedpreferences = context.getSharedPreferences(Helper.APP_PREFS, Context.MODE_PRIVATE); @@ -221,8 +224,11 @@ public class NotificationsListAdapter extends RecyclerView.Adapter implements On changeDrawableColor(context, R.drawable.ic_follow_notif_header,R.color.mastodonC4); } - - holder.notification_type.setText(typeString); + notification.getAccount().makeEmojisAccount(context, NotificationsListAdapter.this); + if( notification.getAccount().getdisplayNameSpan() == null) + holder.notification_type.setText(typeString); + else + holder.notification_type.setText(notification.getAccount().getdisplayNameSpan(), TextView.BufferType.SPANNABLE); if( imgH != null) { holder.notification_type.setCompoundDrawablePadding((int)Helper.convertDpToPixel(5, context)); imgH.setBounds(0, 0, (int) (20 * iconSizePercent / 100 * scale + 0.5f), (int) (20 * iconSizePercent / 100 * scale + 0.5f)); @@ -1052,6 +1058,10 @@ public class NotificationsListAdapter extends RecyclerView.Adapter implements On viewHolder.status_spoiler.setEnabled(true); } + @Override + public void onRetrieveEmojiAccount(Account account) { + } + class ViewHolder extends RecyclerView.ViewHolder { FrameLayout card_status_container;