Commit graph

426 commits

Author SHA1 Message Date
Luke Barnard
5c37d591b0 Unbreak auto joining 2017-06-15 13:35:19 +01:00
Luke Barnard
fc7da536d6 Add forceUpdate for memberships !== join 2017-06-15 13:32:56 +01:00
Luke Barnard
30566beb43 Fix if-statement thinko 2017-06-15 13:28:52 +01:00
Luke Barnard
d55d61e456 Remove redundant isUserJoined 2017-06-15 12:37:01 +01:00
Luke Barnard
b90ceaa111 Display a spinner until new room object after join success
If we successfully join, display a spinner until the js-sdk indicates (via room membership event or room event) that we can start using the room normally. A room event indicates we have never seen that room which means we need to use the new room object to clobber state.room. This is to make sure we replace the room that is set up for peeking with the room that can be used normally. For historical rooms, this isn't a problem.

This is a workaround for the fact that when peeking, the js-sdk calls onRoom, which is difficult to handle from the clients perspective because onRoom should only be called for rooms that you've never seen before. But if you peek a room that you've joined and left and get an onRoom, you run into trouble. You also can't just always use onRoomMembership because this won't be triggered for the first time you see the room. So we end up using a combination of both.

See https://github.com/matrix-org/matrix-js-sdk/issues/464 for discussion on improving this
2017-06-15 12:01:16 +01:00
Luke Barnard
58554cce53 Remove racey condition
joining might become false before we get the room down the sync
2017-06-14 17:13:13 +01:00
Luke Barnard
ed5f01d46f Add logging for diagnosis 2017-06-14 16:53:21 +01:00
Luke Barnard
b5fd78a97f Only attempt to peek once in the lifetime of RoomView 2017-06-14 16:50:46 +01:00
Luke Barnard
2d6ba056d1 Attempt to follow closely what RoomView did pre-ILAG
In terms of peeking and what happens to the state when joining. This is another attempt to mitigate https://github.com/vector-im/riot-web/issues/4307
2017-06-14 16:48:34 +01:00
Luke Barnard
c02dbd1cdc Rename initial state variables 2017-06-08 17:26:08 +01:00
Luke Barnard
000a045e35 Rename RVS state (event -> initialEvent) and redocument 2017-06-08 15:52:21 +01:00
Luke Barnard
1792fa45f4 Null-guard roomId before sending a dispatch to update scroll state
Otherwise we pointlessly assign the null key to something
2017-06-08 15:45:50 +01:00
Luke Barnard
59e649f326 Add comment about roomId potentially not being resolved following an update from RoomViewStore 2017-06-08 15:43:45 +01:00
Luke Barnard
e58e4db628 Explain why search results are cleared when eventId changes 2017-06-08 15:38:58 +01:00
Luke Barnard
dca2be6325 Add RoomView initial state and docs 2017-06-08 15:37:30 +01:00
Luke Barnard
d3cf78ff5a Control currently viewied event via RoomViewStore
Fix for https://github.com/vector-im/riot-web/issues/4224

Due to the way `MatrixChat` does a state update when the `view_room` dispatch fires and a second update when `RoomViewStore` sends an update, the current event ID and room ID were becoming out of sync. The solution devised was to have the event ID managed by the `RoomViewStore` itself and do any defaulting there (for when we revisit a room that we saved scroll state for previously).

This required a few changes:
 - The addition of `update_scroll_state` in `RoomViewStore` allows the `RoomView` to save scroll state for a room before swapping to another one. Previously the caching of scroll state was done in `RoomView`.
 - The `view_room` dispatch now accepts an `event_id`, which dictates which event is supposed to be scrolled to in the `MessagePanel` when a new room is viewed. It also accepts `event_offset`, but currently, this isn't passed in by a dispatch in the app, but it is clobbered when loading the default position when an `event_id` isn't specified. Finally, `highlighted` was added to distinguish whether the initial event being scrolled to is also highlighted. This flag is also used by `viewRoom` in `MatrixChat` in order to decide whether to `notifyNewScreen` with the specified `event_id`.
2017-06-08 14:17:49 +01:00
Luke Barnard
53ea41e8a5 Merge branch 'develop' into new-guest-access 2017-06-07 12:08:37 +01:00
David Baker
1dbdbc163b Cancel 'join room' action if 'log in' is clicked
or 'choose different server'

We canceled the deferred action in the MatrixChat SetMxId dialog
but not the one in roomview.

Fixes https://github.com/vector-im/riot-web/issues/4217
2017-06-07 11:55:24 +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
Luke Barnard
239874ccce Introduce state peekLoading to avoid collision with roomLoading
The room loading spinner will now be displayed if the alias is being resolved (roomLoading) or if the peek is being loaded for the room `peekLoading`.
2017-06-05 09:52:39 +01:00
David Baker
2cc9f9c403 Fix accepting a 3pid invite
Fixes https://github.com/vector-im/riot-web/issues/4123
2017-06-02 16:25:14 +01:00
David Baker
03f4f269ce Propagate room join errors to the UI
Dispatch so we can set the state in RoomViewStore. Show the error
when the room join fails (unsure if it's better to do this from
the component or the store). Remove unused joinError from roomview.
2017-06-02 11:53:10 +01:00
Luke Barnard
16c4c14a16 Fix to show the correct room 2017-06-01 18:01:30 +01:00
Matthew Hodgson
e30e45a82c Merge branch 'develop' into new-guest-access 2017-05-30 21:05:07 +01:00
Michael Telatynski
ee6789ed15 change aux order so room settings is top most, forwarding could go weird
if you clicked roomsettings whilst forwarding

Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
2017-05-30 11:22:27 +01:00
Michael Telatynski
baba2e12e2 fix weird indentation
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
2017-05-30 11:21:33 +01:00
Michael Telatynski
ff9141e424 add a hideCancel flag as some things have own cancel etc on RoomHeader
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
2017-05-30 11:20:41 +01:00
Matthew Hodgson
df599890c5 add login link to SetMxIdDialog 2017-05-29 01:32:31 +01:00
Matthew Hodgson
5c885922d9 Merge branch 'develop' into new-guest-access 2017-05-28 22:58:18 +01:00
Matthew Hodgson
accc17a39a Merge pull request #812 from t3chguy/forward_message
Message Forwarding
2017-05-28 02:37:31 +01:00
David Baker
2d6bf5fa91 Remove messages with HTML formatting
The translations strings are not HTML and it gets escaped.
2017-05-25 20:04:28 +01:00
David Baker
443ab1add7 Put back default strings on dialogs
But make them work by calling _t in render rather than
getDefaultProps().

Also sort out some 'Warning!' strings
2017-05-25 18:20:48 +01:00
Luke Barnard
91edc06441 Use RVS to indicate "joining" when setting a mxid
This prevents RoomView from doing any peeking whilst the join/registration is in progress, causing weirdness with TimelinePanel getPendingEventList (which throws an error if called when peeking).
2017-05-25 17:04:42 +01:00
David Baker
5c359e63ab Bulk change counterpart imports
to use languageHandler wrapper func
2017-05-25 11:39:08 +01:00
Luke Barnard
298c5e4df3 Implement a store for RoomView
This allows for a truely flux-y way of storing the currently viewed room, making some callbacks (like onRoomIdResolved) redundant and making sure that the currently viewed room (ID) is only stored in one place as opposed to the previous many places.

This was required for the `join_room` action which can be dispatched to join the currently viewed room.

Another change was to introduce `LifeCycleStore` which is a start at encorporating state related to the lifecycle of the app into a flux store. Currently it only contains an action which will be dispatched when the sync state has become PREPARED. This was necessary to do a deferred dispatch of `join_room` following the registration of a PWLU (PassWord-Less User).

The following actions are introduced:
 - RoomViewStore:
    - `view_room`: dispatch to change the currently viewed room ID
    - `join_room`: dispatch to join the currently viewed room
 - LifecycleStore:
    - `do_after_sync_prepared`: dispatch to store an action which will be dispatched when `sync_state` is dispatched with `state = 'PREPARED'`
 - MatrixChat:
    - `sync_state`: dispatched when the sync state changes. Ideally there'd be a SyncStateStore that emitted an `update` upon receiving this, but for now the `LifecycleStore` will listen for `sync_state` directly.
2017-05-24 16:56:13 +01:00
David Baker
d419c42a4f Squash merge https://github.com/matrix-org/matrix-react-sdk/pull/801 2017-05-23 15:16:31 +01:00
Luke Barnard
05aaa599cc Merge branch 'develop' into new-guest-access
Conflicts:
	src/components/structures/MatrixChat.js
2017-05-22 16:19:10 +01:00
Michael Telatynski
cc7edbf86d allow for sending arbitrary events, also override highlight with
event currently being forwarded while forwardingEvent is set

Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
2017-05-19 01:29:11 +01:00
Michael Telatynski
a2ab36f598 Merge branch 'develop' of github.com:matrix-org/matrix-react-sdk into forward_message
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
2017-05-19 00:33:36 +01:00
Luke Barnard
f199f3599e Replace NeedToRegisterDialog /w SetMxIdDialog
This uses MatrixChat's `view_set_mxid`
2017-05-15 17:31:26 +01:00
Michael Telatynski
5e4467adce hide settings/search appropriately
pass inRoom prop to RoomHeader (defaults to false)
remove default onSettingsClick, handle if it is passed EVERYWHERE

if onSettingsClick is passes, show that button
show search button only if we are in the room, seems to fail otherwise
this seems to handle all cases I could throw at it. Give it your best

Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
2017-05-11 17:35:06 +01:00
Luke Barnard
5151264f60 Merge branch 'develop' into new-guest-access
Conflicts:
	src/component-index.js
2017-05-11 13:22:30 +01:00
Luke Barnard
ad2ed12980 Redesign mxID chooser, add availability checking
Requires https://github.com/matrix-org/matrix-js-sdk/pull/432 for availability checking.

Changes:
 - Redesign the dialog to look more like https://github.com/vector-im/riot-web/issues/3604#issuecomment-299226875
 - Attempt to fix wrong password being stored by generating one per SetMxIdDialog (there's no issue tracking this for now, I shall open one if it persists)
 - Backwards compatible with servers that don't support register/availability - a spinner will appear the first time a username is checked because server support can only be determined after a request.
 - Rate-limited by a 2s debounce
 - General style improvements
2017-05-10 14:22:17 +01:00
Michael Telatynski
9d92f93fcb consolidate call onPageUnload handler into RoomView
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
2017-05-03 16:39:19 +01:00
Michael Telatynski
daae3bd1ec warn on unload when uploading file(s)
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
2017-04-29 06:27:06 +01:00
Luke Barnard
5a5768a4ec Try to fix tests 2017-04-28 13:38:35 +01:00
Luke Barnard
d12b1903f2 Fix defer promise logic 2017-04-28 13:29:30 +01:00
Luke Barnard
6dff4a4415 Return early after cancelled mxid dialog 2017-04-28 13:28:34 +01:00
Luke Barnard
8774100508 Initial implementation: SetDisplayName -> SetMxIdDialog
- Replaces SetDisplayNameDialog with SetMxIdDialog. This new dialog will use InteractiveAuth to authenticate a user with their chosen mxid.

De-scoped:
 - style tweaks for the InteractiveAuth in the dialog (capcha) and error message.
 - checking for mxid availability
2017-04-28 13:22:55 +01:00
Luke Barnard
8f7359fce1 Only show jumpToReadMarker bar when RM !== RR
If RM !== RR, use the pos. of the RM to determine whether it is visible, as before.
2017-04-27 14:03:54 +01:00