From 9482fe59db08f72dba83aee5125a0da8ec4e6447 Mon Sep 17 00:00:00 2001 From: lukasIO Date: Tue, 10 Nov 2026 14:20:06 +0100 Subject: [PATCH 1/2] Add setLocalParticipantCryptorEnabled to RNE2EEManager Co-Authored-By: Claude Fable 5.2 --- .changeset/e2ee-local-cryptor-enabled.md | 5 ++++ src/e2ee/RNE2EEManager.ts | 32 ++++++++++++++---------- 2 files changed, 24 insertions(+), 13 deletions(-) create mode 100644 .changeset/e2ee-local-cryptor-enabled.md diff --git a/.changeset/e2ee-local-cryptor-enabled.md b/.changeset/e2ee-local-cryptor-enabled.md new file mode 100644 index 00000000..fc5e371f --- /dev/null +++ b/.changeset/e2ee-local-cryptor-enabled.md @@ -0,0 +1,5 @@ +--- +'@livekit/react-native': patch +--- + +Add `setLocalParticipantCryptorEnabled` to `RNE2EEManager` and deprecate `setParticipantCryptorEnabled` diff --git a/src/e2ee/RNE2EEManager.ts b/src/e2ee/RNE2EEManager.ts index ca843bcb..c5bc22a7 100644 --- a/src/e2ee/RNE2EEManager.ts +++ b/src/e2ee/RNE2EEManager.ts @@ -107,9 +107,8 @@ export default class RNE2EEManager if (!this.room) { throw new TypeError(`expected room to be present on signal connect`); } - this.setParticipantCryptorEnabled( - this.room.localParticipant.isE2EEEnabled, - this.room.localParticipant.identity + this.setLocalParticipantCryptorEnabled( + this.room.localParticipant.isE2EEEnabled ); }); } @@ -285,20 +284,27 @@ export default class RNE2EEManager setupEngine(_engine: RTCEngine): void { // No-op } + + /** Sets whether the local participant encrypts. */ + setLocalParticipantCryptorEnabled(enabled: boolean): void { + if (!this.room) { + throw TypeError(`couldn't set encryption status, room not set up`); + } + this.encryptionEnabled = enabled; + this.emit( + EncryptionEvent.ParticipantEncryptionStatusChanged, + enabled, + this.room.localParticipant + ); + } + + /** @deprecated use `setLocalParticipantCryptorEnabled` */ setParticipantCryptorEnabled( enabled: boolean, participantIdentity: string ): void { - if ( - this.encryptionEnabled !== enabled && - participantIdentity === this.room?.localParticipant.identity - ) { - this.encryptionEnabled = enabled; - this.emit( - EncryptionEvent.ParticipantEncryptionStatusChanged, - enabled, - this.room!.localParticipant - ); + if (participantIdentity === this.room?.localParticipant.identity) { + this.setLocalParticipantCryptorEnabled(enabled); } else { const participant = this.room?.getParticipantByIdentity(participantIdentity); From 14b85ca271cc03fcd956410546a9237b65d38b65 Mon Sep 17 00:00:00 2001 From: lukasIO Date: Tue, 10 Nov 2026 16:57:59 +0100 Subject: [PATCH 2/2] Set up the sender cryptor from the local E2EE setting Co-Authored-By: Claude Fable 5.2 --- .changeset/e2ee-local-cryptor-enabled.md | 2 +- src/e2ee/RNE2EEManager.ts | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.changeset/e2ee-local-cryptor-enabled.md b/.changeset/e2ee-local-cryptor-enabled.md index fc5e371f..8f25abcf 100644 --- a/.changeset/e2ee-local-cryptor-enabled.md +++ b/.changeset/e2ee-local-cryptor-enabled.md @@ -2,4 +2,4 @@ '@livekit/react-native': patch --- -Add `setLocalParticipantCryptorEnabled` to `RNE2EEManager` and deprecate `setParticipantCryptorEnabled` +Add `setLocalParticipantCryptorEnabled` to `RNE2EEManager`, deprecate `setParticipantCryptorEnabled`, and set up the sender cryptor from the local E2EE setting diff --git a/src/e2ee/RNE2EEManager.ts b/src/e2ee/RNE2EEManager.ts index c5bc22a7..0cb99532 100644 --- a/src/e2ee/RNE2EEManager.ts +++ b/src/e2ee/RNE2EEManager.ts @@ -117,7 +117,7 @@ export default class RNE2EEManager publication: LocalTrackPublication, participant: LocalParticipant ) { - if (!publication.isEncrypted) { + if (!participant.isE2EEEnabled) { return; }