From f88874bec8df17766764cc35ef42ac42c1bec7fa Mon Sep 17 00:00:00 2001 From: Alan Evans Date: Thu, 3 Sep 2020 12:28:11 -0300 Subject: [PATCH] Default values for member level and admin when no UUID. --- .../securesms/database/GroupDatabase.java | 20 +++++++++++++++---- 1 file changed, 16 insertions(+), 4 deletions(-) diff --git a/app/src/main/java/org/thoughtcrime/securesms/database/GroupDatabase.java b/app/src/main/java/org/thoughtcrime/securesms/database/GroupDatabase.java index 975bfa714a..3ad8510e43 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/database/GroupDatabase.java +++ b/app/src/main/java/org/thoughtcrime/securesms/database/GroupDatabase.java @@ -850,21 +850,33 @@ public final class GroupDatabase extends Database { } public boolean isAdmin(@NonNull Recipient recipient) { - return DecryptedGroupUtil.findMemberByUuid(getDecryptedGroup().getMembersList(), recipient.getUuid().get()) + Optional uuid = recipient.getUuid(); + + if (!uuid.isPresent()) { + return false; + } + + return DecryptedGroupUtil.findMemberByUuid(getDecryptedGroup().getMembersList(), uuid.get()) .transform(t -> t.getRole() == Member.Role.ADMINISTRATOR) .or(false); } public MemberLevel memberLevel(@NonNull Recipient recipient) { + Optional uuid = recipient.getUuid(); + + if (!uuid.isPresent()) { + return MemberLevel.NOT_A_MEMBER; + } + DecryptedGroup decryptedGroup = getDecryptedGroup(); - return DecryptedGroupUtil.findMemberByUuid(decryptedGroup.getMembersList(), recipient.getUuid().get()) + return DecryptedGroupUtil.findMemberByUuid(decryptedGroup.getMembersList(), uuid.get()) .transform(member -> member.getRole() == Member.Role.ADMINISTRATOR ? MemberLevel.ADMINISTRATOR : MemberLevel.FULL_MEMBER) - .or(() -> DecryptedGroupUtil.findPendingByUuid(decryptedGroup.getPendingMembersList(), recipient.getUuid().get()) + .or(() -> DecryptedGroupUtil.findPendingByUuid(decryptedGroup.getPendingMembersList(), uuid.get()) .transform(m -> MemberLevel.PENDING_MEMBER) - .or(() -> DecryptedGroupUtil.findRequestingByUuid(decryptedGroup.getRequestingMembersList(), recipient.getUuid().get()) + .or(() -> DecryptedGroupUtil.findRequestingByUuid(decryptedGroup.getRequestingMembersList(), uuid.get()) .transform(m -> MemberLevel.REQUESTING_MEMBER) .or(MemberLevel.NOT_A_MEMBER))); }