Skip to content

Commit

Permalink
Default values for member level and admin when no UUID.
Browse files Browse the repository at this point in the history
  • Loading branch information
alan-signal authored and cody-signal committed Sep 4, 2020
1 parent ed440a2 commit f88874b
Showing 1 changed file with 16 additions and 4 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -850,21 +850,33 @@ public int getGroupRevision() {
}

public boolean isAdmin(@NonNull Recipient recipient) {
return DecryptedGroupUtil.findMemberByUuid(getDecryptedGroup().getMembersList(), recipient.getUuid().get())
Optional<UUID> 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> 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)));
}
Expand Down

0 comments on commit f88874b

Please sign in to comment.