Commit graph

227 commits

Author SHA1 Message Date
Šimon Brandner
fbb8cfb188
Rework how media element are handled
Signed-off-by: Šimon Brandner <simon.bra.ag@gmail.com>
2021-04-23 19:41:55 +02:00
David Baker
59c5ab31de Support MSC3086 asserted identity 2021-04-19 20:30:51 +01:00
Šimon Brandner
758112dda9
Add missing somicolons
Signed-off-by: Šimon Brandner <simon.bra.ag@gmail.com>
2021-04-19 07:42:32 +02:00
Šimon Brandner
2cfd4659e1
Add separate mx_CallView_content class
Signed-off-by: Šimon Brandner <simon.bra.ag@gmail.com>
2021-04-16 12:50:23 +02:00
Šimon Brandner
33fd09d777
Make private
Signed-off-by: Šimon Brandner <simon.bra.ag@gmail.com>
2021-04-13 20:21:03 +02:00
Šimon Brandner
56b15edc58
Properly handle media
This might have resulted in the wrong speaker being used or worse

Signed-off-by: Šimon Brandner <simon.bra.ag@gmail.com>
2021-04-12 16:19:05 +02:00
Šimon Brandner
a3da5ee6e6
Don't play audio if the feed is local
Signed-off-by: Šimon Brandner <simon.bra.ag@gmail.com>
2021-04-08 14:32:53 +02:00
Šimon Brandner
adb0877591
Merge branch 'develop' into feed 2021-04-07 19:17:35 +02:00
Šimon Brandner
202ead40c4
Merge branch 'develop' into resizable-call-view 2021-04-04 11:35:26 +02:00
Šimon Brandner
16e6f84f89
Display local feeds when connecting
Signed-off-by: Šimon Brandner <simon.bra.ag@gmail.com>
2021-04-04 09:04:17 +02:00
Šimon Brandner
9324dec0d6
Rename audioOnly to videoMuted
This makes more sense and will match a possible mute events MSC

Signed-off-by: Šimon Brandner <simon.bra.ag@gmail.com>
2021-04-04 08:50:25 +02:00
Šimon Brandner
346784e530
Add getMember() to CallFeed
Signed-off-by: Šimon Brandner <simon.bra.ag@gmail.com>
2021-04-04 08:33:53 +02:00
Šimon Brandner
c5952f7e23
Remove VideoFeedType
Signed-off-by: Šimon Brandner <simon.bra.ag@gmail.com>
2021-04-04 08:02:51 +02:00
Šimon Brandner
4c64dacba4
Fix class
Signed-off-by: Šimon Brandner <simon.bra.ag@gmail.com>
2021-04-03 09:16:08 +02:00
Šimon Brandner
27ec3af03a
Merge branch 'develop' into feed
Looking forward to merging again! :D

Signed-off-by: Šimon Brandner <simon.bra.ag@gmail.com>
2021-04-03 09:15:55 +02:00
David Baker
82ba546142 WIP attended transfer 2021-03-25 19:56:21 +00:00
Šimon Brandner
9a2036c212
Add semicolons
Signed-off-by: Šimon Brandner <simon.bra.ag@gmail.com>
2021-03-22 07:44:37 +01:00
Šimon Brandner
b257c25c2c
Make functions private
Signed-off-by: Šimon Brandner <simon.bra.ag@gmail.com>
2021-03-22 07:40:36 +01:00
Šimon Brandner
0917730f48
Merge branch 'feed' into feed-audio
Signed-off-by: Šimon Brandner <simon.bra.ag@gmail.com>
2021-03-17 16:14:59 +01:00
Šimon Brandner
431a2c033d
Merge branch 'develop' into feed
Signed-off-by: Šimon Brandner <simon.bra.ag@gmail.com>
2021-03-17 16:13:40 +01:00
Šimon Brandner
6c5a301094
Make sure video plays onNewStream
Signed-off-by: Šimon Brandner <simon.bra.ag@gmail.com>
2021-03-17 16:10:50 +01:00
Šimon Brandner
ec824c714a
Make sure video plays onNewStream
Signed-off-by: Šimon Brandner <simon.bra.ag@gmail.com>
2021-03-17 16:09:58 +01:00
Šimon Brandner
787a62846e
Merge branch 'develop' into resizable-call-view
Signed-off-by: Šimon Brandner <simon.bra.ag@gmail.com>
2021-03-16 07:55:56 +01:00
Šimon Brandner
8410411236
Handle audio
Signed-off-by: Šimon Brandner <simon.bra.ag@gmail.com>
2021-03-10 12:26:59 +01:00
Šimon Brandner
bb13dc49a6
Make CallView use CallFeed
Signed-off-by: Šimon Brandner <simon.bra.ag@gmail.com>
2021-03-10 12:18:57 +01:00
Šimon Brandner
62e9d7f46b
Cleaner imports
Signed-off-by: Šimon Brandner <simon.bra.ag@gmail.com>
2021-03-10 09:24:47 +01:00
Travis Ralston
71b8959d3c
Apply suggestions from code review
Co-authored-by: J. Ryan Stinnett <jryans@gmail.com>
2021-03-09 09:36:17 -07:00
Travis Ralston
41576954fd Batch of views getting replaceableComponent decorators 2021-03-08 20:23:54 -07:00
Šimon Brandner
35a5442e0d
Increase minHeight
This is needed for on hold. Otherwise it feels like too much, tbc

Signed-off-by: Šimon Brandner <simon.bra.ag@gmail.com>
2021-03-07 15:05:13 +01:00
Šimon Brandner
c638ced21e
Remove unused consts
Signed-off-by: Šimon Brandner <simon.bra.ag@gmail.com>
2021-03-03 16:59:39 +01:00
Šimon Brandner
d244ea3b14
Don't use onResize
Signed-off-by: Šimon Brandner <simon.bra.ag@gmail.com>
2021-03-03 16:42:27 +01:00
Šimon Brandner
5877b3e00d
Add resizing
Signed-off-by: Šimon Brandner <simon.bra.ag@gmail.com>
2021-03-02 20:33:19 +01:00
Šimon Brandner
69cdbef3d6
Remove maxHeight prop
Signed-off-by: Šimon Brandner <simon.bra.ag@gmail.com>
2021-03-02 20:31:39 +01:00
Šimon Brandner
4e9d19d3b0
Pass resizeNotifier into CallViewForARoom
Signed-off-by: Šimon Brandner <simon.bra.ag@gmail.com>
2021-03-02 14:09:11 +01:00
David Baker
b58ce4ccfc Null check for maxHeight in call view 2021-02-26 14:00:02 +00:00
David Baker
196507a730 VoIP virtual rooms, mk II
Does a thirdparty protocol lookup to the homeserver to get the
corresponding native/virtual user for a matrix ID. Stores the
mappings in room account data. Involves some slightly nasty workarounds
for that fact that room account data has no local echo.
2021-02-12 20:55:54 +00:00
J. Ryan Stinnett
4920614ca5
Merge pull request #5529 from SimonBrandner/hide-local-feed
Hide local video if it is muted
2021-01-28 12:49:52 +00:00
J. Ryan Stinnett
d78bc98521 Resolve linting errors after upgrades 2021-01-27 12:42:39 +00:00
David Baker
0a90c982c7 Add VoIP user mapper
The accompanying element-web PR with the config documentation should
explain what this is & why. Internally, this breaks the assumption
that call.roomId is the room that the call appears in for the user.
call.roomId may now be a 'virtual' room while the react SDK actually
displays it in a different room. React SDK always stores the calls
under the user-facing rooms, and provides a function to get the
user-facing room for a given call.
2021-01-21 19:20:35 +00:00
David Baker
4b43929aa3 Add in-call dialpad for DTMF sending
Requires https://github.com/matrix-org/matrix-js-sdk/pull/1573
2021-01-04 20:01:43 +00:00
Šimon Brandner
86cb7f99ce
Hide localVideoFeed if video is muted
Signed-off-by: Šimon Brandner <simon.bra.ag@gmail.com>
2020-12-30 08:46:54 +01:00
David Baker
452fbb076b Add a dialpad UI for PSTN lookup
Queries the homeserver for PSTN protocol support, and if found,
the add-room button on the DM rooms list section opens a context
menu instead with a 'dial pad' option as well as the current 'start chat'
dialog. Entering a number into this and pressing dial performs
a thirdparty user query for the given string and starts a DM with that
user.
2020-12-23 19:02:01 +00:00
David Baker
aee861956c Remove secondary call avatar
and change 'paused' to 'on hold'
2020-12-18 19:40:57 +00:00
David Baker
eab764a3c8 Vary resume link text
Use 'Switch' if unholding that call would hold another
2020-12-18 19:35:41 +00:00
J. Ryan Stinnett
8350b4152b Import from src in IncomingCallBox.tsx 2020-12-17 17:16:00 +00:00
David Baker
80be46bc32 Fix vertical scrolling in videoview
Fixes https://github.com/vector-im/element-web/issues/15886
2020-12-10 15:18:22 +00:00
David Baker
365d6982ce Add secondary call avatar to main voice content view 2020-12-07 18:28:43 +00:00
David Baker
8a58c9dea0 Update UI for two calls in the PiP view
and also merge hold_ui changes
2020-12-07 17:56:36 +00:00
David Baker
747d743bd0 Add 60% opacity black over the avatars when on hold 2020-12-07 16:22:57 +00:00
David Baker
3b25a3be98 Smaller avatar, more padding on text 2020-12-07 15:42:35 +00:00
David Baker
ab71547c4c Don't let call room names push out their containers 2020-12-04 20:36:08 +00:00
David Baker
faf2922b1b Update video element when the call changes in a videoview
Because that can happen now
2020-12-04 19:41:48 +00:00
David Baker
1ce63f0fa7 Line 1 / 2 Support
Support one active call plus one call on hold
2020-12-03 17:45:49 +00:00
David Baker
2a02e57a95 Add UI for hold functionality 2020-11-26 14:35:09 +00:00
David Baker
2e3d889bbf consistent capitalisation 2020-11-23 15:28:54 +00:00
David Baker
b518b33169 Factor the height of the header into the max video height 2020-11-19 17:33:43 +00:00
David Baker
49bd66c377 Change fullscreen button to expand button in PIP view
and fix call controls which didn't appear in video call
2020-11-19 16:36:23 +00:00
David Baker
50965e41eb Remove call bar
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.
2020-11-19 15:15:31 +00:00
David Baker
a2d58e2f1f Make new in-call UI work
* Buttons on the main view will disappear after 1 second of the user
not moving the mouse over the call view.
 * PIP view has no buttons, and not moveable yet
 * No call status in room view yet
 * Room status bar is still there currently
2020-11-18 14:22:38 +00:00
David Baker
c921567831 WIP: the new call views work now
just need to add the buttons and then get rid of the status bar
2020-11-12 18:09:56 +00:00
David Baker
6953aed70a
Copyright
Co-authored-by: Travis Ralston <travpc@gmail.com>
2020-11-05 09:51:02 +00:00
David Baker
f828c6d494 Implement call hold
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.
2020-10-29 17:56:24 +00:00
David Baker
7ad366603a Support rejecting calls
Use the 'reject' method when we want to reject an incoming call
rather than end one that's in progress. Also get our error messages
right for the other side rejecting the call (albeit still with
placeholder dialog-box UX).

Requires https://github.com/matrix-org/matrix-js-sdk/pull/1510
2020-10-15 14:54:03 +01:00
David Baker
55f77b04ae Rewrite call state machine
* Remove the two separate enumerations of call state: now everything
   uses the js-sdk version of call state. Stop adding a separate
   'call_state' field onto the call object(!)
 * Better reflection of the actual state of the call in the call bar,
   so when it's connecting, it says connecting, and only says 'active call'
   when the call is actually active.
 * More typey goodness
2020-10-09 18:56:07 +01:00
David Baker
8962f7ae9e Convert CallHandler to typescript
and remove the old conference call stuff while we're at it: enough
time should have passed since those mistakes that we can move on.
The old conference call rooms will still appear for anyone whose
account dates back to that time, but they've presumably been appearing
in any other matrix client they used too.
2020-09-24 16:16:20 +01:00
Michael Telatynski
e624ce11b4
Merge pull request #5157 from matrix-org/t3chguy/crc1
Remove create-react-class
2020-09-03 17:21:58 +01:00
Michael Telatynski
72498df28f Remove create-react-class 2020-08-29 12:14:16 +01:00
Michael Telatynski
9ba33c7f80 Fix eslint ts override tsx matching and delint 2020-08-29 01:11:08 +01:00
Michael Telatynski
828cfb7138 Add min-width to floating Jitsi
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
2020-07-20 15:15:21 +01:00
Travis Ralston
c5d732a631 IncomingCallBox2 -> IncomingCallBox 2020-07-17 15:56:58 -06:00
Travis Ralston
76902a752f CallPreview2 -> CallPreview 2020-07-17 15:56:07 -06:00
Travis Ralston
7f5c501b2b CallView2 -> CallView 2020-07-17 15:55:30 -06:00
Travis Ralston
cbf967ea69 Remove legacy call components 2020-07-17 15:53:13 -06:00
Travis Ralston
06336a88b3 Remove setting for old room list 2020-07-17 14:06:30 -06:00
Jorik Schellekens
bc4167180c Lint whitespaces and semis 2020-07-07 15:40:05 +01:00
Jorik Schellekens
8458572032 lint 2020-07-07 15:18:10 +01:00
Jorik Schellekens
0d6e7759d0 Fix review details
- spelling mistake
- unwatch watched setting
- lint (indentation)
- use more performant component
2020-07-07 15:11:08 +01:00
Jorik Schellekens
5176685d20 Implement incoming call box 2020-07-06 23:05:00 +01:00
Travis Ralston
90a898d03f Move dispatcher into a subdirectory
We're expecting to have a whole bunch of types for the dispatched payloads, so pull the thing into a directory we can throw them in.
2020-05-13 21:07:50 -06:00
Travis Ralston
07030a9466
Merge branch 'develop' into travis/react-warnings/3-componentCannotDidMount 2020-04-01 11:14:19 -06:00
Travis Ralston
0a6f54da33 Label and use UNSAFE_componentWillMount to minimize warnings
These TODO comments are expected to be fixed ASAP, but until that happens let's minimize the errors in the console for development.

For https://github.com/vector-im/riot-web/issues/12877

These all aren't using componentDidMount because they do something which causes application instability if componentDidMount were used. Much of these calls are expected to move into constructors once they are converted to real classes.
2020-03-31 14:15:23 -06:00
Travis Ralston
3f99332f4b Use componentDidMount in place of componentWillMount where possible
This fixes a common React warning we see. Most of these components should be using constructors instead, however componentDidMount is just as good (and doesn't require converting most of these).

Conversion to classes will be done in a later stage of React warning fixes.

For https://github.com/vector-im/riot-web/issues/12877
2020-03-31 14:14:17 -06:00
Travis Ralston
59f608ffd6
Merge pull request #3761 from matrix-org/travis/babel7-wp-es6-export
Convert CommonJS exports to ES6 exports
2020-01-08 09:09:11 -07:00
Travis Ralston
042bd35d79 Fix MatrixClientPeg imports 2019-12-22 21:15:54 -07:00
Travis Ralston
d56f0f2a25 Convert many imports to handle ES6 exports
Reliant upon https://github.com/matrix-org/matrix-react-sdk/pull/3761
2019-12-22 21:04:42 -07:00
Travis Ralston
344dac4fb9 Convert CommonJS exports to ES6-compatible exports
We use `export default` begrudgingly here. Ideally we'd use just `export`, though this entire SDK expects things to be exported as a default. Instead of breaking everything, we'll sacrifice our export pattern for a smaller diff - a later commit can always do the default export -> regular export conversion.
2019-12-22 21:01:02 -07:00
Michael Telatynski
d22985f12e Migrate string refs over to createRef
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
2019-12-08 12:16:17 +00:00
David Baker
b239fde32d Workaround for soft-crash with calls on startup
Fixes https://github.com/vector-im/riot-web/issues/11458
2019-11-21 17:31:57 +00:00
Michael Telatynski
b243004a6c Switch to createReactClass: *everything else*. React 16 :D
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
2019-09-06 18:38:11 +01:00
J. Ryan Stinnett
20e296b20e Convert image URLs in React to require calls
This allows Webpack to insert the proper image URL after builds steps like
adding a hash and so on. The path you supply to `require` is relative to the JS
source file, just like any other would be.
2019-01-17 22:06:49 -06:00
Peter Vágner
ded35e43a0
A11y: repurpose more divs into AccessibleButtons.
With this more of the
controls that look like buttons can be operated via the keyboard and
navigated to by screen reader users. This includes editor buttons such
as File upload, Audio / Video call, Right pannel hide button, Jump to
the bottom timeline button, and some more buttons found in the user
settings.
Also I have added alt texts to some images that in turn label buttons
which these happen to be packed in and removed some untranslated alt
texts from decorative non-actionable images that might add more
verbosity when talking about screen reader user experience.
2018-10-02 13:55:24 +02:00
David Baker
d3038ea765 Don't try to exit fullscreen if not fullscreen
This was causing annoying exceptions on latest Chrome. Use
document.fullScreenElement to detect if we're fullscreen and don't
try to exit if we aren't.
2018-09-11 11:31:24 +01:00
David Baker
e56feea9ec Put always-on-screen widgets in top left
always-on-screen widgets now appear in the top-left where the
call preview normally is if you're not in the room that they're in.

Fixes https://github.com/vector-im/riot-web/issues/7007
Based off https://github.com/matrix-org/matrix-react-sdk/pull/2053
2018-07-12 18:43:49 +01:00
David Baker
8eb4137ec3 missing semicolon 2018-02-07 11:51:41 +00:00
David Baker
2a68e3ea39 import sdk 2018-02-07 11:42:50 +00:00
David Baker
0a5bf07913 Use getComponent 2018-02-07 10:13:19 +00:00
David Baker
424c367ecc Fix the reject/accept call buttons in canary (mk2)
Fixes https://github.com/vector-im/riot-web/issues/6081 by making
the accept/reject buttons AccessibleButtons which they should be
anyway (presumably the role=button makes chrome do the right thing
with the events). Also swallow the onClick event otherwise that
propagates out to the room header and causes it to expand/collapse.
2018-02-06 18:45:43 +00:00
Aidan Gauland
35780f5ae0 Remove use of deprecated React.PropTypes
Replace all uses of React.PropTypes with PropTypes and importing PropTypes from
'prop-types'.
2017-12-26 14:03:18 +13:00
Luke Barnard
dad797d4a2 Run linting --fix 2017-11-16 13:19:36 +00:00
Travis Ralston
ae10a11ac4 Convert synced settings to granular settings
Signed-off-by: Travis Ralston <travpc@gmail.com>
2017-10-29 01:43:52 -06:00
Luke Barnard
591a7f4b86 Default to false 2017-10-26 10:06:04 +01:00
Luke Barnard
97b9cf6402 Actually use the synced setting 2017-10-26 09:58:46 +01:00
Luke Barnard
3ae97348f8 Add option to mirror local video feed 2017-10-25 18:17:33 +01:00
Luke Barnard
6b9a2909df Add rule to enforce spacing in curly brackets in JSX children
This required an updated in version of eslint-plugin-react to 7.4.0.
2017-09-28 11:21:06 +01:00
David Baker
be8f0991a6 Avoid re-rendering RoomList on room switch
Introduce a class that consumes updates from the RoomViewStore and
announces to listeners if the active room ID is now or is no longer
the room ID they specified. Naming suggestions welcome: it's
currently called ActiveRoomObserver.

Avoids passing the selectedRoomId down from MatrixChat all the way
through the LeftPanel / RoomList / RoomSubList to the RoomTiles.

Also introduce a CallPreview class that listens directly for
RoomViewStore changes as the call preview in the left panel needs
to know when the room changes, so this allows this component to
update without having to update the entire left panel.
2017-09-11 16:59:09 +01:00
Michael Telatynski
9ef83b8dc0
de-lint views/voip/*
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
2017-07-01 14:58:46 +01:00
Kegan Dougal
1c58a9cd5e Everything but src/components/views/rooms 2017-06-08 12:33:29 +01:00
David Baker
18d4d3392a Fix a bunch of linting errors
eslint --fix and a few manual ones
2017-01-20 14:22:27 +00:00
wmwragg
45f17eb973 Added incomingCallBox to header and removed from roomTile 2016-09-15 14:39:34 +01:00
Matthew Hodgson
031daf7b3c Merge pull request #434 from matrix-org/matthew/uninterrupted-audio
use a top-level audio tag for playing all VoIP audio.
2016-09-01 16:12:37 +01:00
Matthew Hodgson
f0d5f42921 whine loudly if remoteAudio element is missing 2016-09-01 13:58:26 +01:00
Matthew Hodgson
4829ac0c4d comment 2016-09-01 11:07:46 +01:00
Matthew Hodgson
a23d8e313d show ongoing audio call in LeftPanel 2016-09-01 00:13:32 +01:00
Matthew Hodgson
6c4ad49b78 use a top-level audio tag for playing all VoIP audio.\n\nfixes https://github.com/vector-im/vector-web/issues/1271 and https://github.com/vector-im/vector-web/issues/621 2016-08-31 21:50:46 +01:00
Richard van der Hoff
6c928f12b2 ForceUpdate the scrollpanel when the aux panel changes size
Catch some more cases when we ought to be updating the gemini scroll stuff.
2016-03-09 15:56:54 +00:00
Richard van der Hoff
30abf81ed4 Fix CallView in left panel
Make CallView cope with not being passed a room. Fixes
https://github.com/vector-im/vector-web/issues/1049, introduced in
7a20fda7, which made vector crash when you switched to another room with an
active call.
2016-02-29 13:43:22 +00:00
Richard van der Hoff
7a20fda7e7 Factor out a separate auxpanel, and cleanup the maxHeight management
Basically two changes here:

1. Factor out auxpanel from RoomView
2. Rather than setting maxHeight attributes by poking directly into the DOM,
pass them down as properties.
2016-02-23 15:54:15 +00:00
Matthew Hodgson
d2a731e255 only resize the video element if not fullscreen 2016-02-19 01:18:53 +00:00
Matthew Hodgson
7f310ce307 fix nasty overscroll bug on video element caused by inline v. block 2016-02-19 01:18:37 +00:00
Richard van der Hoff
cd52549713 s/function/func/ in PropTypes declarations 2016-01-12 13:11:53 +00:00
Richard van der Hoff
243b2e4587 Make the scrollpanel update itself correctly on video resize.
When we first get video, the video component will resize itself. This will
cause the page to be reflowed, but that doesn't trigger an update on the gemini
scrollbar. We therefore need to force an update on the messagepanel. Implement
this by providing an onResize property on the CallView component.

We need to do the same when we change the maxHeight on the video panel.

The same applies to resizing of the MessageComposer. That was previously
handled with a fugly roomView.forceUpdate() from MessageComposer - make it use
the same mechanism.

Finally: the messageComposer is at least 70 pixels, and up to 100 pixels high -
not 36. Fix the auxPanelMaxHeight calculation - and use a static constant
rather than hardcoding the number to avoid this happening again.
2016-01-11 15:28:59 +00:00
Matthew Hodgson
0772f50fab update copyright for 2016 2016-01-07 04:06:52 +00:00
Richard van der Hoff
0d0a379cd8 VideoView: Fix a dispatcher leak
Make sure we unregister from the dispatcher when the videoview goes
away.
2016-01-06 15:17:58 +00:00
Matthew Hodgson
bb184c12a1 fix NPE 2015-12-17 11:56:41 +00:00
Matthew Hodgson
d979a028a5 position the inbound call box correctly, and fix various issues with when the video preview and callview are shown 2015-12-17 02:49:09 +00:00
Kegan Dougal
6c9f3303c6 Convert voip molecules to components
Don't pull in VectorConferenceHandler; instead accept a prop which meets a
conference handler interface.
2015-11-26 16:38:56 +00:00
Kegan Dougal
e55ecfeacb Add VideoFeed component 2015-11-26 15:20:57 +00:00