Commit graph

278 commits

Author SHA1 Message Date
Travis Ralston
bf6798e109 Appease the linter 2020-01-13 13:28:33 -07:00
Travis Ralston
3e5cc9550b Fix import merge conflicts, removing any that aren't needed anymore
Many imports were removed as part of refactoring work, so here we are.
2020-01-09 14:17:33 -07:00
Travis Ralston
fde32f13a5 [CONFLICT CHUNKS] Merge branch 'develop' into travis/sourcemaps-develop 2020-01-09 14:15:09 -07:00
Bruno Windels
b36df73300 fix for ref refactor pr 2020-01-03 13:47:38 +01:00
Travis Ralston
0d2cb6e731 Import haveTileForEvent() from the right place 2019-12-22 21:23:07 -07:00
Travis Ralston
d002c2ccde Merge branch 'travis/babel7-wp-es6-export' into travis/sourcemaps-es6 2019-12-22 21:20:13 -07:00
Travis Ralston
f1ac3d2f64 Convert imports to ES6 from CommonJS
This is needed because `require()` means something different in webpack - it ends up importing the module as something we didn't expect (and is occasionally async)
2019-12-22 21:16:06 -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
d28a892bb0 Stop using KeyboardEvent.keyCode as it is deprecated 2019-12-16 17:14:03 +00:00
Michael Telatynski
702f061341 ref is used earlier so assign it earlier
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
2019-12-08 12:45:59 +00: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
Michael Telatynski
6121420113
Merge branch 'develop' into t3chguy/remove_bluebird 2019-11-20 15:21:23 +00:00
Michael Telatynski
f9d1fed74a re-add missing case of codepath 2019-11-18 19:00:22 +00:00
Michael Telatynski
d4d51dc61f Rip out the remainder of Bluebird 2019-11-18 10:03:05 +00:00
Michael Telatynski
54dcaf1302 Replace bluebird specific promise things. Fix uses of sync promise code.
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
2019-11-14 13:52:17 +00:00
Michael Telatynski
168b1b68bb Revert "s/.done(/.then(/ since modern es6 track unhandled promise exceptions"
This reverts commit 09a8fec2
2019-11-12 11:56:21 +00:00
Michael Telatynski
09a8fec261 s/.done(/.then(/ since modern es6 track unhandled promise exceptions 2019-11-12 11:51:23 +00:00
Matthew Hodgson
832123524d make the lifetimes of the RM configurable 2019-09-17 17:34:30 +01:00
Travis Ralston
e29184ae1d Support secret per-room hidden read receipts 2019-09-06 13:02:18 -06:00
Travis Ralston
af35cdc2ea Support sending hidden read receipts
Fixes https://github.com/vector-im/riot-web/issues/2527
2019-09-05 20:30:19 -06:00
Michael Telatynski
abf111ecbd Migrate away from React.createClass for non-auth structures. React 16 :D
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
2019-08-30 10:34:59 +01:00
Bruno Windels
3d4cd8aa1c local echos should always be ignored (for both RM and RR),so remove flag
pending events won't be in liveEvents (where we look) anyway
2019-07-17 10:19:44 +02:00
Bruno Windels
c94715150d as both RM and RR move past invisible events, remove the flag 2019-07-17 10:18:51 +02:00
Bruno Windels
741ae9957b also put read marker past (like RR) invisible events 2019-07-17 10:15:09 +02:00
Bruno Windels
7e25e1b2fc remove unneeded else 2019-07-15 14:02:41 +02:00
Bruno Windels
034883dc7e improve comments 2019-07-15 14:01:28 +02:00
Bruno Windels
8ac54661be take adjacent no-tile events in combination with ignored events into account when determining the last displayed event 2019-07-15 12:53:39 +02:00
J. Ryan Stinnett
3c3426d97e Update copyright header 2019-07-05 15:08:55 +01:00
J. Ryan Stinnett
0ae98a5a4d Track live events in timeline and use for read receipts and read markers
This changes the `TimelinePanel` to track live events (that have committed to
the server and been remote echoed) as well as the full list of events (which
includes pending events).

The code paths that advance read receipt and read markers are then changed to
only use the live events so that these cannot advance into pending events.

Fixes https://github.com/vector-im/riot-web/issues/9952
2019-07-05 14:37:19 +01:00
Bruno Windels
41e41269dc use EditorStateTransfer to pass on state to newly mounted editor 2019-06-12 18:52:34 +02:00
Bruno Windels
940b2a7ef2
Merge pull request #3058 from matrix-org/bwindels/redactions-local-echo
Don't show "can't redact" dialog on network error, with redaction having local echo & queuing now.
2019-06-05 07:49:51 +00:00
Bruno Windels
ef7b7628ac use Room.redactionCancelled event 2019-06-04 21:37:57 +02:00
J. Ryan Stinnett
96b213e7cb Advance read receipts into trailing events without tiles
This changes read receipt sending logic to allow it advance further into events
without tiles (such as edits or reactions) that may exist after the last
displayed event.

By allowing the read receipt to advance past such events, this also marks as
read any related notifications. For example, edits trigger notifications by
default since they are `m.room.message` events, and with this change, such edit
notifications can finally be marked read.

Part of https://github.com/vector-im/riot-web/issues/9745
2019-06-03 18:25:35 +01:00
Travis Ralston
d81804e0fe Merge branch 'develop' into matthew/low_bandwidth 2019-05-30 19:42:09 -06:00
Bruno Windels
4626581dbe scroll event into view when starting to edit 2019-05-24 15:38:51 +02:00
J. Ryan Stinnett
2648dbd221 Guard against null rooms in onEventDecrypted
Timeline sets may have a null room, such as with the notification timeline set.
Here we check that case when events are decrypted to avoid throw an error.

Fixes https://github.com/vector-im/riot-web/issues/9798
2019-05-22 10:08:16 +01:00
J. Ryan Stinnett
238e967470 Only show reactions in main message timeline
This fixes an error that crashed that notifications panel because it was trying
to read reactions, even though we currently don't aggregate them there. This
change is more explicit about exactly which views should try to show reactions.

Fixes https://github.com/vector-im/riot-web/issues/9713
2019-05-21 18:27:10 +01:00
Bruno Windels
f7de8d4f58 use new events to find out about replacements 2019-05-16 14:43:32 +01:00
Bruno Windels
5805a88ab9 adjust to js-sdk changes of marking original event as replaced 2019-05-15 11:54:26 +01:00
Bruno Windels
15df72e629 reload events when event gets replaced in the timeline 2019-05-14 15:39:24 +01:00
Bruno Windels
6599d605cd wire up editor component (somewhat hacky) 2019-05-14 15:38:16 +01:00
J. Ryan Stinnett
8fdb59a909 Use basic read path from JS SDK for reactions
This displays existing reactions correctly in the action bar and reaction row,
but it doesn't yet update after a new reaction is sent.
2019-05-10 17:19:27 +01:00
J. Ryan Stinnett
3beb70814c Fix indentation in TimelinePanel 2019-05-10 17:19:27 +01:00
J. Ryan Stinnett
f4b783e802 Fix lint errors in TimelinePanel 2019-05-01 14:30:50 +01:00
Bruno Windels
f164a78eaa reimplement typing notif timeline shrinking prevention
instead of setting a min-height on the whole timeline,
track how much height we need to add to prevent shrinking
and set paddingBottom on the container element of the timeline.
2019-03-20 17:10:30 +01:00
Bruno Windels
891e343df6 create ResizeNotifier to derive which areas of the app resize and emit 2019-03-15 10:16:21 +01:00
J. Ryan Stinnett
2d074d0de6
Rename
Co-Authored-By: dbkr <dbkr@users.noreply.github.com>
2019-03-12 09:37:55 +00:00
J. Ryan Stinnett
ea01853233
Rename
Co-Authored-By: dbkr <dbkr@users.noreply.github.com>
2019-03-12 09:37:38 +00:00
David Baker
63d19a899b Rest of the naming changes 2019-03-12 09:37:00 +00:00
David Baker
ce9f3d8a57 Rename 2019-03-11 11:38:54 +00:00
David Baker
ce1623691e Fix instantly sending RRs
Splits UserActivity into a tristate of 'active' (last < 1s), 'passive' (lasts a
couple of mins) and neither. Read receipts are sent when 'active', read markers
are sent while 'passive'.

Also fixed a document / window mix-up on the 'blur' handler.

Also adds a unit test for UserActivity because it's quite complex now
(and changes UserActivity to make it testable by accessing the singleton
via sharedInstance() rather than exporting it directly).

Fixes https://github.com/vector-im/riot-web/issues/9023
2019-03-08 12:46:38 +00:00
Bruno Windels
8bb8ec141e clear min-height on timeline resets and other occasions where we load it 2019-02-26 10:49:03 +01:00
Bruno Windels
f7ea9cfeb2 rename all instances of permalinkCreator 2019-02-25 18:43:08 +01:00
Bruno Windels
f97ea37717 permalink is one word 2019-02-25 18:43:08 +01:00
Bruno Windels
29be28919d create permalink creator in roomview and pass it on to the event tiles 2019-02-25 18:43:08 +01:00
Matthew Hodgson
ce24165e19 port over low_bandwidth mode to develop 2019-02-08 16:44:03 +00:00
Bruno Windels
25aa58f29f increase/clear min-height on timeline on new message(s)
depending on whether the typing bar is visible
2019-01-21 17:35:40 +01:00
Bruno Windels
f49e8b0bda reduce in-view timeout to 1s 2018-12-12 11:13:09 +01:00
Bruno Windels
2b0c2eff1e Implement 10s in-view/30s out-of-view timeout for moving RM.
Uses Timer & changed UserActivity promise based api
2018-12-11 16:19:22 +01:00
Bruno Windels
ac9902e52a apply redesign to topunreadmessagebar
with placeholder for message count
2018-12-11 15:43:00 +01:00
Bruno Windels
7df47cbc87 move typing notifications to WhoIsTypingTile, shown in ScrollPanel 2018-11-12 16:09:51 +01:00
Aaron Raimist
49ce4ef117
eslint --fix src/
Signed-off-by: Aaron Raimist <aaron@raim.ist>
2018-10-26 22:50:38 -05:00
Bruno Windels
debcc20604 also show spinner on new CATCHUP state 2018-08-30 15:39:48 +02:00
Luke Barnard
8672b97f9a Improve room list performance when receiving messages
In summary this makes RoomTiles (and RoomAvatars) do more for
themselves in terms of reacting individually to state changes in
the js-sdk.

Instead of force updating the entire room list for avatar changes
and room name changes, do this in the RoomTile and RoomAvatar
instead. This increases the number of listeners listening to the
matrix client, but allows us to properly implement a
shouldComponentUpdate for RoomTile (because the avatar, name and
notification count are now in component state)
2018-03-14 14:29:55 +00:00
Luke Barnard
36e8bf1f20 Change CSS class for message panel spinner
to stop scrollbars appearing when we
 - jump to a message or,
 - permalink that is to an not paginated in event
2018-02-13 14:13:47 +00:00
David Baker
e42bea6277 Don't paginate whilst decrypting events
As comment hopefully explains. This meant loading the app on an e2e
room would often be very slow as it tried to pull hundreds of events
into the timeline.
2018-01-12 18:17:03 +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
ddd0e161c0 Fix broken imports 2017-12-01 10:41:56 +00: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
b1f2a6c1e9 Dramatically simplify use of mx_fadable
by applying it to parent elements of things that need to be faded.
2017-10-25 15:15:49 +01:00
Luke Barnard
2f8f2ce76e Swap from ui_opacity to panel_disabled
to simplify the process of disabling panels in the UI.
2017-10-25 11:23:51 +01:00
Luke Barnard
d3f9a3aeb5 Run eslint --fix
Fixing 1000s of lint issues. Some rules cannot be `--fix`ed but this goes some way to linting the entire codebase.
2017-10-11 17:56:17 +01:00
turt2live
2e72d6cd7c Hide events that were sent by ignored users
This code only kicks in if the user was ignored after an event was sent. The homeserver should prevent other events from coming in.

Signed-off-by: Travis Ralston <travpc@gmail.com>
2017-09-14 20:16:56 -06:00
David Baker
609d61d53c Revert "Implement sticky date separators" 2017-09-06 17:40:58 +01:00
David Baker
262d66f579 Merge pull request #1353 from matrix-org/luke/feature-sticky-date-separators
Implement sticky date separators
2017-09-05 14:15:47 +01:00
David Baker
a2f2070966 Put setSate in the promise constructor
Avoids local variables. Also typo in comment.
2017-08-30 21:44:10 +01:00
David Baker
225fe67586 Fix room change sometimes being very slow
If the js-sdk had a lot of history in memory for a particular room,
riot would paginate all that history into the DOM and render it
when switching to that room (before then removing it all again).
This obviously made switching to that room very slow.

This was caused by the fact that we relied on the setState that
happens in TimelinePanel after the pagination taking effect such
that ScrollPanel sees that it no longer needs to paginate, but
in some situations (as far as I can see, in electron...?) this
setState would not take effect until the pagination stopped
fulfiling requests from memory and hit the network.

Fix: don't resolve the promise returned by the pagination request
until the setState has actually happened.
2017-08-30 19:14:26 +01:00
Luke Barnard
a29e7da06b Merge branch 'develop' into luke/feature-sticky-date-separators 2017-08-30 14:06:06 +01:00
Luke Barnard
d516906b36 Implement sticky date separators
Use `react-sticky` to implement sticky date separators. This will pin a date separator to the top of the timeline panel when the separator scrolls out of the top of the view.

A known issue of this is that the spinner, which is in line with event tiles in the timeline, will appear to push the stuck date separator down. In reality the first date separator after the spinner is in line with event tiles and is not stuck because the spinner forces the timeline to be scrolled slightly further down than it would be otherwise. But also, date separators in the timeline (not "stuck") have a greater height.

Ideally the date separator would be suppressed whilst back paginating, but this will cause the stuck separator to flicker on and off. This is why the suppression has been removed.
2017-08-30 13:52:46 +01:00
Michael Telatynski
282618d5a1
separate concepts of showing and managing RRs to fix regression 2017-08-30 13:18:14 +01:00
David Baker
a2943ac348 Check room ID matches 2017-08-24 11:55:39 +01:00
David Baker
67824e9acc Force update on timelinepanel when event decrypted
Partially fixes https://github.com/vector-im/riot-web/issues/4865
(the part about messages not appearing in the timeline until you
move the cursor over the window).

Requires https://github.com/matrix-org/matrix-js-sdk/pull/529
2017-08-24 11:35:01 +01:00
Michael Telatynski
56ea528f43
don't track error messages .2
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
2017-08-10 15:17:52 +01:00
Michael Telatynski
bf98c0da7c
un-i18n Modal Analytics
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
2017-07-27 17:19:18 +01:00
Michael Telatynski
2348c24369
revert the rm-always-moves-down loop as thats done Server side... 2017-07-26 14:33:48 +01:00
Michael Telatynski
f42ae1662b
change wording of comment as per Luke's review 2017-07-26 11:46:59 +01:00
Michael Telatynski
8e66e64621
fix for loop - check happens before pre-inc so cause issues at end of TL
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
2017-07-22 13:16:16 +01:00
Michael Telatynski
c9b547368b
add algo to ensure that RM always moves forwards
this is needed so that if a client which does not hide any events
sets and RM at bottom of timeline, then riot-web which hides events
sets the RM it'd set it at X-N where X is bottom and N is the amount of
hidden events at bottom of the timeline, this way now an RM will
fall through to the hidden events below a seen event.

Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
2017-07-22 13:10:57 +01:00
Michael Telatynski
7e355f7cda
unrevert most of the logic.
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
2017-07-21 23:18:18 +01:00
Michael Telatynski
928294eba3
Merge branch 'develop' of github.com:matrix-org/matrix-react-sdk into t3chguy/hide-join-part-2 2017-07-21 19:23:42 +01:00
Richard van der Hoff
0254d2b3a2 q(...) -> Promise.resolve
```
find src test -name '*.js' | xargs perl -i -pe 's/\b[qQ]\(/Promise.resolve(/'
```
2017-07-12 18:05:08 +01:00
Richard van der Hoff
a06bd84213 replace imports of q with bluebird
update `package.json`

```
find src test -name '*.js' |
   xargs perl -i -pe 'if (/require\(.[qQ].\)/) { $_ = "import Promise from '\''bluebird'\'';\n"; }'

find src test -name '*.js' |
   xargs perl -i -pe 'if (/import [qQ]/) { $_ = "import Promise from '\''bluebird'\'';\n"; }'
```
2017-07-12 18:05:08 +01:00
Richard van der Hoff
1139dd2be5 Fix a flaky test in the timelinepanel code
Sometimes it was possible for there to be a scroll event before the initial
pagination completed, which then upset the rest of the test. Just give it a few
ms to sort itself out instead.
2017-07-11 17:34:46 +01:00
Michael Telatynski
c53fb08453 pass user settings from above
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
2017-06-15 20:02:17 +01:00
Richard van der Hoff
566fb2caeb Add some logging around switching rooms
... which I wish had been there when I was staring at a rageshake.
2017-06-07 22:41:02 +01:00
Kegan Dougal
4127e7121c Translate src/components/structures
Includes some pluralisation! Tested them manually to make sure they work.
2017-06-07 11:40:46 +01:00
Michael Telatynski
d2d0ba952a allow hiding redactions. no point onAccountData as it'd cause a full
refresh, this may need to be handled differently in the future.
Currently handling same as the new timestamp stuff

Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
2017-06-02 04:23:07 +01:00