Commit Graph

26939 Commits (4d7980eb07aaa804cc5eeaeca844e398761ae9a8)

Author SHA1 Message Date
Travis Ralston 4d7980eb07 Ensure references to the room list store are broken for diffing
See commit diff for details.
2020-07-24 10:38:04 -06:00
Travis Ralston 0a31bd169c Skip updates in collapsed lists too 2020-07-24 10:20:00 -06:00
Travis Ralston 82f90c4734 Do the faster length change check first
... because it's faster. Also we don't need to diff the array here.
2020-07-23 22:31:52 -06:00
Travis Ralston fd15fc3984 Ensure message previews update when needed
In 9969b01c5f we stopped updating the sublist whenever we felt like it, which indirectly froze message previews for room tiles (badges, unread state, etc were unaffected because that is managed by a different store). To fix this, we simply have to listen for changes and perform an update.
2020-07-23 22:24:07 -06:00
Travis Ralston 7e50464eeb Fix filtering causing sticky header artifacts
In 7b97c3032b we reduced the RoomList updates to just added/removed sublists, but didn't consider that we might also have to handle lengths of those sublists changing enough for us to fix the sticky headers.
2020-07-23 22:19:16 -06:00
Travis Ralston 9969b01c5f Only render sublists when they change significantly
We can ignore off-screen updates, so do that. See diff for more details on what we're doing.
2020-07-23 22:13:32 -06:00
Travis Ralston ad92e6ba00 Don't constantly re-mount the sublists with a new addRoomFn
Any time we though that the room list had to re-render we were dynamically creating a new addRoomFn, which would signal to the sublist that it needed to re-render. 

The only reason we wrap the function from the aesthetics is to provide theoretical tiling/multiaccount support through use of different dispatchers, however considering that's not a reality yet we can just use a default dispatcher when none is supplied.
2020-07-23 22:12:10 -06:00
Travis Ralston 7b97c3032b Make the sublists aware of their own list changes
This cuts the render time in half (from ~448ms to ~200ms on my account) per received event, as we're no longer re-mounting the entire room list and instead just the section(s) we care about.
2020-07-23 21:36:43 -06:00
Michael Telatynski 60a6b13f4b
Merge pull request #5026 from matrix-org/t3chguy/room-list/14440
Put low priority xor toggle back in the room list context menu
2020-07-24 00:02:50 +01:00
Michael Telatynski 55b9ba23c2
Merge pull request #5040 from matrix-org/t3chguy/community-autocomplete
Fix autocompletion of Community IDs
2020-07-24 00:01:48 +01:00
Michael Telatynski 591891631f
Merge pull request #5042 from matrix-org/t3chguy/fix/14686
Use OpenType tabular numbers in timestamps
2020-07-24 00:01:13 +01:00
Travis Ralston 71ec76dcef
Merge pull request #5046 from matrix-org/travis/package-updates
Update packages to modern versions
2020-07-23 16:03:48 -06:00
Travis Ralston 2abec8b100 Disable lint in InviteDialog 2020-07-23 15:58:06 -06:00
Travis Ralston 66eb069651 Pin flow-parser for i18n 2020-07-23 15:43:53 -06:00
Travis Ralston 9d091e5e02 Update packages to modern versions 2020-07-23 15:27:10 -06:00
David Baker 593ed81c8a
Merge pull request #5044 from matrix-org/dbkr/rebrand_toast_dismiss
Add dismiss button to rebrand toast
2020-07-23 18:14:36 +01:00
David Baker 6fb257df7a Add dismiss button to rebrand toast
Fixes https://github.com/vector-im/riot-web/issues/14575
2020-07-23 17:33:14 +01:00
Michael Telatynski b02175793e Use OpenType tabular numbers in timestamps
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
2020-07-23 14:52:01 +01:00
Michael Telatynski c8832f5582 Fix autocompletion of Community IDs
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
2020-07-23 14:47:42 +01:00
Michael Telatynski 4db0d94fb6
Merge pull request #5039 from matrix-org/t3chguy/fix/14684
Fix Firefox composer regression exception
2020-07-23 10:11:02 +01:00
Michael Telatynski ff8f1af01e
Merge pull request #5037 from matrix-org/t3chguy/room-list/14705
Fix BaseAvatar wrongly using Buttons when it needs not
2020-07-23 09:27:20 +01:00
Michael Telatynski adba9415b3 Fix Firefox composer regression exception
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
2020-07-23 09:25:01 +01:00
Michael Telatynski 38e93469d3 Fix broken test
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
2020-07-23 09:01:44 +01:00
Travis Ralston 7f4ae043bd
Merge pull request #5038 from matrix-org/travis/perf2
Performance improvements round 2: Maps, freezing, dispatching, and flexbox obliteration
2020-07-22 17:39:14 -06:00
Travis Ralston 80687e358f Obliterate some flexboxes in the room list
We don't need columns of divs to equally size themselves, so use easier layout techniques to make the list fit in the container. We have to take a hit with `height:100%`, but the hit is much more insignificant than confusing the layout engine.

The layout engine has a hard time with dynamically-but-statically-sized stuff like `width: 100%; display: flex;`, particularly when it is nested so badly. Overall this should improve performance for the app by not having to re-paint so often.

Fixes https://github.com/vector-im/riot-web/issues/14639
2020-07-22 16:34:33 -06:00
Travis Ralston c22cb6c325 Short-circuit room list store dispatch handling if not ready
We were taking 0.2ms to handle the registration of a timer per event during startup, even before the app is visible to the user. These timers would be short-circuited too, leading to a bunch of wasted time.

0.2ms isn't a lot of time, but multiplied by thousands of events at startup it's pretty significant.

On my account this reduces the full page spinner time from ~50 seconds to just over 20 seconds.
2020-07-22 13:35:41 -06:00
Michael Telatynski 6546f98e18 Fix BaseAvatar wrongly using Buttons when it needs not
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
2020-07-22 20:01:14 +01:00
Travis Ralston f27afc6ff8 Fix message previews not updating on their own 2020-07-22 12:43:10 -06:00
Travis Ralston 0ef6696c0a Don't re-freeze AsyncStore's state all the time 2020-07-22 10:52:45 -06:00
Travis Ralston d593d24aea Switch to an internal Map for previews
This means we're abusing the AsyncStoreWithClient to get access to a lifecycle, but overall that seems like a minor crime compared to the time spend abusing the store's state as a map.

With thousands of rooms shown, we can save on average 743ms per preview. The new preview time is 0.12ms on average.
2020-07-22 10:50:54 -06:00
Travis Ralston 67fd6e6122
Merge pull request #5034 from matrix-org/travis/fix-perf
Mixed bag of performance improvements: ScrollPanel and notifications
2020-07-22 08:24:04 -06:00
Travis Ralston 61c5b4f9bf deunderscore 2020-07-22 08:23:47 -06:00
Michael Telatynski 6bb9be56cd
Merge pull request #5025 from matrix-org/t3chguy/room-list/14662
Update message previews
2020-07-22 10:03:30 +01:00
Travis Ralston 685e1c51d6
Merge pull request #5035 from robintown/translate-create-room
Translate create room buttons
2020-07-21 22:05:24 -06:00
Robin Townsend 83ab151d96 Translate create room buttons
Signed-off-by: Robin Townsend <robintown@tcakoi.dev>
2020-07-22 03:54:15 +00:00
Travis Ralston cd77434a69 Appease the linter 2020-07-21 20:59:33 -06:00
Travis Ralston c9da1e1874 Remove even more tags from the notification state fetching for a room 2020-07-21 20:58:59 -06:00
Travis Ralston 97739c9a73 Add more statements to avoid layout changes 2020-07-21 20:56:07 -06:00
Travis Ralston 507fa01ade Remove missed area for notification state fetching 2020-07-21 20:51:40 -06:00
Travis Ralston dd16ec070c Replace countRoomsWithNotif with a dedicated NotificationState
Fixes https://github.com/vector-im/riot-web/issues/14694

Instead of spending 10-1000ms in a function iterating over a whole lot of room events, we can use our cached state from the Notification State Store. 

This commit sets up a structure that could be applied to communities in the TagPanel too, as that could probably use a similar optimization.

This reduces the updateStatusIndicator() time to just 4ms on average.
2020-07-21 20:24:44 -06:00
Travis Ralston 6a29cd33c1 Remove tag specificity from notification states
We don't need this complexity now that we aren't doing per-tag logic.
2020-07-21 19:59:17 -06:00
Travis Ralston 928acbdc11 Wrap ScrollPanel layout changes in if statements
These conditions are rarely true, but when they are it saves ~28ms of forced layout changes.
2020-07-21 19:52:50 -06:00
Travis Ralston 5dd5d4922f
Merge pull request #5033 from robintown/escape-composer-placeholder
Escape single quotes in composer placeholder
2020-07-21 19:06:10 -06:00
Robin Townsend 951570a97f Escape single quotes in composer placeholder
Signed-off-by: Robin Townsend <robintown@tcakoi.dev>
2020-07-22 00:47:48 +00:00
Travis Ralston bcc6c96030
Merge pull request #5032 from matrix-org/travis/perf/blur-bg
Don't hammer on the layout engine with avatar updates for the background
2020-07-21 15:07:58 -06:00
Travis Ralston 0a846cb1b5 Don't hammer on the layout engine with avatar updates for the background
Changing the property on every render of the left panel (which is basically all the time) is super bad on the GPU and for our CPU. We should only do that when something changes.
2020-07-21 15:02:59 -06:00
Travis Ralston ba73ce16e6
Merge pull request #5031 from matrix-org/travis/room-list/a-z-order
Ensure incremental updates to the ImportanceAlgorithm trigger A-Z order
2020-07-21 14:28:46 -06:00
Travis Ralston 6a38833a2b Ensure incremental updates to the ImportanceAlgorithm trigger A-Z order
Fixes https://github.com/vector-im/riot-web/issues/14475

Background: Sticky rooms are actually a pair of lies to the underlying algorithm as a combination of REMOVE_ROOM/NEW_ROOM calls so they don't get considered as needing to be sorted. When a room is added under the importance algorithm, it is expected that the category it is being added to will be re-sorted to account for the change, however we weren't doing that since we optimized the NewRoom path to be a splice operation.
2020-07-21 14:12:58 -06:00
Hubert Chathi cbe4f04cd7
Merge pull request #5029 from uhoreg/sanitize_language
don't syntax highlight languages that begin with "_"
2020-07-21 13:12:51 -04:00
Michael Telatynski e54eea0c51
Merge pull request #4956 from matrix-org/t3chguy/ts/1
Convert Modal to TypeScript
2020-07-21 17:55:20 +01:00