feat(rn-dogfood): align e2ee meeting flow with react-dogfood - #2456
Conversation
- choose encryption on the join screen, before the call is created, so a new call is encrypted from the start and never recreated - keep the shared key per meeting (route + lobby) instead of a persisted global key; ringing calls keep the persisted passphrase on the Call screen - lobby card: creator key with regenerate/copy link, joiner "Enabled by" banner or key entry, Join gated until a key is set, warning when a key is brought to an existing unencrypted call - carry the key in invite links and encrypted deep links - limit the e2ee UI to the pronto environments
|
Important Review skippedAuto reviews are disabled on base/target branches other than the default branch. Please check the settings in the CodeRabbit UI or the ⚙️ Run configurationConfiguration used: defaults Review profile: CHILL Plan: Advanced Run ID: You can disable this status message by setting the Use the checkbox below for a quick retry:
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
Bundle sizeBuilt package output. Sizes in KB; delta vs
|
💡 Overview
Follow-up to #2427. Aligns the RN dogfood E2EE meeting flow with react-dogfood: the key belongs to one meeting instead of a persisted global passphrase, and encryption is chosen on the join screen before the call is created, so a new call is encrypted from the start and never recreated.
📝 Implementation notes
MeetingScreenvia route params. It is not persisted.LobbyEncryption): the creator sees the key with regenerate and Copy link. A joiner sees "Enabled by X", or a key field when the link had no key. Join stays disabled until a key is set. If a key is brought to an existing unencrypted call, a warning is shown and the join goes ahead in the clear instead of being rejected.LobbyE2EEContextprovided byMeetingScreen/GuestMeetingScreenfeedsMeetingUI(attachE2EE(call, key)), the invite link, and the in-call key-mismatch banner.deeplinkCallId$becomesdeeplinkCall$({ callId, encryptionKey? }), so anencryption_keylink opens that one meeting instead of writing MMKV.MeetingUIlifecycle tests updated. Added tests for invite links and for a key brought to an unencrypted call.