-
Notifications
You must be signed in to change notification settings - Fork 136
Description
Steps to reproduce
- Configure
delayed_leave_event_delay_msto a sufficiently large value like 90000 (so that you will be able to observe the confused app state for more than a couple seconds) - Join a call
- Disconnect uncleanly by e.g. disabling your network connection
- Rejoin the call
Outcome
What did you expect?
I should now see my own user media in the call interface once again, and the app should know that this is local user media.
What happened instead?
I see my own user media in the call interface, but the app thinks it is a remote media item. This causes a number of things:
- The video is not horizontally mirrored
- Opening the context menu presents local volume & local mute controls, which do nothing
- In the console there are error messages coming from the line where we try to set the local volume, because the participant object is actually a LocalParticipant, which does not have this
setVolumemethod - Probably other stuff relating to PiP and one-on-one layouts being broken
This heals itself as soon as the delayed event from the previous session is sent and the membership manager sends a new membership.
The root cause is this condition in the UserMedia class, according to which a faulty cast of participant$ will be made if the participant would be local but is initially undefined.
To fix this, we should remove the need for casting by properly splitting MatrixLivekitMember into two different LocalMatrixLivekitMember and RemoteMatrixLivekitMember types.
Operating system
No response
Browser information
No response
URL for webapp
No response
Will you send logs?
No