From 9a2532878759c475f63279e894ce536544faf09a Mon Sep 17 00:00:00 2001 From: adbenitez Date: Sat, 4 Jan 2025 12:50:25 +0100 Subject: [PATCH] avoid NullPointerException when using result of Rpc.getMsgReactions --- .../securesms/reactions/AddReactionView.java | 13 ++++++----- .../reactions/ReactionsDetailsFragment.java | 22 +++++++++++-------- 2 files changed, 21 insertions(+), 14 deletions(-) diff --git a/src/main/java/org/thoughtcrime/securesms/reactions/AddReactionView.java b/src/main/java/org/thoughtcrime/securesms/reactions/AddReactionView.java index 0f7118c0a1..3131ea1e55 100644 --- a/src/main/java/org/thoughtcrime/securesms/reactions/AddReactionView.java +++ b/src/main/java/org/thoughtcrime/securesms/reactions/AddReactionView.java @@ -16,6 +16,7 @@ import com.b44t.messenger.DcMsg; import com.b44t.messenger.rpc.Reactions; import com.b44t.messenger.rpc.Rpc; +import com.b44t.messenger.rpc.RpcException; import org.thoughtcrime.securesms.R; import org.thoughtcrime.securesms.connect.DcHelper; @@ -124,12 +125,14 @@ private String getSelfReaction() { String result = null; try { final Reactions reactions = rpc.getMsgReactions(dcContext.getAccountId(), msgToReactTo.getId()); - final Map reactionsByContact = reactions.getReactionsByContact(); - final String [] selfReactions = reactionsByContact.get(DcContact.DC_CONTACT_ID_SELF); - if (selfReactions != null && selfReactions.length > 0) { - result = selfReactions[0]; + if (reactions != null) { + final Map reactionsByContact = reactions.getReactionsByContact(); + final String [] selfReactions = reactionsByContact.get(DcContact.DC_CONTACT_ID_SELF); + if (selfReactions != null && selfReactions.length > 0) { + result = selfReactions[0]; + } } - } catch(Exception e) { + } catch(RpcException e) { e.printStackTrace(); } return result; diff --git a/src/main/java/org/thoughtcrime/securesms/reactions/ReactionsDetailsFragment.java b/src/main/java/org/thoughtcrime/securesms/reactions/ReactionsDetailsFragment.java index fa35d1448f..5d098cd16b 100644 --- a/src/main/java/org/thoughtcrime/securesms/reactions/ReactionsDetailsFragment.java +++ b/src/main/java/org/thoughtcrime/securesms/reactions/ReactionsDetailsFragment.java @@ -16,6 +16,7 @@ import com.b44t.messenger.DcContact; import com.b44t.messenger.DcContext; import com.b44t.messenger.DcEvent; +import com.b44t.messenger.rpc.Reactions; import com.b44t.messenger.rpc.RpcException; import org.thoughtcrime.securesms.ProfileActivity; @@ -85,17 +86,20 @@ private void refreshData() { int accId = DcHelper.getContext(requireActivity()).getAccountId(); try { - Map reactionsByContact = DcHelper.getRpc(requireActivity()).getMsgReactions(accId, msgId).getReactionsByContact(); + final Reactions reactions = DcHelper.getRpc(requireActivity()).getMsgReactions(accId, msgId); ArrayList> contactsReactions = new ArrayList<>(); - String[] selfReactions = reactionsByContact.remove(DcContact.DC_CONTACT_ID_SELF); - for (Integer contact: reactionsByContact.keySet()) { - for (String reaction: reactionsByContact.get(contact)) { - contactsReactions.add(new Pair<>(contact, reaction)); + if (reactions != null) { + Map reactionsByContact = reactions.getReactionsByContact(); + String[] selfReactions = reactionsByContact.remove(DcContact.DC_CONTACT_ID_SELF); + for (Integer contact: reactionsByContact.keySet()) { + for (String reaction: reactionsByContact.get(contact)) { + contactsReactions.add(new Pair<>(contact, reaction)); + } } - } - if (selfReactions != null) { - for (String reaction: selfReactions) { - contactsReactions.add(new Pair<>(DcContact.DC_CONTACT_ID_SELF, reaction)); + if (selfReactions != null) { + for (String reaction: selfReactions) { + contactsReactions.add(new Pair<>(DcContact.DC_CONTACT_ID_SELF, reaction)); + } } } adapter.changeData(contactsReactions);