Commit graph

3700 commits

Author SHA1 Message Date
Matthew Hodgson
141ae916ce Merge pull request #1387 from turt2live/travis/tooltip_redacter
Show who redacted an event on hover
2017-09-17 22:36:18 +01:00
Matthew Hodgson
b06d540f4c Merge pull request #1388 from matrix-org/t3chguy/start_mels_expanded
start MELS expanded if it contains a highlighted/permalinked event.
2017-09-17 22:09:44 +01:00
Matthew Hodgson
6a53b7b149 Merge pull request #1389 from turt2live/travis/ignored_users
Add ignore user API support
2017-09-17 22:05:02 +01:00
Travis Ralston
2605004edb Update ignored users when js-sdk on UserSettings on change
Signed-off-by: Travis Ralston <travpc@gmail.com>
2017-09-17 15:04:03 -06:00
Matthew Hodgson
bc565ba925 Merge pull request #1392 from turt2live/travis/no_emoji
Add option to disable Emoji suggestions
2017-09-17 21:40:43 +01:00
David Baker
c265ec9571 Fix RoomView stuck in 'accept invite' state
After accepting a 3pid invite.

Rather than clear the joining flag when the join request completes,
leave it so the RoomView can see that we're expecting the user to
be joined in the various stages that might go through (waiting for
join request, waiting for room object, waiting for 'joined' member
event). The problem in this case was that we had to wait a bit for
the last one, and there was no bit of state to represent it.

This hopefully also makes the logic somewhat simpler.

Fixes https://github.com/vector-im/riot-web/issues/5041
2017-09-15 15:07:09 +01:00
turt2live
b2de016b35 Add option to disable Emoji suggestions
Signed-off-by: Travis Ralston <travpc@gmail.com>
2017-09-14 21:28:12 -06:00
turt2live
0363f73e28 Fix the MessagePanel test
Signed-off-by: Travis Ralston <travpc@gmail.com>
2017-09-14 20:57:28 -06:00
turt2live
6e00f70320 Hide read receipts and typing notifs for ignored users
Signed-off-by: Travis Ralston <travpc@gmail.com>
2017-09-14 20:25:51 -06: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
Travis Ralston
3889df6b08 Add (un)ignore button to MemberInfo
Signed-off-by: Travis Ralston <travpc@gmail.com>
2017-09-14 19:42:09 -06:00
David Baker
f3a4856593 Merge remote-tracking branch 'origin/develop' into dbkr/fix_slash_join 2017-09-14 23:09:26 +01:00
Travis Ralston
2bc866b997 Clean up UserSettings for linting
Signed-off-by: Travis Ralston <travpc@gmail.com>
2017-09-14 16:08:20 -06:00
David Baker
1f837d2ae1 Make /join join again
The auto_join parameter to view_room got broken at some point so
/join took you to the room and then sat there like a lemon.

Fixes https://github.com/vector-im/riot-web/issues/5029
2017-09-14 23:06:00 +01:00
Travis Ralston
4579d20fd0 Unignore people from the settings
Signed-off-by: Travis Ralston <travpc@gmail.com>
2017-09-14 15:33:36 -06:00
Travis Ralston
4df16e8245 Display which users are ignored in the user settings
Adds https://github.com/vector-im/riot-web/issues/1767

Signed-off-by: Travis Ralston <travpc@gmail.com>
2017-09-14 12:51:53 -06:00
Michael Telatynski
f612b1933b
start MELS expanded if it contains a highlighted/permalinked event.
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
2017-09-14 17:53:47 +01:00
turt2live
8dc2604d63 Show who redacted an event on hover
This should fix #3931 although it's not obvious who actually performed the redaction.

Signed-off-by: Travis Ralston <travpc@gmail.com>
2017-09-14 09:03:05 -06:00
Matthew Hodgson
bb8538cd1a Merge pull request #1381 from matrix-org/dbkr/remove_spurious_cancel_button
Remove spurious cancel button
2017-09-14 10:38:26 +01:00
David Baker
5087da9247 Merge remote-tracking branch 'origin/develop' into luke/feature-flair 2017-09-13 16:52:12 +01:00
David Baker
3c3328c5f1 Merge remote-tracking branch 'origin/develop' into dbkr/group_userlist 2017-09-13 16:34:39 +01:00
David Baker
081a900524 Merge pull request #1363 from matrix-org/t3chguy/on_copy_tooltip
respond on copy code block
2017-09-13 14:27:35 +01:00
Michael Telatynski
fea7af11b4
Merge remote-tracking branch 'origin/t3chguy/on_copy_tooltip' into t3chguy/on_copy_tooltip 2017-09-13 14:18:56 +01:00
Michael Telatynski
d3bfdf495c
initialize value with false to prevent undefined.
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
2017-09-13 14:18:31 +01:00
David Baker
8abd35f581 Remove spurious cancel button
That appeared if you clicked on a room from the room directory
(it didn't do anything). It's only supposed to be shown when
editing room settings.
2017-09-12 15:48:13 +01:00
David Baker
757bc9fe32 Update roomlist when an event is decrypted
Events are now decrypted asynchronously, so are not decrypted
at the time of the Room.timeline which is when our RoomList
got the chance to update. It needs to update once the event has
been decrypted.

Ideally we would not update the whole room list order, but this is
how all the room list re-ordering happens right now, so staying
consistent with this.

Fixes https://github.com/vector-im/riot-web/issues/5020
2017-09-12 14:47:26 +01:00
David Baker
d90aa6ec20 Merge pull request #1368 from matrix-org/t3chguy/fix_theme
fix radio for theme selection
2017-09-12 11:54:49 +01:00
David Baker
3c70b86668 Merge pull request #1375 from matrix-org/dbkr/active_room_observer
Avoid re-rendering RoomList on room switch
2017-09-11 18:52:09 +01:00
David Baker
7e1886c2ab Merge pull request #1376 from matrix-org/dbkr/fix_failed_to_load_timeline_pos
Fix 'Failed to load timeline position' regression
2017-09-11 18:51:41 +01:00
David Baker
6cb98d7196 Hopefully make comment clearer 2017-09-11 18:39:30 +01:00
David Baker
531fc3ac54 Fix 'Failed to load timeline position' regression
Ignore the update that comes in from the RoomViewStore when the
current room changes or we save our scoll state against the new
room rather than the old one.

Fixes https://github.com/vector-im/riot-web/issues/5010
2017-09-11 17:57:52 +01:00
David Baker
be8f0991a6 Avoid re-rendering RoomList on room switch
Introduce a class that consumes updates from the RoomViewStore and
announces to listeners if the active room ID is now or is no longer
the room ID they specified. Naming suggestions welcome: it's
currently called ActiveRoomObserver.

Avoids passing the selectedRoomId down from MatrixChat all the way
through the LeftPanel / RoomList / RoomSubList to the RoomTiles.

Also introduce a CallPreview class that listens directly for
RoomViewStore changes as the call preview in the left panel needs
to know when the room changes, so this allows this component to
update without having to update the entire left panel.
2017-09-11 16:59:09 +01:00
Michael Telatynski
0580d536ad Merge branch 'develop' into t3chguy/on_copy_tooltip 2017-09-10 18:54:52 +01:00
David Baker
7617788345 Merge pull request #1372 from matrix-org/dbkr/emoji_fast_path
Fast path for emojifying strings
2017-09-10 17:44:02 +01:00
David Baker
05a986334d Separate function to add code copy button
For neatness and also so it can show up separately in the profiler.
2017-09-10 15:58:17 +01:00
David Baker
876257f4e2 Consolidate the code copy button
Adding the code code button was done by manipulating the HTML of
the event body to add a span tag, then adding the onclick handler
after the thing was mounted. Apart from splitting the code between
two places, adding the span tag was, according to Chrome's
profiler, taking up quite a lot of CPU cycles (apparently as soon
as you set the innerHTML on a div). Instead, just build the whole
lot together after the component mounts.
2017-09-10 14:23:33 +01:00
David Baker
ea5726aa4e Copyright 2017-09-08 23:14:06 +01:00
David Baker
ec3ff529e7 Fast path for emojifying strings
Emojione's regex for detecting emoji is *enourmous* and we were
running it on every display name, room name, message etc every time
those components mounted. Add a much simpler regex to rule out the
majority of strings that contain no emoji and fast-path them.

Makes room switching about 10% faster (in my tests with all the
profiling turned on).
2017-09-08 23:05:27 +01:00
Matthew Hodgson
0e8bd856bc remove obsolete this._roomViewStoreToken.remove(); 2017-09-08 20:14:27 +02:00
David Baker
663dc3e513 Don't re-render matrixchat unnecessarily
...on room switch. We were setting most of the state in viewRoom,
but getting the current room ID from the RoomViewStore, but this
meant we did one setState from the RoomViewStore updating,
re-rendered and then setState again in viewRoom causing another
render. This just sets the room ID in viewRoom.
2017-09-08 18:56:57 +01:00
David Baker
aee2f3cdef Rename onHaveRoom
And move some code out of it which didn't really have any reason
to be hanging out there rather than just be where we set the room
a few lines above.
2017-09-08 18:11:13 +01:00
David Baker
bf982004f6 Give onHaveRoom the info it needs explicitly
Rather than giving it a state object which is not actually the
whole state but happens to be everything it actually wants
(currently)
2017-09-08 17:56:53 +01:00
David Baker
03dcded72f Blank line to make comment clearer 2017-09-08 17:39:10 +01:00
David Baker
1be35a77ec Don't wait for setState to run onHaveRoom
onHaveRoom sets some more state (among other things) so putting it
in the setState callback so it could observe the new state caused
us to have to re-render again unnecessarily. Just give it the new
state as a parameter.
2017-09-08 17:06:46 +01:00
David Baker
984d639a37 Merge remote-tracking branch 'origin/develop' into dbkr/scroll_state_store 2017-09-08 15:58:38 +01:00
David Baker
13b094a3f6 Merge pull request #1369 from matrix-org/dbkr/dont_always_paginate
Don't always paginate when mounting a ScrollPanel
2017-09-08 15:51:55 +01:00
David Baker
78a2e49705 Don't always paginate when mounting a ScrollPanel
Calling just checkFill on DidMount did not initially set the
scrollTop which meant that one back pagination request is always
performed regardless. This meant we would end up rending the
first batch of events, then paginating and re-rendering again
after the pagination got another batch, causing unnecessary render
churn.
2017-09-08 15:41:19 +01:00
David Baker
59c54d3756 Remove redundant code 2017-09-08 13:39:22 +01:00
Michael Telatynski
3df379cb49
fix radio for theme selection
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
2017-09-07 18:54:41 +01:00
David Baker
82d1afcc47 Correct comment 2017-09-07 17:16:32 +01:00
David Baker
408b8c18ea Introduce a RoomScrollStateStore
to keep the place we're scrolled to in rooms. This mainly eleimates
the extra, superfluous onRoomViewStoreUpdate callback that
happened when the previous room saved back its scroll state.
Moving the scroll state to a separate store means we can have this
not emit events because nothing needs to know when the scroll state
changes.
2017-09-07 17:08:36 +01:00
David Baker
d71f15adf4 Remove unused scrollStateMap from LoggedinView 2017-09-06 22:51:10 +01:00
David Baker
609d61d53c Revert "Implement sticky date separators" 2017-09-06 17:40:58 +01:00
Michael Telatynski
b10b0e573d
i18n and change message depending on success of copy
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
2017-09-06 11:29:55 +01:00
Michael Telatynski
269f1f33e3
show response on copy so you don't mash it
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
2017-09-06 11:27:25 +01:00
David Baker
289c3a5fbd Merge remote-tracking branch 'origin/develop' into dbkr/group_userlist 2017-09-05 14:20:02 +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
79ee41351c Fix typo 2017-09-04 15:45:28 +01:00
Luke Barnard
0ded4acba0 Mark TODO for https://github.com/vector-im/riot-web/issues/4951 2017-08-31 17:52:53 +01:00
Luke Barnard
d84190f58d Explain Flair debounce 2017-08-31 17:49:19 +01:00
Luke Barnard
e89d52ccbf Do not get avatars when no groups were/could be retrieved 2017-08-31 16:46:39 +01:00
Luke Barnard
86e8a4c7e2 Make componentWillMount not async
This was left over from a previous refactor
2017-08-31 16:44:14 +01:00
Luke Barnard
c9c0771355 Spelling 2017-08-31 16:29:45 +01:00
Luke Barnard
cdb28f956e Add comment for StickyContainer extension 2017-08-31 16:29:31 +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
David Baker
9efa604706 Merge remote-tracking branch 'origin/develop' into dbkr/group_userlist 2017-08-30 17:39:47 +01:00
David Baker
cf747fcb57 Lint 2017-08-30 17:34:44 +01:00
Luke Barnard
a29e7da06b Merge branch 'develop' into luke/feature-sticky-date-separators 2017-08-30 14:06:06 +01:00
David Baker
32b33c66b9 Merge pull request #1346 from matrix-org/t3chguy/shouldHideEvent_RoomStatusBar
apply shouldHideEvent fn to onRoomTimeline for RoomStatusBar
2017-08-30 13:58:40 +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
David Baker
22bb635ff3 Merge pull request #1352 from matrix-org/fix_hide_rr_regression
separate concepts of showing and managing RRs to fix regression
2017-08-30 13:50:44 +01:00
Michael Telatynski
05c232c8c3
revert fancy indents
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
2017-08-30 13:32:07 +01:00
Michael Telatynski
282618d5a1
separate concepts of showing and managing RRs to fix regression 2017-08-30 13:18:14 +01:00
Luke Barnard
ebc1993530 Implement Flair
Add 14x14 group avatars next to sender profiles.
2017-08-30 11:10:49 +01:00
Richard Lewis
84481f1a1e Merge pull request #1350 from matrix-org/rxl881/scalarTokenFix
Make staging widgets work with live and vice versa.
2017-08-30 11:04:50 +01:00
Richard Lewis
2ff1888054 Make staging widgets work with live and vice versa. 2017-08-30 10:36:22 +01:00
Richard van der Hoff
b9e047f0ff Avoid breaking /sync with uncaught exceptions
For reasons I don't fully understand, it appears that sometimes the
ReadReceiptMarker has no offsetParent. Rather than dying with an uncaught
exception when that happens (and taking out half of React as well as the /sync
handler), log a warning and suppress the animation.
2017-08-30 10:01:45 +01:00
David Baker
824b29dc1f PR feedback 2017-08-30 09:22:26 +01:00
Luke Barnard
5e98aa4850 Merge pull request #1343 from matrix-org/t3chguy/fix_two_roomlist_regressions
we need to pass whether it is an invite RoomSubList explicitly (i18n)
2017-08-29 16:33:48 +01:00
Luke Barnard
3f11f9148f Merge pull request #1348 from matrix-org/dbkr/fix_forgot_password_percent_encode
Percent encoding isn't a valid thing within _t
2017-08-29 15:02:26 +01:00
David Baker
6d5b1b7a55 Percent encoding isn't a valid thing within _t
Just use a plain apostrophe
2017-08-29 14:18:24 +01:00
David Baker
ec983b838a Unbreak password reset with a non-default HS
Broken by the change from onHsUrlChanged to onServerConfigChanged
in https://github.com/matrix-org/matrix-react-sdk/pull/811 where
ForgotPassword got missed.
2017-08-29 14:07:43 +01:00
David Baker
d86fe0df6e Merge remote-tracking branch 'origin/develop' into dbkr/group_userlist 2017-08-29 13:29:55 +01:00
Michael Telatynski
315f7a3ae7
apply shouldHideEvent fn to onRoomTimeline for RoomStatusBar
prevents N new message(s) when a hidden message comes in.
2017-08-28 13:46:09 +01:00
Michael Telatynski
edb449dfe5
we need to pass whether it is an invite RoomSubList explicitly (i18n) 2017-08-27 23:38:25 +01:00
Michael Telatynski
cd1e58cb61
_tJsx returns a React Object, the sub fn must return a React Object
not a string
2017-08-26 08:18:55 +01:00
David Baker
299db845ff PR feedback 2017-08-25 12:10:13 +01:00
David Baker
5cfec247f0 Merge pull request #1331 from matrix-org/luke/fix-completion-click-to-insert
Fix click to insert completion
2017-08-24 14:56:15 +01:00
David Baker
814e08d843 Merge pull request #1334 from matrix-org/dbkr/update_on_event_decrypted
Force update on timelinepanel when event decrypted
2017-08-24 13:35:39 +01:00
David Baker
3e92380d79 Merge pull request #1337 from matrix-org/rav/handle_call_synchronously
Dispatch incoming_call synchronously
2017-08-24 13:31:13 +01:00
Richard van der Hoff
b65e1769d7 Dispatch incoming_call synchronously
- this should fix a race where if the 'hangup' arrives hard on the tail of the
Call.incoming, we don't ignore it.

(We still have a problem in that we blip the hangup tone and UI, but that is
arguably a separate problem)
2017-08-24 13:05:17 +01:00
Michael Telatynski
ec6867dc8b
Fix React crying on machines without internet due to return undefined 2017-08-24 12:32:37 +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
David Baker
c11432c3e3 Catch the promise rejection if scalar fails
Otherwise this is incredibly annoying when developing if you don't
have a scalar that will allow you to register (ie. if you're
testing against an HS on your dev box)
2017-08-23 19:35:33 +01:00
Luke Barnard
8ed5422a45 Fix click to insert completion
And remedy weird API in the process. Autocomplete now exposes `onSelectionChange` to indicate that the user has selected another completion, rather than returning the chosen completion via onUpArrow etc.

Fixes vector-im/riot-web#4835
2017-08-23 16:22:14 +01:00
Richard Lewis
502a0480a0 Merge pull request #1327 from matrix-org/matthew/multiple-widgets
Matthew/multiple widgets
2017-08-22 10:53:51 +01:00
David Baker
e72bdffd62 Remove unused import 2017-08-22 10:22:51 +01:00
David Baker
5f816666e1 Merge remote-tracking branch 'origin/develop' into dbkr/group_userlist 2017-08-22 10:08:02 +01:00