Fix improperly caching notifyType on Recipients (#965)

* fix: perform clear member roles before setting new roles to clear out old members

* fix: hopefully add somewhere notifyType wasn't being carried over

fixes #945
This commit is contained in:
Harris
2022-09-13 14:15:35 +10:00
committed by GitHub
parent 7d186c198e
commit 29124f36b6
5 changed files with 27 additions and 7 deletions

View File

@@ -71,7 +71,8 @@ interface StorageProtocol {
fun hasBackgroundGroupAddJob(groupJoinUrl: String): Boolean
fun setOpenGroupServerMessageID(messageID: Long, serverID: Long, threadID: Long, isSms: Boolean)
fun getOpenGroup(room: String, server: String): OpenGroup?
fun addGroupMember(member: GroupMember)
fun addGroupMemberRole(member: GroupMember)
fun clearGroupMemberRoles(groupId: String)
// Open Group Public Keys
fun getOpenGroupPublicKey(server: String): String?

View File

@@ -134,18 +134,20 @@ class OpenGroupPoller(private val server: String, private val executorService: S
storage.setUserCount(roomToken, server, pollInfo.activeUsers)
// - Moderators
storage.clearGroupMemberRoles(groupId)
pollInfo.details?.moderators?.forEach {
storage.addGroupMember(GroupMember(groupId, it, GroupMemberRole.MODERATOR))
storage.addGroupMemberRole(GroupMember(groupId, it, GroupMemberRole.MODERATOR))
}
pollInfo.details?.hiddenModerators?.forEach {
storage.addGroupMember(GroupMember(groupId, it, GroupMemberRole.HIDDEN_MODERATOR))
storage.addGroupMemberRole(GroupMember(groupId, it, GroupMemberRole.HIDDEN_MODERATOR))
}
// - Admins
pollInfo.details?.admins?.forEach {
storage.addGroupMember(GroupMember(groupId, it, GroupMemberRole.ADMIN))
storage.addGroupMemberRole(GroupMember(groupId, it, GroupMemberRole.ADMIN))
}
pollInfo.details?.hiddenAdmins?.forEach {
storage.addGroupMember(GroupMember(groupId, it, GroupMemberRole.HIDDEN_ADMIN))
storage.addGroupMemberRole(GroupMember(groupId, it, GroupMemberRole.HIDDEN_ADMIN))
}
}

View File

@@ -224,6 +224,7 @@ public class Recipient implements RecipientModifiedListener {
Recipient.this.profileSharing = result.profileSharing;
Recipient.this.unidentifiedAccessMode = result.unidentifiedAccessMode;
Recipient.this.forceSmsSelection = result.forceSmsSelection;
Recipient.this.notifyType = result.notifyType;
Recipient.this.participants.clear();
Recipient.this.participants.addAll(result.participants);