This is to make some room in the composer for voice messages. The hangup behaviour is intentionally lost by this change as the VOIP UX is intended to rely on dedicated hangup buttons instead.
Because as of React 16 order of unmount & re-mount is undefined
this was causing the possibility of the unmount running after
the willMount of the replacement RoomView, upsetting the state
of the singleton inside the js-sdk.
If we have widgets we're meant to be showing due to layout or because we reloaded the page (slightly different code paths) then we need to show those. This change fixes a bug in that where the layout wasn't being applied at the right moment in time so was never showing the widgets.
Seems to only be an issue if the layout state event was sent by someone other than you.
Turns out that if you want confetti from other people you would need to have rooms on "All Messages" or higher - this isn't as fun for those of us who have most of our rooms as Mentions Only.
Also hide video mute button on voice calls (awaiting clarification from design)
and fix mute keyboard shortcuts by moving them out of roomview & into
callview.
Currently just by adding /holdcall and /unholdcall slash commands
The only place the hold status of the call is currently represented
is when the call is a voice call and you're viewing a different room:
it's not wired up when you're viewing the room because that currently
uses the room status bar which it won't do with the new UI.
Also convert VideoFeed to typescript, and remove videoview because
it essentially just managed the fullscreen functionality, but we'll
want and 'on hold' representation (and probably chrome for hagnup etc)
in the fullscreen UI too, so let's just make CallView the thing that
gets fullscreened.