Commit graph

31813 commits

Author SHA1 Message Date
Kerry
ebc2267e52
Location sharing > back button ()
* add back/cancel buttons to share dialog

Signed-off-by: Kerry Archibald <kerrya@element.io>

* test buttons

Signed-off-by: Kerry Archibald <kerrya@element.io>

* improve weird indentation

Signed-off-by: Kerry Archibald <kerrya@element.io>

* relint

Signed-off-by: Kerry Archibald <kerrya@element.io>

* PR tweaks

Signed-off-by: Kerry Archibald <kerrya@element.io>

* quotes

Signed-off-by: Kerry Archibald <kerrya@element.io>
2022-03-03 11:30:46 +01:00
Kerry
7aefa34420
use LocationAssetType ()
* use LocationAssetType

Signed-off-by: Kerry Archibald <kerrya@element.io>

* center icon better

Signed-off-by: Kerry Archibald <kerrya@element.io>

* remove debug

Signed-off-by: Kerry Archibald <kerrya@element.io>

* retrigger all builds

Signed-off-by: Kerry Archibald <kerrya@element.io>
2022-03-03 10:04:38 +00:00
Eric Eastwood
3572b36648
Fix room list being laggy while scrolling 🐌 ()
Fix https://github.com/vector-im/element-web/issues/21262

Optimizations:

 1. Don't update the `style` (positioning) of hidden tooltips
 1. Don't add DOM elements to the page for hidden tooltips

> ## Performance problems broken down
>
>
> ### Hidden tooltips rendering on `scroll`
>
> You can see that the Tooltip render is attached to the `scroll` event  at [`src/components/views/elements/Tooltip.tsx#L78-L81`](31f0a37ca2/src/components/views/elements/Tooltip.tsx (L78-L81))
>
> The rendering calls [`src/components/views/elements/Tooltip.tsx#L101` -> `updatePosition`](36adba101c/src/components/views/elements/Tooltip.tsx (L101)) which ends up as an expensive "Recalculate Style" because it uses [`Element.getBoundingClientRect()`](https://developer.mozilla.org/en-US/docs/Web/API/Element/getBoundingClientRect). This happens many many times within a single `scroll` event. Probably once for each tooltip within the room list **even though no tooltips are event visible as I scroll**. I can see that we're just updating the `style` attribute for a bunch of `.mx_Tooltip_invisible` elements at the end of the document.
>
> Each one of the purple spans below the `scroll` span ends up as a call to `updatePosition`. And a `scroll` event takes 35ms to 60ms to complete which is way over the 16.6ms 60 FPS budget (on a powerful desktop PC), granted these times are with the performance profiling running. This is without the Passbolt extension explained below.
>
> And the room list contains about 141 rooms (`document.querySelectorAll('.mx_RoomTile').length`):
>
> ![](https://user-images.githubusercontent.com/558581/156273551-e744d3d6-93c6-4b07-bb12-6aad361f96a2.png)
>
>
>
> ### Passbolt Chrome browser extension exacerbates the problem
>
> In order to login to Passbolt, it requires a browser extension which defaults to mucking up all pages:
>
> <img src="https://user-images.githubusercontent.com/558581/156275644-bc26b1f5-5d99-4eae-b74b-c2028f2f1baf.png" width="300">
>
>
> The extension source seems to be available: https://github.com/passbolt/passbolt_browser_extension
>
> The Passbolt Chrome extension has a `MutationObserver` listening to all attribute and element changes to the whole `<body>` of the `document` so it can `findAndSetAuthenticationFields` (find form elements and autofill).
>
>
> [`passbolt/passbolt_styleguide` -> `src/react-web-integration/lib/InForm/InFormManager.js#L143`](1c5eddc910/src/react-web-integration/lib/InForm/InFormManager.js (L143))
> ```js
> this.mutationObserver.observe(document.body, { attributes: true, childList: true, subtree: true });
> ```
>
> This causes a bunch of `Forced reflow` because the Tooltip `updatePosition` is mutating the element `style` attribute and Passbolt `MutationObserver` callbacks are querying the whole DOM looking for form elements all in the same frame.
>
> Under the `scroll` event, all of the little spans are the `MutationObserver` -> `findAndSetAuthenticationFields`. With the Passbolt extension, scrolling is verrrrry crunchy and bad.
>
> ![](https://user-images.githubusercontent.com/558581/156144998-8cf7686f-3c7b-42f8-8d81-ff780bae0ab5.png)
>
>
> #### Workaround
>
> Instead of running Passbolt on all sites, we can enable the extension to only run on the domain for Passbolt instance itself. I'm guessing the Passbolt extension also does autofill stuff on sites but I always login manually to the Passbolt instance so this solution works for me �
>
> **Extensions** -> **Passbolt** -> **Details** -> Change **Site access** to `On specific sites` -> Enter in your Passbolt instance `https://passbolt.example.com/`
>
> ![](https://user-images.githubusercontent.com/558581/156275630-a53ef6a1-c058-4ac9-aa08-ae50b90e72c9.png)
>
> *-- https://github.com/vector-im/element-web/issues/21262*
2022-03-02 13:20:01 -06:00
Travis Ralston
f882466329
Add a few more UIComponent flags, and ensure they are used in existing code ()
* UIComponent flag: Explore rooms

To disable the room directory access on the Home space. Can be controlled with the existing ComponentVisibilityCustomisation

* Make "plus menu" respect component visibility

* UIComponent flag: Add integrations

To disable the widgets section of the room info card and addwidget slashcommand. Can be controlled with the existing ComponentVisibilityCustomisation

* Make sure invite users component applies to space rooms too

* Appease the linter
2022-03-02 10:37:18 -07:00
Kerry
d304e24a45
Revert "remove code related to encrypted file download button in iframe" ()
* Revert "remove code related to encrypted file download button in iframe ()"

This reverts commit 26216ec527.

* udpate icon import in MFileBody

Signed-off-by: Kerry Archibald <kerrya@element.io>
2022-03-02 18:27:36 +01:00
Robin
8f68a43ee3
Make pinned messages more reliably reflect edits ()
* Inject edits from /relations API into pinned messages

Signed-off-by: Robin Townsend <robin@robin.town>

* Limit returned relations, because we only need one

Signed-off-by: Robin Townsend <robin@robin.town>

* Fetch pinned message edits in parallel

Signed-off-by: Robin Townsend <robin@robin.town>
2022-03-02 12:21:23 -05:00
Robin
aadb64615f
Fix duplicate EventListSummarys ()
* Fix duplicate EventListSummarys

Signed-off-by: Robin Townsend <robin@robin.town>

* Add regression test

Signed-off-by: Robin Townsend <robin@robin.town>
2022-03-02 11:46:51 -05:00
Michael Telatynski
560f8f7ee7
Improve accessibility of the BetaPill () 2022-03-02 16:31:47 +00:00
Michael Telatynski
c727942095
Autofocus correct composer after sending reaction () 2022-03-02 16:31:34 +00:00
Kerry
61cd463a3b
replace all require(svgs) with esm import ()
Signed-off-by: Kerry Archibald <kerrya@element.io>
2022-03-02 17:14:33 +01:00
Suguru Hirahara
522ad1aafb
Make "Match system" on QuickThemeSwitcher.tsx translatable () 2022-03-02 16:10:14 +00:00
David Baker
b789d252b9
Add logging to diagnose non-disappearing toasts ()
For https://github.com/vector-im/element-web/issues/17667
2022-03-02 14:30:04 +00:00
Michael Telatynski
a39473810a
Fix react warnings () 2022-03-02 14:29:45 +00:00
Michael Telatynski
3c858a723b
Fix sending locations into threads and fix i18n () 2022-03-02 14:27:16 +00:00
Michael Telatynski
0f4125dfd5
Consider polls as message events for rendering redactions () 2022-03-02 14:27:02 +00:00
Kerry
b480bffab0
Location share type UI ()
* copyright

Signed-off-by: Kerry Archibald <kerrya@element.io>

* empty line

Signed-off-by: Kerry Archibald <kerrya@element.io>

* functional picker

Signed-off-by: Kerry Archibald <kerrya@element.io>

* most style

Signed-off-by: Kerry Archibald <kerrya@element.io>

* nice style for options

Signed-off-by: Kerry Archibald <kerrya@element.io>

* get ShareType test passing

Signed-off-by: Kerry Archibald <kerrya@element.io>

* add maplibre mock

Signed-off-by: Kerry Archibald <kerrya@element.io>

* lint and test

Signed-off-by: Kerry Archibald <kerrya@element.io>

* add section to themes for location sharing cols

Signed-off-by: Kerry Archibald <kerrya@element.io>

* add svg mock

Signed-off-by: Kerry Archibald <kerrya@element.io>

* use same mock string as imageMock

Signed-off-by: Kerry Archibald <kerrya@element.io>

* newline

Signed-off-by: Kerry Archibald <kerrya@element.io>

* lint

Signed-off-by: Kerry Archibald <kerrya@element.io>

* add live location icon

Signed-off-by: Kerry Archibald <kerrya@element.io>

* rename useEnabledShareTypes

Signed-off-by: Kerry Archibald <kerrya@element.io>

* use solid color for live border

* use ternary

Signed-off-by: Kerry Archibald <kerrya@element.io>

Co-authored-by: Michael Telatynski <7t3chguy@gmail.com>
2022-03-02 13:00:40 +00:00
Kerry
26216ec527
remove code related to encrypted file download button in iframe ()
* remove code related to encrypted file download button in iframe

Signed-off-by: Kerry Archibald <kerrya@element.io>

* i18n

Signed-off-by: Kerry Archibald <kerrya@element.io>

* remove getIframeFn in mfilebody filedownloader

Signed-off-by: Kerry Archibald <kerrya@element.io>

* remove iframe ref too

Signed-off-by: Kerry Archibald <kerrya@element.io>
2022-03-02 11:55:03 +00:00
Germain
d01ea1824b
[Update thread info after MSC3440 updates] () 2022-03-02 10:52:14 +00:00
Germain
3a82163127
Disable pending events in thread panel event timeline set () 2022-03-02 10:39:22 +00:00
David Baker
2d58704d26
Clean up asserted identity code ()
* Clean up asserted identity code

Add logging when we received asserted identity events but ignore them,
and just disable the whole code path if it's not enabled in the config.

* Actually, put the check back - better to check anyway

* Update to ? syntax

Co-authored-by: Michael Telatynski <7t3chguy@gmail.com>

* Put back lost return

Co-authored-by: Michael Telatynski <7t3chguy@gmail.com>
2022-03-02 09:59:01 +00:00
Kerry
e6ea58e84d
Load icons using @svgr ()
* extend svg module

Signed-off-by: Kerry Archibald <kerrya@element.io>

* POC in QuickSettingsButton

Signed-off-by: Kerry Archibald <kerrya@element.io>

* stylelint

Signed-off-by: Kerry Archibald <kerrya@element.io>

* update copyright

Signed-off-by: Kerry Archibald <kerrya@element.io>

* remove aria-hidden, quick docs

Signed-off-by: Kerry Archibald <kerrya@element.io>
2022-03-02 10:18:45 +01:00
Germain
d50dae5208
Decrypt thread last reply on EventTile mount and update ()
Co-authored-by: Michael Telatynski <7t3chguy@gmail.com>
2022-03-02 09:02:14 +00:00
Germain
cc389120c7
Render thread summary for events discovered on scrollback () 2022-03-02 09:02:06 +00:00
Suguru Hirahara
865dddbb62
Fix ExportDialog title on export cancellation () 2022-03-02 08:58:41 +00:00
Travis Ralston
31f0a37ca2
Fix js-sdk imports () 2022-03-01 23:51:05 +00:00
Michael Telatynski
f25e6813bb
Mandate use of js-sdk/src/matrix import over js-sdk/src () 2022-03-01 20:42:05 +00:00
Travis Ralston
5f51ba1592
Add support for overriding strings in the app ()
* Add support for overriding strings in the app

This is to support a case where certain details of the app need to be slightly different and don't necessarily warrant a complete fork. 

Intended for language-controlled deployments, operators can specify a JSON file with their custom translations that override the in-app/community-supplied ones.

* Fix import grouping

* Add a language handler test

* Appease the linter

* Add comment for why a weird class exists
2022-03-01 11:53:09 -07:00
Travis Ralston
a5ce1c9dcb
Add support for redirecting to external pages after logout ()
* Add support for redirecting to external pages after logout

This is primarily useful for deployments where the account is managed and needs to be logged out in other places too, like an SSO system.

See docs for more information.

* Add e2e test and fix Windows instructions

* Fix performance gathering stats

* use logger
2022-03-01 11:06:17 -07:00
Kerry
3f1951b5b8
Prep for pin drop location sharing ()
* add labs flag feature_location_share_pin_drop

Signed-off-by: Kerry Archibald <kerrya@element.io>

* split LocationButton into two components

Signed-off-by: Kerry Archibald <kerrya@element.io>

* rethemendex

Signed-off-by: Kerry Archibald <kerrya@element.io>

* copyright

Signed-off-by: Kerry Archibald <kerrya@element.io>

* one more (c)

Signed-off-by: Kerry Archibald <kerrya@element.io>

* i18n

Signed-off-by: Kerry Archibald <kerrya@element.io>

* empty line

Signed-off-by: Kerry Archibald <kerrya@element.io>

* use same matrix client import

Signed-off-by: Kerry Archibald <kerrya@element.io>
2022-03-01 18:00:07 +01:00
Šimon Brandner
8f128ef0dc
Expose redaction power level in room settings () 2022-03-01 16:41:58 +00:00
Šimon Brandner
928b086e05
Fix backspace not working in the invite dialog () 2022-03-01 16:35:48 +00:00
David Baker
f9140718b0 Merge remote-tracking branch 'weblate/develop' into develop 2022-03-01 15:49:28 +00:00
Michael Telatynski
7a32a68a0b
Fix right panel soft crashes due to missing room prop () 2022-03-01 11:15:23 +00:00
Kerry
36adba101c
fix color of location share caret ()
Signed-off-by: Kerry Archibald <kerrya@element.io>
2022-03-01 08:53:28 +00:00
Kerry
4bf42babc7
dont re-prepare voice messages ()
* dont reprepare voice messages

Signed-off-by: Kerry Archibald <kerrya@element.io>

* remove debug

Signed-off-by: Kerry Archibald <kerrya@element.io>

* test Playback

Signed-off-by: Kerry Archibald <kerrya@element.io>

* test RecordingPlayback

Signed-off-by: Kerry Archibald <kerrya@element.io>

* forgotten copyright

Signed-off-by: Kerry Archibald <kerrya@element.io>

* add comments

Signed-off-by: Kerry Archibald <kerrya@element.io>
2022-03-01 09:43:32 +01:00
Michael Telatynski
16e67e7716
Wrap all EventTiles with a TileErrorBoundary and guard parsePermalink ()
Co-authored-by: Travis Ralston <travisr@matrix.org>
2022-03-01 08:41:48 +00:00
Michael Telatynski
08c47ac473
Fix changing space sometimes bouncing to the wrong space () 2022-03-01 08:33:29 +00:00
Michael Telatynski
482d756bd0
Ensure EventListSummary key does not change during backpagination () 2022-03-01 08:33:07 +00:00
Michael Telatynski
115e17b097
Fix positioning of the thread context menu () 2022-03-01 08:32:29 +00:00
Šimon Brandner
df591ee835
Make everything use the KeyBindingManager () 2022-02-28 16:05:52 +00:00
Michael Telatynski
5f8441216c
Disable creating polls within threads () 2022-02-28 15:34:30 +00:00
Robin
464bb727db
Update and expand ways to access pinned messages ()
* Hide pinned messages header button when nothing is pinned

Signed-off-by: Robin Townsend <robin@robin.town>

* Add pinned messages option to room info panel

Signed-off-by: Robin Townsend <robin@robin.town>

* Add pinned messages option to room header menu

Signed-off-by: Robin Townsend <robin@robin.town>

* Make condition more concise

Signed-off-by: Robin Townsend <robin@robin.town>
2022-02-28 14:52:16 +00:00
Robin
33657947d3
Inject sender into pinned messages ()
* Inject sender into pinned messages

Signed-off-by: Robin Townsend <robin@robin.town>

* Remove unused prop

Signed-off-by: Robin Townsend <robin@robin.town>
2022-02-28 14:47:14 +00:00
Michael Telatynski
75e41b4c1c
Basic threads analytics into Posthog MVP () 2022-02-28 14:11:14 +00:00
Abinet Seife
ac42dc2048 Added translation using Weblate (Amharic) 2022-02-28 10:16:01 +00:00
David Baker
1a6134e441
Fix another freeze on room switch ()
* Fix another freeze on room switch

This switches permalinks to use the batch state update event and
removes the incremental updates, as commented. We now spend, on my
profiling, about 450ms in setOutOfBandMembers itself and another
120ms in permalinks.

Fixes https://github.com/vector-im/element-web/issues/21127

* Just bind to the currentstate state updates
2022-02-25 19:48:35 +00:00
Robin
4ab59684c1
Clean up error listener when location picker closes ()
Signed-off-by: Robin Townsend <robin@robin.town>
2022-02-25 11:21:48 -07:00
Robin
ece2b8572a
Fix edge case in context menu chevron positioning ()
* Fix edge case in context menu chevron positioning

Signed-off-by: Robin Townsend <robin@robin.town>

* Expand context menu positioning regression tests

Signed-off-by: Robin Townsend <robin@robin.town>
2022-02-25 17:49:57 +00:00
David Baker
3e4e7efd89
Add slash command to switch to a room's virtual room ()
* Add slash command to switch to a room's virtual room

* Update to new interface

* Return null if no virtual user

* Throw newTranslateableError

* Types

* Disable tovirtual if virtual rooms not supported
2022-02-25 15:58:13 +00:00
Robin
76ca0362e1
Fix composer format buttons on WebKit () 2022-02-25 13:20:06 +00:00