It can take some time to actually set the status message and see it play back as
a committed event. This adds a spinner for immediate feedback so it's clear
that something is happening.
Fixes https://github.com/vector-im/riot-web/issues/8135.
This returns to the previous behavior of avatar only without a button when the
custom status feature is disabled so that you don't get pointer cursor for
something that does nothing when clicked.
The avatar ring spacing is kept consistent with and without the feature enabled
by using a different class in CSS.
Similar to changes in `StatusMessageContextMenu`, this changes to using the new
status message event emitted in js-sdk to simplify state handling for the avatar
ring when a status is present.
This updates the custom status context menu to match the latest comps. A single
button is used for setting / clearing, depending on what is appropriate.
The state logic is also changed to depend on events and storage from js-sdk for
the committed status message. This makes it easy to distinguish the value being
edited from what's currently committed.
Adjusts the appearance of the avatar ring to match the latest comps.
In addition, we now always render the surrounding button element, which
simplifies styling since the same size is now occupied both with and without the
feature.
This improves alignment between text in the composer and text in the message
history (https://github.com/vector-im/riot-web/issues/8111).
- move some methods to ResizeItem subclass
- allow distributor to instanciate sizer and resizeitem it needs
through static factory methods, instead of passing in another ctor
a distributor can only function with the right item and sizer anyways.
- use consistent import/export style
- remove obsolete code
Split the 'new recovery method' into two cases: one where the new
recovery method isn't trusted and you need to verify the device, and
another where it is and the client is using it (where it's more of
an FYI).
https://github.com/vector-im/riot-web/issues/8069
Fixes https://github.com/vector-im/riot-web/issues/7997
This isn't super elegant, but it also provides some amount of utility for people. As users might leave the old room, it might be useful to see when exactly a room was upgraded. We should fix the underlying cause for infinite back pagination though.
The "New Recovery Method" dialog would show if either the recovery method had
been changed or removed, but the dialog text didn't make much sense for the
removed case.
This adds a separate dialog customized for the removed case.
Fixes https://github.com/vector-im/riot-web/issues/8046.
and remove from ignored files
Missed a load of the async arrows functions when changing them because
they were in the ignored files, so trying to chip away at this.
A lot of these were unused imports / variables. Probably the only
interesting one was a 'this' in a non-member function which I've moved
to be a member function.
Since the initial key backup can take several minutes for some users, this moves
the upload step to the background. The create key backup flow now only marks
all sessions for backup synchronously, with the actual backup happening later.
The key backup panel in Settings gains a new row to show a summary of upload
status. Users are directed there if they wish to know if the backup is done.
The text in various related dialogs has also been tweaked to fit the new flow.
* Put a cancel button on the first page of the create key backup
dialog
* Move settings logic into the room reminder: I know this is moving
logic *into* a view but RoomView is quite heavyweight as it is.
* Give the recovery reminder an explicit 'onDontAskAgainSet' rather
than onFinished which was getting called with false when the last
screen of the dialog was closed with the cancel 'x' rather than
the 'close' button.
https://github.com/vector-im/riot-web/issues/8066
Including unused substitutions triggers console logs, so change the key backup
panel to only substitute what's actually used in each message.
Fixes https://github.com/vector-im/riot-web/issues/8047.
All of the anchors were pointed at `#` which, when clicked, would trigger a hash change in the browser. This change races the change made by the screen handling where the screen handling ends up losing. Because the hash is then tracked as empty rather than `#/login` (for example), the state machine considers future changes as no-ops and doesn't do anything with them.
By using `preventDefault` and `stopPropagation` on the anchor click events, we prevent the browser from automatically going to an empty hash, which then means the screen handling isn't racing the browser, and the hash change state machine doesn't no-op.
After applying that fix, going between pages worked great unless you were going from /login to /home. This is because the MatrixChat state machine was now out of sync (a `view` of `LOGIN` but a `page` of `HomePage` - an invalid state). All we have to do here is ensure the right view is used when navigating to the homepage.
Fixes https://github.com/vector-im/riot-web/issues/4061
Note: the concerns in 4061 about logging out upon entering the view appear to have been solved. Navigating to the login page doesn't obliterate your session, at least in my testing.
The previous algorithm had a bug where it was getting stuck on the power level comparison, leaving the memberlist incorrectly ordered. The new algorithm uses less branching to try and walk through the different cases instead. Additionally, the steps used to determine the order have changed slightly to better represent an active member list.
This commit also includes changes to try and re-sort the member list more often during presence changes. Events are not always emitted, however. This may be a js-sdk bug but appears to happen prior to these changes as well.
Fixes https://github.com/vector-im/riot-web/issues/6953
All of the anchors were pointed at `#` which, when clicked, would trigger a hash change in the browser. This change races the change made by the screen handling where the screen handling ends up losing. Because the hash is then tracked as empty rather than `#/login` (for example), the state machine considers future changes as no-ops and doesn't do anything with them.
By using `preventDefault` and `stopPropagation` on the anchor click events, we prevent the browser from automatically going to an empty hash, which then means the screen handling isn't racing the browser, and the hash change state machine doesn't no-op.
After applying that fix, going between pages worked great unless you were going from /login to /home. This is because the MatrixChat state machine was now out of sync (a `view` of `LOGIN` but a `page` of `HomePage` - an invalid state). All we have to do here is ensure the right view is used when navigating to the homepage.
Fixes https://github.com/vector-im/riot-web/issues/4061
Note: the concerns in 4061 about logging out upon entering the view appear to have been solved. Navigating to the login page doesn't obliterate your session, at least in my testing.
If the current device hasn't verified the device that created the account's
current key backup version, then the current device is won't use the key backup.
This change adjusts an existing in-room reminder to do the right thing for this
case by allowing the user to verify the device that created the key backup.
Fixesvector-im/riot-web#7902.
The classes on the search box input were changed without updating the focusing
loop in the room filter which used one of these classes as a boundary condition.
This led to a case that could loop forever.
Regressed by #2267.
Fixesvector-im/riot-web#7926.
It's possible to get errors when fetching commits (for example, if the rate
limit is exceeded), so this will handle the error case and display it instead of
an infinite spinner.
Signed-off-by: J. Ryan Stinnett <jryans@gmail.com>
a view_right_panel_phase is dispatched by RoomHeaderButtons
on view_room, which was triggering this to show the panel again.
Check the fromHeader flag just like when hiding the panel so
only room header buttons can hide or show the right panel
the overflow/underflow events are not always reliable in nooverlay
browsers (FF), so forward the checkOverflow call we need anyway
for the scroll indicator gradients to see if we need to do the
margin trick for the on-hover scrollbar we use in nooverlay browsers.
this fixes on hover jumping in a subroomlist
check overflow on mount
restore size on query change (in case a sublist appeared)
check overflow when updating rooms
avoid duplicating for restoring size and checking overflow
Adds a New Recovery Method dialog which is shown when key backup fails because
of a version mismatch / version not found error.
The set up button in the dialog currently only marks a device as verified (via a
verification prompt) instead of the eventual restore and cross-sign flow, since
those pieces don't exist yet.
Signed-off-by: J. Ryan Stinnett <jryans@gmail.com>