Add support for announcement groups.

This commit is contained in:
Greyson Parrelli
2021-07-23 16:22:08 -04:00
parent 1a56924a56
commit 25234496bf
74 changed files with 1109 additions and 208 deletions

View File

@@ -97,6 +97,19 @@ public final class LiveRecipientCache {
return live;
}
/**
* Handles remapping cache entries when recipients are merged.
*/
public void remap(@NonNull RecipientId oldId, @NonNull RecipientId newId) {
synchronized (recipients) {
if (recipients.containsKey(newId)) {
recipients.put(oldId, recipients.get(newId));
} else {
recipients.remove(oldId);
}
}
}
/**
* Adds a recipient to the cache if we don't have an entry. This will also update a cache entry
* if the provided recipient is resolved, or if the existing cache entry is unresolved.

View File

@@ -111,6 +111,7 @@ public class Recipient {
private final Capability groupsV2Capability;
private final Capability groupsV1MigrationCapability;
private final Capability senderKeyCapability;
private final Capability announcementGroupCapability;
private final InsightsBannerTier insightsBannerTier;
private final byte[] storageId;
private final MentionSetting mentionSetting;
@@ -360,6 +361,7 @@ public class Recipient {
this.groupsV2Capability = Capability.UNKNOWN;
this.groupsV1MigrationCapability = Capability.UNKNOWN;
this.senderKeyCapability = Capability.UNKNOWN;
this.announcementGroupCapability = Capability.UNKNOWN;
this.storageId = null;
this.mentionSetting = MentionSetting.ALWAYS_NOTIFY;
this.wallpaper = null;
@@ -411,6 +413,7 @@ public class Recipient {
this.groupsV2Capability = details.groupsV2Capability;
this.groupsV1MigrationCapability = details.groupsV1MigrationCapability;
this.senderKeyCapability = details.senderKeyCapability;
this.announcementGroupCapability = details.announcementGroupCapability;
this.storageId = details.storageId;
this.mentionSetting = details.mentionSetting;
this.wallpaper = details.wallpaper;
@@ -903,6 +906,10 @@ public class Recipient {
return senderKeyCapability;
}
public @NonNull Capability getAnnouncementGroupCapability() {
return announcementGroupCapability;
}
/**
* True if this recipient supports the message retry system, or false if we should use the legacy session reset system.
*/

View File

@@ -64,6 +64,7 @@ public class RecipientDetails {
final Recipient.Capability groupsV2Capability;
final Recipient.Capability groupsV1MigrationCapability;
final Recipient.Capability senderKeyCapability;
final Recipient.Capability announcementGroupCapability;
final InsightsBannerTier insightsBannerTier;
final byte[] storageId;
final MentionSetting mentionSetting;
@@ -119,6 +120,7 @@ public class RecipientDetails {
this.groupsV2Capability = settings.getGroupsV2Capability();
this.groupsV1MigrationCapability = settings.getGroupsV1MigrationCapability();
this.senderKeyCapability = settings.getSenderKeyCapability();
this.announcementGroupCapability = settings.getAnnouncementGroupCapability();
this.insightsBannerTier = settings.getInsightsBannerTier();
this.storageId = settings.getStorageId();
this.mentionSetting = settings.getMentionSetting();
@@ -174,6 +176,7 @@ public class RecipientDetails {
this.groupsV2Capability = Recipient.Capability.UNKNOWN;
this.groupsV1MigrationCapability = Recipient.Capability.UNKNOWN;
this.senderKeyCapability = Recipient.Capability.UNKNOWN;
this.announcementGroupCapability = Recipient.Capability.UNKNOWN;
this.storageId = null;
this.mentionSetting = MentionSetting.ALWAYS_NOTIFY;
this.wallpaper = null;