Send control message locally (#937)

pull/1709/head
SessionHero01 2 months ago committed by GitHub
parent b73520cb24
commit e190c332dc
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

@ -512,6 +512,30 @@ class GroupManagerV2Impl @Inject constructor(
configs.groupInfo.getName()
}
// Build a group update message to the group telling members someone has been promoted
val timestamp = clock.currentTimeMills()
val signature = SodiumUtilities.sign(
buildMemberChangeSignature(GroupUpdateMemberChangeMessage.Type.PROMOTED, timestamp),
adminKey
)
val message = GroupUpdated(
GroupUpdateMessage.newBuilder()
.setMemberChangeMessage(
GroupUpdateMemberChangeMessage.newBuilder()
.addAllMemberSessionIds(members.map { it.hexString })
.setType(GroupUpdateMemberChangeMessage.Type.PROMOTED)
.setAdminSignature(ByteString.copyFrom(signature))
)
.build()
).apply {
sentTimestamp = timestamp
}
// Insert the message locally immediately so we can see the incoming change
// The same message will be sent later to the group
storage.insertGroupInfoChange(message, group)
// Send out the promote message to the members concurrently
val promoteMessage = GroupUpdated(
GroupUpdateMessage.newBuilder()
@ -553,27 +577,8 @@ class GroupManagerV2Impl @Inject constructor(
.forEach(configs.groupMembers::set)
}
// Send a group update message to the group telling members someone has been promoted
val timestamp = clock.currentTimeMills()
val signature = SodiumUtilities.sign(
buildMemberChangeSignature(GroupUpdateMemberChangeMessage.Type.PROMOTED, timestamp),
adminKey
)
val message = GroupUpdated(
GroupUpdateMessage.newBuilder()
.setMemberChangeMessage(
GroupUpdateMemberChangeMessage.newBuilder()
.addAllMemberSessionIds(members.map { it.hexString })
.setType(GroupUpdateMemberChangeMessage.Type.PROMOTED)
.setAdminSignature(ByteString.copyFrom(signature))
)
.build()
).apply {
sentTimestamp = timestamp
}
MessageSender.sendAndAwait(message, Address.fromSerialized(group.hexString))
storage.insertGroupInfoChange(message, group)
}
}
/**
@ -949,8 +954,8 @@ class GroupManagerV2Impl @Inject constructor(
sentTimestamp = timestamp
}
MessageSender.sendAndAwait(message, Address.fromSerialized(groupId.hexString))
storage.insertGroupInfoChange(message, groupId)
MessageSender.sendAndAwait(message, Address.fromSerialized(groupId.hexString))
}
override suspend fun requestMessageDeletion(

Loading…
Cancel
Save