Commit Graph
100 Commits
Author SHA1 Message Date
Robin Townsend 9704033dc8 Fix tests 2023-06-30 18:46:10 -04:00
Robin Townsend 17450b4531 Fix big grid crashing due to missing React import
by fixing the cause rather than the symptom: this upgrades the code to use the new, recommended JSX transform mode of React 17+, which no longer requires you to import React manually just to write JSX.
2023-06-30 18:21:18 -04:00
RobinandGitHub 514cebc074 Merge pull request #1164 from RiotTranslateBot/weblate-element-call-element-call
Translations update from Weblate
2023-06-28 12:34:52 -04:00
RobinandGitHub fc4ef88c75 Merge pull request #1161 from robintown/layouts
Make NewVideoGrid support arbitrary layout systems
2023-06-28 11:02:15 -04:00
Robin Townsend 1c6ef97457 Improve typing around layouts and grid components 2023-06-28 10:59:36 -04:00
RobinandGitHub 83384e290e Merge pull request #1162 from RiotTranslateBot/weblate-element-call-element-call
Translations update from Weblate
2023-06-27 23:05:28 -04:00
Robin Townsend cc35f243f2 Make NewVideoGrid support arbitrary layout systems
In preparation for adding layouts other than big grid to the NewVideoGrid component, I've abstracted the grid layout system into an interface called Layout. For now, the only implementation of this interface is BigGrid, but this will allow us to easily plug in Spotlight, SplitGrid, and OneOnOne layout systems so we can get rid of the old VideoGrid component and have One Grid to Rule Them All™.

Please do shout if any of this seems obtuse or underdocumented, because I'm not super happy with how approachable the NewVideoGrid code looks right now…

Incidentally, this refactoring made it way easier to save the state of the grid while in fullscreen / another layout, so I went ahead and did that.
2023-06-27 14:20:45 -04:00
RobinandGitHub 8bd4544841 Merge pull request #1148 from RiotTranslateBot/weblate-element-call-element-call
Translations update from Weblate
2023-06-27 13:35:45 -04:00
RobinandGitHub 8250526231 Merge pull request #1147 from robintown/build-full-mesh
Run the build workflow on the full mesh branch, too
2023-06-27 09:22:48 -04:00
RobinandGitHub e625894ae9 Merge pull request #1146 from robintown/fullscreen-and-pip
Bring back fullscreen and picture-in-picture modes
2023-06-27 09:22:19 -04:00
Robin Townsend 27668980d7 Run the build workflow on the full mesh branch, too
Otherwise CD on the full mesh branch never happens
2023-06-26 14:20:35 -04:00
Robin Townsend 276684c103 Bring back fullscreen and picture-in-picture modes
We're now using LiveKit's magic RoomAudioRenderer component to make sure everyone's audio is rendered regardless of whether they have a tile in the DOM.
2023-06-26 13:48:41 -04:00
RobinandGitHub 41456505e0 Merge pull request #1145 from RiotTranslateBot/weblate-element-call-element-call
Translations update from Weblate
2023-06-26 12:13:03 -04:00
RobinandGitHub 6a0503c05e Merge pull request #1140 from robintown/room-avatar
Show the room avatar rather than the user avatar in the header
2023-06-24 12:41:16 -04:00
Robin Townsend 25eb56418d Show the room avatar rather than the user avatar in the header
It's supposed to be the room avatar; this was a regression introduced during the LiveKit hack week.
2023-06-23 16:20:15 -04:00
RobinandGitHub f08facbff3 Merge pull request #1135 from robintown/embedded-device-selection
Fix device selection never completing in widget mode
2023-06-23 15:02:30 -04:00
RobinandGitHub 948cc8f52f Merge pull request #1136 from robintown/call-backend
Note the call backend in rageshake and analytics data
2023-06-23 14:58:52 -04:00
Robin Townsend c181d250ac Note the call backend in rageshake and analytics data 2023-06-23 14:47:32 -04:00
Robin Townsend 45915ed67e Fix device selection never completing in widget mode
By reinstating some of the code from the full mesh branch that was there to handle this
2023-06-23 14:17:51 -04:00
Robin Townsend 413a311159 Empty commit to rerun CD with new fixes 2023-06-20 12:22:07 -04:00
Robin Townsend 7bb45adbe1 Fix lint 2023-06-20 12:13:27 -04:00
Robin Townsend 0e66e21dae Empty commit to trigger initial CD run 2023-06-20 12:09:25 -04:00
Robin Townsend 510d55d88a Fix local tile showing as unmuted when you join muted 2023-06-18 14:28:28 -04:00
Robin Townsend eb500ed88e Skip an unnecessary render when calculating display names 2023-06-18 14:28:07 -04:00
Robin Townsend a2c40561db Fix a likely bug with audio inputs and outputs getting mixed up? 2023-06-18 14:26:50 -04:00
Robin Townsend fc307d0aba Don't show ghost tiles while connecting 2023-06-18 14:26:27 -04:00
Robin Townsend 65f390e2e5 Merge branch 'grid-interactions' into livekit-experiment 2023-06-18 11:45:43 -04:00
Robin Townsend cd7ab00d80 Don't try to promote the same speaker multiple times 2023-06-18 11:45:01 -04:00
Robin Townsend ae5b1a367d Merge branch 'grid-interactions' into livekit-experiment 2023-06-18 11:36:59 -04:00
Robin Townsend ddeb36db47 Promote speakers to the first page of the grid 2023-06-18 11:35:13 -04:00
Robin Townsend c3c26e235b Merge branch 'grid-interactions' into livekit-experiment 2023-06-18 01:13:45 -04:00
Robin Townsend 4e5a75074a Fix tiles not collapsing toward their center 2023-06-18 01:01:24 -04:00
Robin Townsend 391ba5196c Make screenshares appear near the presenter's tile and be larger 2023-06-18 00:47:37 -04:00
Robin Townsend 3e56d0a656 Make it possible again to drag a tile into the top left corner 2023-06-18 00:28:08 -04:00
Robin Townsend d1e7d963a3 Merge branch 'grid-interactions' into livekit-experiment 2023-06-17 22:32:19 -04:00
Robin Townsend afbcea7b66 Allow the grid to resize with the window width 2023-06-17 22:31:07 -04:00
Robin Townsend 4f582c6ad7 Don't change tile size when dragging 2023-06-17 22:31:07 -04:00
Robin Townsend 8b8d6fd0e0 Push large tiles upwards back into the grid 2023-06-17 22:31:01 -04:00
Robin Townsend 7f5ec069a5 Merge branch 'main' into livekit-experiment 2023-06-16 12:57:06 -04:00
RobinandGitHub 4fd1264d12 Merge pull request #1123 from robintown/connection-indicators
Hide connection quality indicators behind a developer setting
2023-06-16 12:56:36 -04:00
RobinandGitHub cabad628b4 Merge pull request #1121 from robintown/grid-performance
Improve the performance of dragging tiles in the large grid
2023-06-16 12:55:15 -04:00
Robin Townsend a96d70eefb Hide connection quality indicators behind a developer setting
Calls are an environment with high cognitive load, so it's important that we keep extra UI elements like these to a minimum and stick to what's been explicitly designed. I assume that this was here as a developer feature to diagnose reliability of the back end components, which is perfectly fine, so I've kept it behind a developer setting rather than fully removing it.
2023-06-16 10:59:57 -04:00
RobinandGitHub 4342f4b027 Merge pull request #1122 from robintown/speaking-fixes
Fix speaking indicators showing up when they shouldn't
2023-06-16 10:42:50 -04:00
Robin Townsend 1b3539e873 Fix speaking indicators showing up when they shouldn't
This fixes two edge cases:

- Screenshares should never have a speaking indicator
- Speaking indicators should be hidden in 1:1 calls
2023-06-16 10:35:29 -04:00
Robin Townsend f4f454f58e Improve the performance of dragging tiles in the large grid
By only updating the one spring of the tile that's being interacted with
2023-06-16 10:20:24 -04:00
RobinandGitHub 89768de5e0 Merge pull request #1114 from robintown/screenshare-tiles
Fix tiles having the wrong states during screensharing
2023-06-14 12:01:23 -04:00
RobinandGitHub 24eedc7b9a Merge pull request #1113 from robintown/fix-spotlight
Fix spotlight layout
2023-06-14 11:58:29 -04:00
Robin Townsend 037495a635 Fix tiles having the wrong states during screensharing
This fixes a couple bugs:

1. That muting your video while screensharing would cause the screensharing feed to be hidden as well
2. That while screensharing, your user media tile would incorrectly show the label that's supposed to appear only on the screenshare tile
2023-06-14 11:55:43 -04:00
RobinandGitHub 5510719fb2 Merge pull request #1111 from RiotTranslateBot/weblate-element-call-element-call
Translations update from Weblate
2023-06-14 11:42:45 -04:00
Robin Townsend 357e1f828a Fix spotlight layout 2023-06-14 11:37:07 -04:00
Robin TownsendandWeblate 7cae785351 Translated using Weblate (Ukrainian)
Currently translated at 100.0% (144 of 144 strings)

Translation: Element Call/element-call
Translate-URL: https://translate.element.io/projects/element-call/element-call/uk/
2023-06-14 15:34:43 +00:00
RobinandGitHub dabecf54bf Merge pull request #1107 from robintown/new-grid-breakpoint
Switch to the new grid once there are >12 participants
2023-06-13 15:14:04 -04:00
Robin Townsend 2916eb45aa Switch to the new grid once there are >12 participants 2023-06-13 12:54:24 -04:00
Robin Townsend 4d5c3cd773 Merge branch 'main' into livekit-experiment 2023-06-13 12:33:46 -04:00
RobinandGitHub bde13e0fab Merge pull request #1104 from robintown/decouple-grid
Decouple video grid from video tile components
2023-06-13 09:56:47 -04:00
Robin Townsend 1207ecc9d7 Decouple video grid from video tile components
This is an attempt to address the feedback in https://github.com/vector-im/element-call/pull/1099#discussion_r1226863404 that the video grid and video tile components have become too tightly coupled. After this change, the only requirements that the video grid makes of its child components are:

- They accept ref, style, and item props
- They attach the ref and styles to a react-spring animated element

Note: I removed the video grid Storybook file, because I'm not aware of anyone using Storybook for development of Element Call beyond Robert, and it would take some effort to fix to work with these changes.
2023-06-12 18:21:45 -04:00
Robin Townsend 142605a336 Run prettier 2023-06-12 11:40:59 -04:00
Robin Townsend ee36d134f3 Fix tile sizes not being set 2023-06-12 11:39:30 -04:00
RobinandGitHub 0b55c69ba6 Merge pull request #1099 from robintown/merge-main
Merge main into livekit-experiment
2023-06-12 11:25:07 -04:00
Robin Townsend 93bc28c1a6 Merge branch 'livekit-experiment' into merge-main 2023-06-12 11:19:52 -04:00
Robin Townsend 4e726355bf Merge branch 'main' into merge-main 2023-06-12 11:18:05 -04:00
RobinandGitHub 8c21dbaade Don't require textual feedback (#1097)
We want to encourage scoring as much as possible for the purpose of our KPIs, even if it means we don't always get detailed textual feedback.
2023-06-12 12:52:29 +02:00
Robin Townsend e49439a879 Merge branch 'main' into merge-main 2023-06-10 17:10:42 -04:00
RobinandGitHub 825cb75cb7 Merge pull request #1098 from robintown/fix-new-grid
Fix tiles not animating in the new grid layout
2023-06-10 17:09:21 -04:00
Robin Townsend ab97f12947 Merge branch 'main' into livekit-experiment 2023-06-09 17:22:34 -04:00
Robin Townsend 554da08628 Fix tiles not animating in the new grid layout
The new grid layout has been broken ever since upgrading react-spring, because it was apparently relying on a buggy behavior of react-spring that started transitions automatically even in imperative mode. react-spring 9.5.1 fixed that behavior, which means we now need to manually start the animations.
2023-06-09 13:52:21 -04:00
RobinandGitHub f070ab7f67 Merge pull request #1095 from RiotTranslateBot/weblate-element-call-element-call
Translations update from Weblate
2023-06-08 10:26:15 -04:00
RobinandGitHub 1bfbb80f6d Merge pull request #1094 from robintown/widget-join-delay
Don't prematurely claim that we've joined the call in widget mode
2023-06-08 10:24:32 -04:00
RobinandGitHub d3d21fa86c Merge pull request #1093 from robintown/widget-feedback-hotfix
Don't show the quality survey if the app is a widget
2023-06-08 10:19:49 -04:00
Robin Townsend e4a3dbd7f7 Don't prematurely claim that we've joined the call in widget mode
In GroupCallView we do 'await enter()' when responding to a widget API join request, but it turns out enter wasn't actually returning a promise until now. The consequence of this was that in Element Web, when you click the join button you get shown a blank screen for a moment. This fixes that half-second moment of the UI being broken, allowing Element Web to show the intermediate 'joining' state.
2023-06-07 14:33:41 -04:00
Robin Townsend 47a4c5aa88 Don't show the quality survey if the app is a widget
As explained by the comment, we don't yet have designs that account for this combo.
2023-06-07 14:19:53 -04:00
RobinandGitHub 166b9fede5 Merge pull request #1086 from robintown/ice-fallback
Add a URL parameter for allowing fallback ICE servers
2023-06-07 09:29:34 -04:00
RobinandGitHub 5dd7c3ad8d Merge pull request #1088 from RiotTranslateBot/weblate-element-call-element-call
Translations update from Weblate
2023-06-07 09:23:28 -04:00
Robin Townsend 5ef0486eff Add a URL parameter for allowing fallback ICE servers 2023-06-05 15:52:05 -04:00
RobinandGitHub b1a5417b63 Merge pull request #1083 from RiotTranslateBot/weblate-element-call-element-call
Translations update from Weblate
2023-06-05 14:36:38 -04:00
RobinandGitHub 062802b3e9 Merge pull request #1082 from RiotTranslateBot/weblate-element-call-element-call
Translations update from Weblate
2023-06-02 10:51:46 -04:00
Robin TownsendandWeblate 0e50679db5 Translated using Weblate (Chinese (Simplified))
Currently translated at 89.9% (125 of 139 strings)

Translation: Element Call/element-call
Translate-URL: https://translate.element.io/projects/element-call/element-call/zh_Hans/
2023-06-02 14:46:17 +00:00
RobinandGitHub e67290550c Merge pull request #1037 from vector-im/SimonBrandner/feat/settings
Settings improvements
2023-05-25 22:28:26 -04:00
Robin Townsend 3c118f0cf7 Add a comment 2023-05-22 15:44:39 -04:00
Robin Townsend 9c2f4be17c Bring back the rageshake request modal 2023-05-22 15:30:29 -04:00
Robin Townsend dc8d0fd81b Update strings 2023-05-22 15:12:41 -04:00
Robin Townsend ae40dea7ec Make the profile form autosave 2023-05-22 15:12:41 -04:00
Robin Townsend 85380c8142 Make width of profile tab conform to designs 2023-05-22 15:12:41 -04:00
Robin Townsend 6560d9eb1a Make remove avatar button target area larger 2023-05-22 15:12:41 -04:00
Robin Townsend 69099772e0 Make settings button icon size match designs 2023-05-22 15:12:41 -04:00
Robin Townsend cf1a7f2e21 Match settings modal to design nuances better 2023-05-22 15:12:41 -04:00
Robin Townsend eeb1f4baaf Merge branch 'main' into SimonBrandner/feat/settings 2023-05-22 12:49:57 -04:00
RobinandGitHub 568c989ff7 Merge pull request #1069 from robintown/hide-rageshake-request
Hide the rageshake request modal when the window is too small
2023-05-22 09:21:30 -04:00
RobinandGitHub 606358c51b Merge pull request #1070 from RiotTranslateBot/weblate-element-call-element-call
Translations update from Weblate
2023-05-17 23:33:38 -04:00
Robin Townsend c01e363639 Hide the rageshake request modal when the window is too small 2023-05-17 13:59:15 -04:00
RobinandGitHub e93dfb54d2 Merge pull request #1065 from robintown/resist-fingerprinting
Make Element Call work in Firefox's resist fingerprinting mode
2023-05-17 10:32:00 -04:00
Robin Townsend f1ee3604de Make Element Call work in Firefox's resist fingerprinting mode
This one is gonna take some explaining:

When in resist fingerprinting mode, Firefox exhibits some funny behavior: when we ask for the the list of media devices, it gives us fake device IDs. But when the js-sdk requests a stream for any of those devices, Firefox associates the stream with the real device ID.

Now, in order to get the names of devices included in their metadata when you query the device list, you need to be holding a stream. For this reason, useMediaHandler was set up to reload the device list whenever matrix-js-sdk got a new local stream. But because of the inconsistency in device IDs, it would enter an infinite cycle telling matrix-js-sdk to request a stream for the fake device ID, but with matrix-js-sdk always responding with the real device ID.

I already wasn't happy with useMediaHandler's use of @ts-ignore comments to inspect private js-sdk fields, and in the meantime we've come up with a simpler function for requesting device names, so I decided to refactor useMediaHandler to use it instead. Importantly, it doesn't break in resist fingerprinting mode.

This created a new UX issue though: now, when on the lobby screen, useMediaHandler would request microphone access so it could get device names, followed immediately by a *second* pop-up for the lobby screen to request camera access. That's 1 pop-up too many, so I changed useMediaHandler to only request device names when a component is mounted that actually wants to show them. Currently, the settings modal is the only such component, and users normally only open it *after* granting full audio/video access, so this solution works out quite nicely.
2023-05-15 23:13:18 -04:00
RobinandGitHub d3111758b7 Merge pull request #1064 from robintown/update-js-sdk
Update matrix-js-sdk
2023-05-15 11:10:15 -04:00
Robin Townsend abdb85226f Update matrix-js-sdk 2023-05-15 11:04:57 -04:00
RobinandGitHub aae86ed830 Merge pull request #1055 from robintown/update-matrix-widget-api
Update matrix-widget-api
2023-05-15 08:43:07 -04:00
RobinandGitHub a961647e86 Merge pull request #1058 from robintown/update-js-sdk
Update matrix-js-sdk
2023-05-14 01:33:55 -04:00
Robin Townsend 207554f067 Fix tests 2023-05-14 01:32:11 -04:00
Robin Townsend 7d454645d0 Fix types 2023-05-13 14:27:01 -04:00
Robin Townsend fcb923f6db Update matrix-js-sdk 2023-05-13 14:11:59 -04:00
RobinandGitHub e3c34a7145 Merge pull request #1053 from robintown/local-tile-size
Cap the size of the local tile in 1:1 calls
2023-05-13 13:54:40 -04:00