From e7c018283a2f382d6d62a2bdecc17a85f43ef630 Mon Sep 17 00:00:00 2001 From: Cody Henthorne Date: Thu, 15 Feb 2024 16:48:31 -0500 Subject: [PATCH] Perform directory refresh after a PNI invite accept. --- .../securesms/groups/v2/ProfileKeySet.java | 4 ---- .../v2/processing/GroupsV2StateProcessor.java | 15 +++++++++++++++ 2 files changed, 15 insertions(+), 4 deletions(-) diff --git a/app/src/main/java/org/thoughtcrime/securesms/groups/v2/ProfileKeySet.java b/app/src/main/java/org/thoughtcrime/securesms/groups/v2/ProfileKeySet.java index 7bc24243fa..993476b348 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/groups/v2/ProfileKeySet.java +++ b/app/src/main/java/org/thoughtcrime/securesms/groups/v2/ProfileKeySet.java @@ -61,10 +61,6 @@ public final class ProfileKeySet { for (DecryptedMember member : change.promotePendingPniAciMembers) { addMemberKey(member, editor); } - - for (DecryptedMember member : change.promotePendingPniAciMembers) { - addMemberKey(member, editor); - } } /** diff --git a/app/src/main/java/org/thoughtcrime/securesms/groups/v2/processing/GroupsV2StateProcessor.java b/app/src/main/java/org/thoughtcrime/securesms/groups/v2/processing/GroupsV2StateProcessor.java index d4178b86a9..76c2d69772 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/groups/v2/processing/GroupsV2StateProcessor.java +++ b/app/src/main/java/org/thoughtcrime/securesms/groups/v2/processing/GroupsV2StateProcessor.java @@ -35,6 +35,7 @@ import org.thoughtcrime.securesms.groups.GroupsV2Authorization; import org.thoughtcrime.securesms.groups.v2.ProfileKeySet; import org.thoughtcrime.securesms.jobmanager.Job; import org.thoughtcrime.securesms.jobs.AvatarGroupsV2DownloadJob; +import org.thoughtcrime.securesms.jobs.DirectoryRefreshJob; import org.thoughtcrime.securesms.jobs.LeaveGroupV2Job; import org.thoughtcrime.securesms.jobs.RequestGroupV2InfoJob; import org.thoughtcrime.securesms.jobs.RetrieveProfileJob; @@ -352,6 +353,10 @@ public class GroupsV2StateProcessor { } profileAndMessageHelper.persistLearnedProfileKeys(inputGroupState); + if (!signedGroupChange.promotePendingPniAciMembers.isEmpty()) { + ApplicationDependencies.getJobManager().add(new DirectoryRefreshJob(false)); + } + GlobalGroupState remainingWork = advanceGroupStateResult.getNewGlobalGroupState(); if (remainingWork.getServerHistory().size() > 0) { info(String.format(Locale.US, "There are more revisions on the server for this group, scheduling for later, V[%d..%d]", newLocalState.revision + 1, remainingWork.getLatestRevisionNumber())); @@ -443,6 +448,7 @@ public class GroupsV2StateProcessor { ProfileKeySet profileKeys = new ProfileKeySet(); DecryptedGroup finalState = localState; GlobalGroupState finalGlobalGroupState = inputGroupState; + boolean performCdsLookup = false; boolean hasMore = true; @@ -474,8 +480,13 @@ public class GroupsV2StateProcessor { if (entry.getGroup() != null) { profileKeys.addKeysFromGroupState(entry.getGroup()); } + if (entry.getChange() != null) { profileKeys.addKeysFromGroupChange(entry.getChange()); + + if (!entry.getChange().promotePendingPniAciMembers.isEmpty()) { + performCdsLookup = true; + } } } @@ -496,6 +507,10 @@ public class GroupsV2StateProcessor { profileAndMessageHelper.persistLearnedProfileKeys(profileKeys); + if (performCdsLookup) { + ApplicationDependencies.getJobManager().add(new DirectoryRefreshJob(false)); + } + if (finalGlobalGroupState.getServerHistory().size() > 0) { info(String.format(Locale.US, "There are more revisions on the server for this group, scheduling for later, V[%d..%d]", finalState.revision + 1, finalGlobalGroupState.getLatestRevisionNumber())); ApplicationDependencies.getJobManager().add(new RequestGroupV2InfoJob(groupId, finalGlobalGroupState.getLatestRevisionNumber()));