Commit graph

3465 commits

Author SHA1 Message Date
Damir Jelić
cfdcf45ac6 MatrixChat: Move the event indexing logic into separate modules. 2019-11-12 13:29:07 +01:00
Damir Jelić
2c5565e502 MatrixChat: Add some missing semicolons. 2019-11-11 15:08:00 +01:00
Damir Jelić
64061173e1 MatrixChat: Check if our state array is empty in the crawled messages response. 2019-10-18 16:33:07 +02:00
Damir Jelić
89f14e55a2 MatrixChat: Catch errors when fetching room messages in the crawler. 2019-10-18 16:32:43 +02:00
Damir Jelić
1b63886a6b MatrixChat: Add more detailed logging to the event crawler. 2019-10-18 16:31:39 +02:00
Damir Jelić
3f53691834 RoomView: Use platform specific search if our platform supports it.
This patch extends our search to include our platform specific event
index.

There are 3 search scenarios and are handled differently when platform
support for indexing is present:

    - Search a single non-encrypted room: Use the server-side search
        like before.
    - Search a single encrypted room: Search using our platform specific
        event index.
    - Search across all rooms: Search encrypted rooms using our local
        event index. Search non-encrypted rooms using the classic
        server-side search. Combine the results.

The combined search will result in having twice the amount of search
results since comparing the scores fairly wasn't deemed sensible.
2019-10-11 16:55:01 +02:00
Damir Jelić
4acec19d40 MatrixChat: Add new crawler checkpoints if there was a limited timeline.
A sync call may not have all events that happened since the last time
the client synced. In such a case the room is marked as limited and
events need to be fetched separately.

When such a sync call happens our event index will have a gap. To
close the gap checkpoints are added to start crawling our room again.
Unnecessary full re-crawls are prevented by checking if our current
/room/roomId/messages request contains only events that were already
present in our event index.
2019-10-11 16:55:01 +02:00
Damir Jelić
5e7076e985 MatrixChat: Add live events to the event index as well. 2019-10-11 16:55:01 +02:00
Damir Jelić
b23ba5f881 MatrixChat: Stop the crawler function and delete the index when logging out. 2019-10-11 16:55:01 +02:00
Damir Jelić
9ce478cb0e MatrixChat: Create an event index and start crawling for events.
This patch adds support to create an event index if the clients platform
supports it and starts an event crawler.

The event crawler goes through the room history of encrypted rooms and
eventually indexes the whole room history of such rooms.

It does this by first creating crawling checkpoints and storing them
inside a database. A checkpoint consists of a room_id, direction and
token.

After the checkpoints are added the client starts a crawler method in
the background. The crawler goes through checkpoints in a round-robin
way and uses them to fetch historic room messages using the
rooms/roomId/messages API endpoint.

Every time messages are fetched a new checkpoint is created that will
be stored in the database with the fetched events in an atomic way, the
old checkpoint is deleted at the same time as well.
2019-10-11 16:55:01 +02:00
Michael Telatynski
6e33cc0650
Merge pull request #3433 from matrix-org/t3chguy/nvl/react16/EventListSummary
Summarise state events after room creation
2019-10-11 09:53:26 +01:00
Michael Telatynski
5643743167 Don't intercept TAB on the app outside of the composer, fix tabIndex > 0
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
2019-10-10 14:13:29 +01:00
Michael Telatynski
58317b1608 Use Keyboard Key variables instead of hardcoded strings
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
2019-10-09 19:59:11 +01:00
Michael Telatynski
ff18a04da1
Merge pull request #3529 from matrix-org/t3chguy/react16_cleanup2
React error/warning cleanup
2019-10-09 16:26:24 +01:00
Michael Telatynski
f2d73793ee delint again
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
2019-10-09 12:51:08 +02:00
Michael Telatynski
9331ca9d07 delint
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
2019-10-09 12:51:08 +02:00
Michael Telatynski
6be318b59d Only insert ELS if it'll be non-empty
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
2019-10-09 12:51:08 +02:00
Michael Telatynski
efde7f289f Use EventListSummary on m.room.create events and state events thereafter
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
2019-10-09 12:50:03 +02:00
J. Ryan Stinnett
1dc2ae007f Fix soft crash on room join
This fixes a soft crash that can happen on room join if you keep the right panel
open (which is the default). The `MainSplit` component was not properly testing
for the edge cases of when the resize container would be mounted.

Fixes https://github.com/vector-im/riot-web/issues/10997
2019-10-08 15:43:57 +01:00
Michael Telatynski
a782baf510 React error/warning cleanup
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
2019-10-08 12:10:37 +01:00
Michael Telatynski
1ec0bb284a Limit Backspace-consuming workaround to just Slate, tidy Keyboard :)
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
2019-10-04 11:47:33 +01:00
Michael Telatynski
fba646d2c5
Merge pull request #3519 from matrix-org/travis/enable-cider
Enable CIDER composer by default
2019-10-04 10:50:28 +01:00
Michael Telatynski
06c612ba3d
Merge pull request #3516 from matrix-org/t3chguy/clean_out_useless_errors
Cull some easily fixable errors which make the console a mess
2019-10-04 10:20:34 +01:00
Michael Telatynski
e200193b0a DRY and fix useCiderComposer being in both labs and preferences
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
2019-10-04 10:15:00 +01:00
Travis Ralston
853c522467 Enable CIDER composer by default
Also convert the setting to a watched setting to apply in realtime.
2019-10-03 23:20:40 -06:00
Michael Telatynski
47c41759f7
Merge pull request #3518 from matrix-org/t3chguy/attempt_NPE_fix
Handle null from TimelinePanel.getScrollState in RoomView _getScrollState
2019-10-04 00:25:14 +01:00
Michael Telatynski
0f2eee1b1b
Merge pull request #3517 from matrix-org/t3chguy/fix_community_panel_preference
Fix Community Panel preference not taking effect until some refreshing
2019-10-04 00:24:57 +01:00
Michael Telatynski
9e9c56d327 rename settings watcher refs in LeftPanel
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
2019-10-03 23:21:32 +01:00
Michael Telatynski
9e8234c98f Handle null from TimelinePanel.getScrollState in RoomView _getScrollState
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
2019-10-03 23:00:08 +01:00
Michael Telatynski
d5f6d781bb Fix Community Panel preference not taking effect until some refreshing
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
2019-10-03 22:13:10 +01:00
Michael Telatynski
a0de7d5f14 Cull some easily fixable errors which make the console a mess
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
2019-10-03 21:47:19 +01:00
Michael Telatynski
a9b4abaf78 Fix backspace without slate focus killing everything
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
2019-10-03 21:16:18 +01:00
Michael Telatynski
8ef61ce43e
Merge pull request #3514 from matrix-org/t3chguy/accessibility3
Various ARIA a11y fixes.
2019-10-03 11:09:01 +01:00
Michael Telatynski
f1db0cf027 Various ARIA a11y fixes.
Notate RightPanel tabs.
Shorten Screen Reader queues.
Make AccessibleTooltipButton screen reader friendly
Flatten DOM for Sticker button using React Fragments

Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
2019-10-03 09:35:39 +01:00
J. Ryan Stinnett
b605c0048d Add an error boundary around the RoomView
This adds a more specific boundary around the `RoomView` for room-specific
errors and is an example how we could use add boundaries around just a portion
of the app.
2019-10-02 17:31:22 +01:00
J. Ryan Stinnett
0e8dc24c3f Add a basic error boundary for the entire app
This adds a basic error boundary around the entire app to catch errors during
rendering and present the user with the options on how to proceed. This is not
implemented as a modal so that it could be used selectively in portions of the
app as well, such as just the `RoomView`.

Fixes https://github.com/vector-im/riot-web/issues/11009
2019-10-02 17:31:22 +01:00
Bruno Windels
c8c4dc29d1
Merge pull request #3503 from matrix-org/bwindels/custom-themes-mvp
Custom theming MVP
2019-10-02 09:14:07 +00:00
Travis Ralston
7d1a04cb12
Merge pull request #3500 from matrix-org/travis/permalinks
Support local permalinks for unfederated instances
2019-10-01 08:41:23 -06:00
Bruno Windels
558f8daeeb support custom themes from setting
also move theme setting code from MatrixChat to own file.
2019-10-01 15:21:22 +02:00
Travis Ralston
fc66e69c02 Rename RoomPermalinkCreator -> Permalinks due to scope
The file handles more than just a RoomPermalinkCreator, so we should name it accordingly.
2019-09-30 20:39:58 -06:00
Travis Ralston
64aa6695f5 Move matrix-to.js to utils/permalinks/RoomPermalinkCreator
Just a little bit of refactoring to make the feature of custom prefixes a bit easier.
2019-09-30 12:16:46 -06:00
Michael Telatynski
2621ad1b43 Group room tiles in room sub list in the room list for ARIA
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
2019-09-30 16:04:43 +01:00
Michael Telatynski
22fb925743 Stop using deprecated KeyboardEvent properties
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
2019-09-30 16:04:06 +01:00
Michael Telatynski
ce78de2185 re-order imports
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
2019-09-27 10:05:08 +01:00
Michael Telatynski
8d1d3090f3 Improve keyboard accessibility using :focus-visible CSS polyfill
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
2019-09-27 09:00:54 +01:00
Michael Telatynski
3674b87415 delint
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
2019-09-26 14:58:40 +01:00
Michael Telatynski
c37e27f03d Improve a11y:
+ Close context menu on escape
+ Use AccessibleButtons for more things (Context Menus and TabbedView)

Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
2019-09-26 14:52:20 +01:00
Michael Telatynski
8ec0ffea3a Make the message context menu more accessible
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
2019-09-26 14:24:10 +01:00
Michael Telatynski
14e3cb8736 Allow keyboard control even without a screen reader
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
2019-09-26 13:52:09 +01:00
Michael Telatynski
d588e709e5 Add tab indexes, role=button and aria-labels to TabbedViews for a11y
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
2019-09-25 18:55:18 +01:00