Fix issue #267 - Crash with reactions

This commit is contained in:
Thomas 2022-07-20 14:24:09 +02:00
parent 25b18e390a
commit 6876b75366

View file

@ -345,6 +345,9 @@ public class StatusAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder>
}).setOnEmojiClickListener((emoji, imageView) -> { }).setOnEmojiClickListener((emoji, imageView) -> {
String emojiStr = imageView.getUnicode(); String emojiStr = imageView.getUnicode();
boolean alreadyAdded = false; boolean alreadyAdded = false;
if (status.pleroma == null || status.pleroma.emoji_reactions == null) {
return;
}
for (Reaction reaction : status.pleroma.emoji_reactions) { for (Reaction reaction : status.pleroma.emoji_reactions) {
if (reaction.name.compareTo(emojiStr) == 0) { if (reaction.name.compareTo(emojiStr) == 0) {
alreadyAdded = true; alreadyAdded = true;
@ -387,12 +390,14 @@ public class StatusAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder>
GridView gridView = new GridView(context); GridView gridView = new GridView(context);
gridView.setAdapter(new EmojiAdapter(emojis.get(BaseMainActivity.currentInstance))); gridView.setAdapter(new EmojiAdapter(emojis.get(BaseMainActivity.currentInstance)));
gridView.setNumColumns(5); gridView.setNumColumns(5);
AlertDialog finalAlertDialogEmoji = alertDialogEmoji;
gridView.setOnItemClickListener((parent, view, index, id) -> { gridView.setOnItemClickListener((parent, view, index, id) -> {
String emojiStr = emojis.get(BaseMainActivity.currentInstance).get(index).shortcode; String emojiStr = emojis.get(BaseMainActivity.currentInstance).get(index).shortcode;
String url = emojis.get(BaseMainActivity.currentInstance).get(index).url; String url = emojis.get(BaseMainActivity.currentInstance).get(index).url;
String static_url = emojis.get(BaseMainActivity.currentInstance).get(index).static_url; String static_url = emojis.get(BaseMainActivity.currentInstance).get(index).static_url;
boolean alreadyAdded = false; boolean alreadyAdded = false;
if (status.pleroma == null || status.pleroma.emoji_reactions == null) {
return;
}
for (Reaction reaction : status.pleroma.emoji_reactions) { for (Reaction reaction : status.pleroma.emoji_reactions) {
if (reaction.name.compareTo(emojiStr) == 0) { if (reaction.name.compareTo(emojiStr) == 0) {
alreadyAdded = true; alreadyAdded = true;
@ -420,9 +425,6 @@ public class StatusAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder>
} else { } else {
actionsVM.addReaction(BaseMainActivity.currentInstance, BaseMainActivity.currentToken, statusToDeal.id, emojiStr); actionsVM.addReaction(BaseMainActivity.currentInstance, BaseMainActivity.currentToken, statusToDeal.id, emojiStr);
} }
if (finalAlertDialogEmoji != null) {
finalAlertDialogEmoji.dismiss();
}
}); });
gridView.setPadding(paddingDp, paddingDp, paddingDp, paddingDp); gridView.setPadding(paddingDp, paddingDp, paddingDp, paddingDp);
builder.setView(gridView); builder.setView(gridView);
@ -432,7 +434,7 @@ public class StatusAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder>
textView.setPadding(paddingDp, paddingDp, paddingDp, paddingDp); textView.setPadding(paddingDp, paddingDp, paddingDp, paddingDp);
builder.setView(textView); builder.setView(textView);
} }
alertDialogEmoji = builder.show(); builder.show();
}); });
} }
@ -893,7 +895,9 @@ public class StatusAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder>
holder.binding.username.setCompoundDrawables(null, null, null, null); holder.binding.username.setCompoundDrawables(null, null, null, null);
} }
if (statusToDeal.account.bot) { if (statusToDeal.account.bot) {
holder.binding.botIcon.setVisibility(View.VISIBLE);
} else { } else {
holder.binding.botIcon.setVisibility(View.GONE); holder.binding.botIcon.setVisibility(View.GONE);
} }