Skip to content

Commit

Permalink
Placeholder for #2164
Browse files Browse the repository at this point in the history
Squashed commit of the following:

commit b098643
Author: Jakub Zalewski <[email protected]>
Date:   Fri Jan 24 14:39:34 2025 +0100

    Clone snapshot to avoid mangling it in the timeline
  • Loading branch information
jakzale committed Jan 27, 2025
1 parent aea106a commit 9bb1ab9
Showing 1 changed file with 16 additions and 14 deletions.
30 changes: 16 additions & 14 deletions packages/sdk/src/streamStateView_Mls.ts
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ export class StreamStateView_Mls extends StreamStateView_AbstractContent {
groupInfoMessage?: Uint8Array
members: { [key: string]: PlainMessage<MemberPayload_Snapshot_Mls_Member> } = {}
epochSecrets: { [key: string]: Uint8Array } = {}
pendingKeyPackages: { [key: string]: MemberPayload_KeyPackage } = {}
pendingKeyPackages: { [key: string]: PlainMessage<MemberPayload_KeyPackage> } = {}
welcomeMessagesMiniblockNum: { [key: string]: bigint } = {}

constructor(streamId: string) {
Expand All @@ -28,12 +28,14 @@ export class StreamStateView_Mls extends StreamStateView_AbstractContent {
}

applySnapshot(content: MemberPayload_Snapshot_Mls): void {
this.externalGroupSnapshot = content.externalGroupSnapshot
this.groupInfoMessage = content.groupInfoMessage
this.members = content.members
this.epochSecrets = content.epochSecrets
this.pendingKeyPackages = content.pendingKeyPackages
this.welcomeMessagesMiniblockNum = content.welcomeMessagesMiniblockNum
// Clone the protobuf to prevent mangling it
const cloned = content.clone()
this.externalGroupSnapshot = cloned.externalGroupSnapshot
this.groupInfoMessage = cloned.groupInfoMessage
this.members = cloned.members
this.epochSecrets = cloned.epochSecrets
this.pendingKeyPackages = cloned.pendingKeyPackages
this.welcomeMessagesMiniblockNum = cloned.welcomeMessagesMiniblockNum
}

appendEvent(
Expand All @@ -48,27 +50,27 @@ export class StreamStateView_Mls extends StreamStateView_AbstractContent {
case 'initializeGroup':
this.externalGroupSnapshot = mlsEvent.content.value.externalGroupSnapshot
this.groupInfoMessage = mlsEvent.content.value.groupInfoMessage
this.members[event.creatorUserId] = {
signaturePublicKeys: [mlsEvent.content.value.signaturePublicKey],
}
this.addSignaturePublicKey(
event.creatorUserId,
mlsEvent.content.value.clone().signaturePublicKey,
)
break
case 'externalJoin':
this.addSignaturePublicKey(
event.creatorUserId,
mlsEvent.content.value.signaturePublicKey,
mlsEvent.content.value.clone().signaturePublicKey,
)
break
case 'epochSecrets':
for (const secret of mlsEvent.content.value.secrets) {
if (!this.epochSecrets[secret.epoch.toString()]) {
this.epochSecrets[secret.epoch.toString()] = secret.secret
this.epochSecrets[secret.epoch.toString()] = secret.clone().secret
}
}
break
case 'keyPackage':
this.pendingKeyPackages[bytesToHex(mlsEvent.content.value.signaturePublicKey)] =
mlsEvent.content.value

mlsEvent.content.value.clone()
break
case 'welcomeMessage':
for (const signatureKey of mlsEvent.content.value.signaturePublicKeys) {
Expand Down

0 comments on commit 9bb1ab9

Please sign in to comment.