Improve refresh
This commit is contained in:
parent
9aae4d927e
commit
f491859cfe
|
@ -1076,17 +1076,11 @@ public class Account implements Parcelable {
|
||||||
for (final Emojis emoji : emojis) {
|
for (final Emojis emoji : emojis) {
|
||||||
try {
|
try {
|
||||||
Glide.with(context)
|
Glide.with(context)
|
||||||
.asFile()
|
.asDrawable()
|
||||||
.load(emoji.getUrl())
|
.load(emoji.getUrl())
|
||||||
.into(new SimpleTarget<File>() {
|
.into(new SimpleTarget<Drawable>() {
|
||||||
@Override
|
@Override
|
||||||
public void onResourceReady(@NonNull File resourceFile, @Nullable Transition<? super File> transition) {
|
public void onResourceReady(@NonNull Drawable resource, @Nullable Transition<? super Drawable> transition) {
|
||||||
Drawable resource;
|
|
||||||
if( emoji.getUrl().endsWith(".gif")){
|
|
||||||
resource = GifDrawable.fromFile(resourceFile.getAbsolutePath());
|
|
||||||
}else{
|
|
||||||
resource = APNGDrawable.fromFile(resourceFile.getAbsolutePath());
|
|
||||||
}
|
|
||||||
final String targetedEmoji = ":" + emoji.getShortcode() + ":";
|
final String targetedEmoji = ":" + emoji.getShortcode() + ":";
|
||||||
if (displayNameSpan.toString().contains(targetedEmoji)) {
|
if (displayNameSpan.toString().contains(targetedEmoji)) {
|
||||||
//emojis can be used several times so we have to loop
|
//emojis can be used several times so we have to loop
|
||||||
|
@ -1119,6 +1113,7 @@ public class Account implements Parcelable {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
});
|
});
|
||||||
}catch (Exception ignored){}
|
}catch (Exception ignored){}
|
||||||
|
|
||||||
|
|
|
@ -28,6 +28,7 @@ import androidx.annotation.Nullable;
|
||||||
import android.text.Spannable;
|
import android.text.Spannable;
|
||||||
import android.text.SpannableString;
|
import android.text.SpannableString;
|
||||||
import android.text.style.ImageSpan;
|
import android.text.style.ImageSpan;
|
||||||
|
import android.util.Log;
|
||||||
|
|
||||||
import com.bumptech.glide.Glide;
|
import com.bumptech.glide.Glide;
|
||||||
import com.bumptech.glide.load.DataSource;
|
import com.bumptech.glide.load.DataSource;
|
||||||
|
@ -43,6 +44,7 @@ import java.io.File;
|
||||||
import java.util.Date;
|
import java.util.Date;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
|
import app.fedilab.android.R;
|
||||||
import app.fedilab.android.helper.Helper;
|
import app.fedilab.android.helper.Helper;
|
||||||
import app.fedilab.android.interfaces.OnRetrieveEmojiInterface;
|
import app.fedilab.android.interfaces.OnRetrieveEmojiInterface;
|
||||||
|
|
||||||
|
@ -156,15 +158,93 @@ public class Notification implements Parcelable {
|
||||||
return;
|
return;
|
||||||
if( status.getReblog() == null && status.getAccount() == null)
|
if( status.getReblog() == null && status.getAccount() == null)
|
||||||
return;
|
return;
|
||||||
final List<Emojis> emojisAccounts = status.getReblog() != null ?status.getReblog().getAccount().getEmojis():status.getAccount().getEmojis();
|
final List<Emojis> emojisAccounts = status.getAccount().getEmojis();
|
||||||
|
|
||||||
SpannableString displayNameSpan = status.getDisplayNameSpan();
|
String typeString = "";
|
||||||
|
switch (notification.getType()){
|
||||||
|
case "mention":
|
||||||
|
if( notification.getAccount().getDisplay_name() != null && notification.getAccount().getDisplay_name().length() > 0)
|
||||||
|
typeString = String.format("%s %s", Helper.shortnameToUnicode(notification.getAccount().getDisplay_name(), true),context.getString(R.string.notif_mention));
|
||||||
|
else
|
||||||
|
typeString = String.format("@%s %s", notification.getAccount().getUsername(),context.getString(R.string.notif_mention));
|
||||||
|
break;
|
||||||
|
case "poll":
|
||||||
|
typeString = context.getString(R.string.notif_poll);;
|
||||||
|
break;
|
||||||
|
case "reblog":
|
||||||
|
if( notification.getAccount().getDisplay_name() != null && notification.getAccount().getDisplay_name().length() > 0)
|
||||||
|
typeString = String.format("%s %s", Helper.shortnameToUnicode(notification.getAccount().getDisplay_name(), true),context.getString(R.string.notif_reblog));
|
||||||
|
else
|
||||||
|
typeString = String.format("@%s %s", notification.getAccount().getUsername(),context.getString(R.string.notif_reblog));
|
||||||
|
break;
|
||||||
|
case "favourite":
|
||||||
|
if( notification.getAccount().getDisplay_name() != null && notification.getAccount().getDisplay_name().length() > 0)
|
||||||
|
typeString = String.format("%s %s", Helper.shortnameToUnicode(notification.getAccount().getDisplay_name(), true),context.getString(R.string.notif_favourite));
|
||||||
|
else
|
||||||
|
typeString = String.format("@%s %s", notification.getAccount().getUsername(),context.getString(R.string.notif_favourite));
|
||||||
|
break;
|
||||||
|
case "follow":
|
||||||
|
if( notification.getAccount().getDisplay_name() != null && notification.getAccount().getDisplay_name().length() > 0)
|
||||||
|
typeString = String.format("%s %s", Helper.shortnameToUnicode(notification.getAccount().getDisplay_name(), true),context.getString(R.string.notif_follow));
|
||||||
|
else
|
||||||
|
typeString = String.format("@%s %s", notification.getAccount().getUsername(),context.getString(R.string.notif_follow));
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
SpannableString displayNameSpan = new SpannableString(typeString);
|
||||||
SpannableString contentSpan = status.getContentSpan();
|
SpannableString contentSpan = status.getContentSpan();
|
||||||
SpannableString contentSpanCW = status.getContentSpanCW();
|
SpannableString contentSpanCW = status.getContentSpanCW();
|
||||||
SharedPreferences sharedpreferences = context.getSharedPreferences(Helper.APP_PREFS, Context.MODE_PRIVATE);
|
SharedPreferences sharedpreferences = context.getSharedPreferences(Helper.APP_PREFS, Context.MODE_PRIVATE);
|
||||||
boolean disableAnimatedEmoji = sharedpreferences.getBoolean(Helper.SET_DISABLE_ANIMATED_EMOJI, false);
|
boolean disableAnimatedEmoji = sharedpreferences.getBoolean(Helper.SET_DISABLE_ANIMATED_EMOJI, false);
|
||||||
if( emojisAccounts != null)
|
|
||||||
emojis.addAll(emojisAccounts);
|
if( emojisAccounts != null && emojisAccounts.size() > 0 ) {
|
||||||
|
final int[] j = {0};
|
||||||
|
for (final Emojis emoji : emojisAccounts) {
|
||||||
|
Glide.with(context)
|
||||||
|
.asDrawable()
|
||||||
|
.load(emoji.getUrl())
|
||||||
|
.listener(new RequestListener<Drawable>() {
|
||||||
|
@Override
|
||||||
|
public boolean onResourceReady(Drawable resource, Object model, Target<Drawable> target, DataSource dataSource, boolean isFirstResource) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
@Override
|
||||||
|
public boolean onLoadFailed(@Nullable GlideException e, Object model, Target target, boolean isFirstResource) {
|
||||||
|
j[0]++;
|
||||||
|
if( j[0] == (emojisAccounts.size())) {
|
||||||
|
listener.onRetrieveEmoji(notification);
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
})
|
||||||
|
.into(new SimpleTarget<Drawable>() {
|
||||||
|
@Override
|
||||||
|
public void onResourceReady(@NonNull Drawable resource, @Nullable Transition<? super Drawable> transition) {
|
||||||
|
final String targetedEmoji = ":" + emoji.getShortcode() + ":";
|
||||||
|
if (displayNameSpan != null && displayNameSpan.toString().contains(targetedEmoji)) {
|
||||||
|
//emojis can be used several times so we have to loop
|
||||||
|
for (int startPosition = -1; (startPosition = displayNameSpan.toString().indexOf(targetedEmoji, startPosition + 1)) != -1; startPosition++) {
|
||||||
|
final int endPosition = startPosition + targetedEmoji.length();
|
||||||
|
if(endPosition <= displayNameSpan.toString().length() && endPosition >= startPosition) {
|
||||||
|
resource.setBounds(0,0,(int) Helper.convertDpToPixel(20, context),(int) Helper.convertDpToPixel(20, context));
|
||||||
|
resource.setVisible(true, true);
|
||||||
|
ImageSpan imageSpan = new ImageSpan(resource);
|
||||||
|
displayNameSpan.setSpan(
|
||||||
|
imageSpan, startPosition,
|
||||||
|
endPosition, Spannable.SPAN_INCLUSIVE_EXCLUSIVE);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
j[0]++;
|
||||||
|
if( j[0] == (emojisAccounts.size())) {
|
||||||
|
notification.getAccount().setdisplayNameSpan(displayNameSpan);
|
||||||
|
Log.v(Helper.TAG,"displayNameSpan: " + displayNameSpan);
|
||||||
|
listener.onRetrieveEmoji(notification);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if( emojis != null && emojis.size() > 0 ) {
|
if( emojis != null && emojis.size() > 0 ) {
|
||||||
final int[] i = {0};
|
final int[] i = {0};
|
||||||
for (final Emojis emoji : emojis) {
|
for (final Emojis emoji : emojis) {
|
||||||
|
@ -191,7 +271,6 @@ public class Notification implements Parcelable {
|
||||||
Drawable resource;
|
Drawable resource;
|
||||||
if( emoji.getUrl().endsWith(".gif")){
|
if( emoji.getUrl().endsWith(".gif")){
|
||||||
resource = GifDrawable.fromFile(resourceFile.getAbsolutePath());
|
resource = GifDrawable.fromFile(resourceFile.getAbsolutePath());
|
||||||
((GifDrawable) resource).start();
|
|
||||||
}else{
|
}else{
|
||||||
resource = APNGDrawable.fromFile(resourceFile.getAbsolutePath());
|
resource = APNGDrawable.fromFile(resourceFile.getAbsolutePath());
|
||||||
}
|
}
|
||||||
|
@ -219,20 +298,6 @@ public class Notification implements Parcelable {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (displayNameSpan != null && displayNameSpan.toString().contains(targetedEmoji)) {
|
|
||||||
//emojis can be used several times so we have to loop
|
|
||||||
for (int startPosition = -1; (startPosition = displayNameSpan.toString().indexOf(targetedEmoji, startPosition + 1)) != -1; startPosition++) {
|
|
||||||
final int endPosition = startPosition + targetedEmoji.length();
|
|
||||||
if(endPosition <= displayNameSpan.toString().length() && endPosition >= startPosition) {
|
|
||||||
resource.setBounds(0,0,(int) Helper.convertDpToPixel(20, context),(int) Helper.convertDpToPixel(20, context));
|
|
||||||
resource.setVisible(true, true);
|
|
||||||
ImageSpan imageSpan = new ImageSpan(resource);
|
|
||||||
displayNameSpan.setSpan(
|
|
||||||
imageSpan, startPosition,
|
|
||||||
endPosition, Spannable.SPAN_INCLUSIVE_EXCLUSIVE);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if (contentSpanCW != null && contentSpanCW.toString().contains(targetedEmoji)) {
|
if (contentSpanCW != null && contentSpanCW.toString().contains(targetedEmoji)) {
|
||||||
//emojis can be used several times so we have to loop
|
//emojis can be used several times so we have to loop
|
||||||
for (int startPosition = -1; (startPosition = contentSpanCW.toString().indexOf(targetedEmoji, startPosition + 1)) != -1; startPosition++) {
|
for (int startPosition = -1; (startPosition = contentSpanCW.toString().indexOf(targetedEmoji, startPosition + 1)) != -1; startPosition++) {
|
||||||
|
@ -260,7 +325,6 @@ public class Notification implements Parcelable {
|
||||||
if( i[0] == (emojis.size())) {
|
if( i[0] == (emojis.size())) {
|
||||||
status.setContentSpan(contentSpan);
|
status.setContentSpan(contentSpan);
|
||||||
status.setContentSpanCW(contentSpanCW);
|
status.setContentSpanCW(contentSpanCW);
|
||||||
status.setDisplayNameSpan(displayNameSpan);
|
|
||||||
status.setEmojiFound(true);
|
status.setEmojiFound(true);
|
||||||
listener.onRetrieveEmoji(notification);
|
listener.onRetrieveEmoji(notification);
|
||||||
}
|
}
|
||||||
|
|
|
@ -1080,15 +1080,74 @@ public class Status implements Parcelable{
|
||||||
final List<Emojis> emojis = status.getReblog() != null ? status.getReblog().getEmojis() : status.getEmojis();
|
final List<Emojis> emojis = status.getReblog() != null ? status.getReblog().getEmojis() : status.getEmojis();
|
||||||
final List<Emojis> emojisAccounts = status.getReblog() != null ?status.getReblog().getAccount().getEmojis():status.getAccount().getEmojis();
|
final List<Emojis> emojisAccounts = status.getReblog() != null ?status.getReblog().getAccount().getEmojis():status.getAccount().getEmojis();
|
||||||
|
|
||||||
//Account.makeAccountNameEmoji(context, null, status.getAccount());
|
Account.makeAccountNameEmoji(context, null, status.getAccount());
|
||||||
|
|
||||||
SpannableString displayNameSpan = status.getDisplayNameSpan();
|
SpannableString displayNameSpan = status.getDisplayNameSpan();
|
||||||
SpannableString contentSpan = status.getContentSpan();
|
SpannableString contentSpan = status.getContentSpan();
|
||||||
SpannableString contentSpanCW = status.getContentSpanCW();
|
SpannableString contentSpanCW = status.getContentSpanCW();
|
||||||
SharedPreferences sharedpreferences = context.getSharedPreferences(Helper.APP_PREFS, Context.MODE_PRIVATE);
|
SharedPreferences sharedpreferences = context.getSharedPreferences(Helper.APP_PREFS, Context.MODE_PRIVATE);
|
||||||
boolean disableAnimatedEmoji = sharedpreferences.getBoolean(Helper.SET_DISABLE_ANIMATED_EMOJI, false);
|
boolean disableAnimatedEmoji = sharedpreferences.getBoolean(Helper.SET_DISABLE_ANIMATED_EMOJI, false);
|
||||||
if( emojisAccounts != null)
|
|
||||||
emojis.addAll(emojisAccounts);
|
if( emojisAccounts != null && emojisAccounts.size() > 0 ) {
|
||||||
|
final int[] i = {0};
|
||||||
|
for (final Emojis emoji : emojisAccounts) {
|
||||||
|
Glide.with(context)
|
||||||
|
.asDrawable()
|
||||||
|
.load(emoji.getUrl())
|
||||||
|
.listener(new RequestListener<Drawable>() {
|
||||||
|
@Override
|
||||||
|
public boolean onResourceReady(Drawable resource, Object model, Target<Drawable> target, DataSource dataSource, boolean isFirstResource) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean onLoadFailed(@Nullable GlideException e, Object model, Target target, boolean isFirstResource) {
|
||||||
|
i[0]++;
|
||||||
|
if( i[0] == (emojisAccounts.size())) {
|
||||||
|
listener.onRetrieveEmoji(status,false);
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
})
|
||||||
|
.into(new SimpleTarget<Drawable>() {
|
||||||
|
@Override
|
||||||
|
public void onResourceReady(@NonNull Drawable resource, @Nullable Transition<? super Drawable> transition) {
|
||||||
|
final String targetedEmoji = ":" + emoji.getShortcode() + ":";
|
||||||
|
if (displayNameSpan != null && displayNameSpan.toString().contains(targetedEmoji)) {
|
||||||
|
//emojis can be used several times so we have to loop
|
||||||
|
for (int startPosition = -1; (startPosition = displayNameSpan.toString().indexOf(targetedEmoji, startPosition + 1)) != -1; startPosition++) {
|
||||||
|
final int endPosition = startPosition + targetedEmoji.length();
|
||||||
|
if(endPosition <= displayNameSpan.toString().length() && endPosition >= startPosition) {
|
||||||
|
|
||||||
|
ImageSpan imageSpan;
|
||||||
|
if( !disableAnimatedEmoji) {
|
||||||
|
resource.setBounds(0,0,(int) Helper.convertDpToPixel(20, context),(int) Helper.convertDpToPixel(20, context));
|
||||||
|
resource.setVisible(true, true);
|
||||||
|
imageSpan = new ImageSpan(resource);
|
||||||
|
}else{
|
||||||
|
resource.setVisible(true, true);
|
||||||
|
Bitmap bitmap = drawableToBitmap(resource.getCurrent());
|
||||||
|
imageSpan = new ImageSpan(context,
|
||||||
|
Bitmap.createScaledBitmap(bitmap, (int) Helper.convertDpToPixel(20, context),
|
||||||
|
(int) Helper.convertDpToPixel(20, context), false));
|
||||||
|
}
|
||||||
|
displayNameSpan.setSpan(
|
||||||
|
imageSpan, startPosition,
|
||||||
|
endPosition, Spannable.SPAN_INCLUSIVE_EXCLUSIVE);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
i[0]++;
|
||||||
|
if( i[0] == (emojisAccounts.size())) {
|
||||||
|
status.setDisplayNameSpan(displayNameSpan);
|
||||||
|
listener.onRetrieveEmoji(status, false);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
if( emojis != null && emojis.size() > 0 ) {
|
if( emojis != null && emojis.size() > 0 ) {
|
||||||
final int[] i = {0};
|
final int[] i = {0};
|
||||||
for (final Emojis emoji : emojis) {
|
for (final Emojis emoji : emojis) {
|
||||||
|
@ -1144,30 +1203,6 @@ public class Status implements Parcelable{
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (displayNameSpan != null && displayNameSpan.toString().contains(targetedEmoji)) {
|
|
||||||
//emojis can be used several times so we have to loop
|
|
||||||
for (int startPosition = -1; (startPosition = displayNameSpan.toString().indexOf(targetedEmoji, startPosition + 1)) != -1; startPosition++) {
|
|
||||||
final int endPosition = startPosition + targetedEmoji.length();
|
|
||||||
if(endPosition <= displayNameSpan.toString().length() && endPosition >= startPosition) {
|
|
||||||
|
|
||||||
ImageSpan imageSpan;
|
|
||||||
if( !disableAnimatedEmoji) {
|
|
||||||
resource.setBounds(0,0,(int) Helper.convertDpToPixel(20, context),(int) Helper.convertDpToPixel(20, context));
|
|
||||||
resource.setVisible(true, true);
|
|
||||||
imageSpan = new ImageSpan(resource);
|
|
||||||
}else{
|
|
||||||
resource.setVisible(true, true);
|
|
||||||
Bitmap bitmap = drawableToBitmap(resource.getCurrent());
|
|
||||||
imageSpan = new ImageSpan(context,
|
|
||||||
Bitmap.createScaledBitmap(bitmap, (int) Helper.convertDpToPixel(20, context),
|
|
||||||
(int) Helper.convertDpToPixel(20, context), false));
|
|
||||||
}
|
|
||||||
displayNameSpan.setSpan(
|
|
||||||
imageSpan, startPosition,
|
|
||||||
endPosition, Spannable.SPAN_INCLUSIVE_EXCLUSIVE);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if (contentSpanCW != null && contentSpanCW.toString().contains(targetedEmoji)) {
|
if (contentSpanCW != null && contentSpanCW.toString().contains(targetedEmoji)) {
|
||||||
//emojis can be used several times so we have to loop
|
//emojis can be used several times so we have to loop
|
||||||
for (int startPosition = -1; (startPosition = contentSpanCW.toString().indexOf(targetedEmoji, startPosition + 1)) != -1; startPosition++) {
|
for (int startPosition = -1; (startPosition = contentSpanCW.toString().indexOf(targetedEmoji, startPosition + 1)) != -1; startPosition++) {
|
||||||
|
@ -1195,7 +1230,6 @@ public class Status implements Parcelable{
|
||||||
if( i[0] == (emojis.size())) {
|
if( i[0] == (emojis.size())) {
|
||||||
status.setContentSpan(contentSpan);
|
status.setContentSpan(contentSpan);
|
||||||
status.setContentSpanCW(contentSpanCW);
|
status.setContentSpanCW(contentSpanCW);
|
||||||
status.setDisplayNameSpan(displayNameSpan);
|
|
||||||
status.setEmojiFound(true);
|
status.setEmojiFound(true);
|
||||||
listener.onRetrieveEmoji(status, false);
|
listener.onRetrieveEmoji(status, false);
|
||||||
}
|
}
|
||||||
|
|
|
@ -38,6 +38,7 @@ import androidx.recyclerview.widget.LinearLayoutManager;
|
||||||
import androidx.recyclerview.widget.RecyclerView;
|
import androidx.recyclerview.widget.RecyclerView;
|
||||||
import android.text.Html;
|
import android.text.Html;
|
||||||
import android.text.method.LinkMovementMethod;
|
import android.text.method.LinkMovementMethod;
|
||||||
|
import android.util.Log;
|
||||||
import android.util.TypedValue;
|
import android.util.TypedValue;
|
||||||
import android.view.LayoutInflater;
|
import android.view.LayoutInflater;
|
||||||
import android.view.MenuItem;
|
import android.view.MenuItem;
|
||||||
|
@ -353,14 +354,10 @@ public class NotificationsListAdapter extends RecyclerView.Adapter implements On
|
||||||
if( notification.getAccount().getdisplayNameSpan() == null) {
|
if( notification.getAccount().getdisplayNameSpan() == null) {
|
||||||
holder.notification_type.setText(typeString);
|
holder.notification_type.setText(typeString);
|
||||||
notification.getAccount().setStored_displayname(notification.getAccount().getDisplay_name());
|
notification.getAccount().setStored_displayname(notification.getAccount().getDisplay_name());
|
||||||
notification.getAccount().setDisplay_name(typeString);
|
// notification.getAccount().setDisplay_name(typeString);
|
||||||
}else
|
}else
|
||||||
holder.notification_type.setText(notification.getAccount().getdisplayNameSpan(), TextView.BufferType.SPANNABLE);
|
holder.notification_type.setText(notification.getAccount().getdisplayNameSpan(), TextView.BufferType.SPANNABLE);
|
||||||
|
|
||||||
if( !notification.isEmojiFound()) {
|
|
||||||
notification.setEmojiFound(true);
|
|
||||||
notification.getAccount().makeAccountNameEmoji(context, NotificationsListAdapter.this, notification.getAccount());
|
|
||||||
}
|
|
||||||
if( imgH != null) {
|
if( imgH != null) {
|
||||||
holder.notification_type.setCompoundDrawablePadding((int)Helper.convertDpToPixel(5, context));
|
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));
|
imgH.setBounds(0, 0, (int) (20 * iconSizePercent / 100 * scale + 0.5f), (int) (20 * iconSizePercent / 100 * scale + 0.5f));
|
||||||
|
@ -442,8 +439,8 @@ public class NotificationsListAdapter extends RecyclerView.Adapter implements On
|
||||||
status.setClickable(true);
|
status.setClickable(true);
|
||||||
Status.transform(context, status);
|
Status.transform(context, status);
|
||||||
}
|
}
|
||||||
if( !status.isEmojiFound()) {
|
if( !notification.isEmojiFound()) {
|
||||||
status.setEmojiFound(true);
|
notification.setEmojiFound(true);
|
||||||
Notification.makeEmojis(context, NotificationsListAdapter.this, notification);
|
Notification.makeEmojis(context, NotificationsListAdapter.this, notification);
|
||||||
}
|
}
|
||||||
if( !status.isImageFound()) {
|
if( !status.isImageFound()) {
|
||||||
|
@ -1163,10 +1160,20 @@ public class NotificationsListAdapter extends RecyclerView.Adapter implements On
|
||||||
|
|
||||||
private void notifyNotificationChanged(Notification notification){
|
private void notifyNotificationChanged(Notification notification){
|
||||||
for (int i = 0; i < notificationsListAdapter.getItemCount(); i++) {
|
for (int i = 0; i < notificationsListAdapter.getItemCount(); i++) {
|
||||||
if (notificationsListAdapter.getItemAt(i) != null && notificationsListAdapter.getItemAt(i).getId().equals(notification.getId())) {
|
|
||||||
|
if (notificationsListAdapter.getItemAt(i) != null && notificationsListAdapter.getItemAt(i).getId().trim().compareTo(notification.getId().trim()) == 0) {
|
||||||
try {
|
try {
|
||||||
notificationsListAdapter.notifyItemChanged(i);
|
if( mRecyclerView != null) {
|
||||||
} catch (Exception ignored) { }
|
int finalI = i;
|
||||||
|
mRecyclerView.post(new Runnable() {
|
||||||
|
@Override
|
||||||
|
public void run() {
|
||||||
|
notificationsListAdapter.notifyItemChanged(finalI);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
} catch (Exception ignored) {}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1178,7 +1185,16 @@ public class NotificationsListAdapter extends RecyclerView.Adapter implements On
|
||||||
try {
|
try {
|
||||||
if( notifications.get(i).getStatus() != null){
|
if( notifications.get(i).getStatus() != null){
|
||||||
notifications.get(i).setStatus(status);
|
notifications.get(i).setStatus(status);
|
||||||
notificationsListAdapter.notifyItemChanged(i);
|
notifyItemChanged(i);
|
||||||
|
if( mRecyclerView != null) {
|
||||||
|
int finalI = i;
|
||||||
|
mRecyclerView.post(new Runnable() {
|
||||||
|
@Override
|
||||||
|
public void run() {
|
||||||
|
notificationsListAdapter.notifyItemChanged(finalI);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
} catch (Exception ignored) {}
|
} catch (Exception ignored) {}
|
||||||
|
@ -1375,13 +1391,12 @@ public class NotificationsListAdapter extends RecyclerView.Adapter implements On
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onRetrieveEmoji(Status status, boolean fromTranslation) {
|
public void onRetrieveEmoji(Status status, boolean fromTranslation) {
|
||||||
|
notifyNotificationWithActionChanged(status);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onRetrieveEmoji(Notification notification) {
|
public void onRetrieveEmoji(Notification notification) {
|
||||||
if( notification != null && notification.getStatus() != null) {
|
if( notification != null && notification.getStatus() != null) {
|
||||||
notification.getStatus().setEmojiFound(true);
|
|
||||||
notifyNotificationChanged(notification);
|
notifyNotificationChanged(notification);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -4225,9 +4225,19 @@ public class StatusListAdapter extends RecyclerView.Adapter implements OnPostAct
|
||||||
//noinspection ConstantConditions
|
//noinspection ConstantConditions
|
||||||
if (statusListAdapter.getItemAt(i) != null && statusListAdapter.getItemAt(i).getId().equals(status.getId())) {
|
if (statusListAdapter.getItemAt(i) != null && statusListAdapter.getItemAt(i).getId().equals(status.getId())) {
|
||||||
try {
|
try {
|
||||||
statusListAdapter.notifyItemChanged(i);
|
statuses.set(i, status);
|
||||||
|
if( mRecyclerView != null) {
|
||||||
|
int finalI = i;
|
||||||
|
mRecyclerView.post(new Runnable() {
|
||||||
|
@Override
|
||||||
|
public void run() {
|
||||||
|
statusListAdapter.notifyItemChanged(finalI);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
} catch (Exception ignored) {
|
} catch (Exception ignored) {
|
||||||
}
|
}
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -4240,9 +4250,18 @@ public class StatusListAdapter extends RecyclerView.Adapter implements OnPostAct
|
||||||
if (statusListAdapter.getItemAt(i) != null && statusListAdapter.getItemAt(i).getId().equals(status.getId())) {
|
if (statusListAdapter.getItemAt(i) != null && statusListAdapter.getItemAt(i).getId().equals(status.getId())) {
|
||||||
try {
|
try {
|
||||||
statuses.set(i, status);
|
statuses.set(i, status);
|
||||||
statusListAdapter.notifyItemChanged(i);
|
if( mRecyclerView != null) {
|
||||||
|
int finalI = i;
|
||||||
|
mRecyclerView.post(new Runnable() {
|
||||||
|
@Override
|
||||||
|
public void run() {
|
||||||
|
statusListAdapter.notifyItemChanged(finalI);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
} catch (Exception ignored) {
|
} catch (Exception ignored) {
|
||||||
}
|
}
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue