Fixes https://github.com/vector-im/riot-web/issues/13645
Every time the checkbox value changes we acquire a new session now. This avoids us asking the server to change its direction partway through the request.
This causes a bit of UI jerk as the dialog goes from auth -> loading -> auth, however it's better than the alternative of reworking the entire UIA structure to support the `authData` dict changing. Originally this commit consisted of a `disabled` flag on the `InteractiveAuth` component which carried through to the stage's component, however it turns out that stack doesn't respect changes to the `authData` prop, which means the session ID we eventually send down is wrong (`erase: false` instead of the one with `erase: true`). Therefore, we do some logic to ensure we remount `InteractiveAuth` completely.
Further work in this area is described in https://github.com/vector-im/riot-web/issues/13646
Rageshakes from the wild indicate that device was null here which
implies that we somehow did not know about the device when verifiying
it? Log and null-check to avoid a soft crash.
We prompt to restore the key backup when bootstrapping if it's not
trusted, but the 'set up new recovery options' in this dialog just
sets up a new key backup which just goes back to trying to access
SSSS if cross-signing is enabled. This makes it reset the SSSS
passphase instead.
Fixes https://github.com/vector-im/riot-web/issues/13578
Fixes https://github.com/vector-im/riot-web/issues/13562
We only initialize a new key backup if the user requested one. If they've requested new keys but have not asked for keys to be backed up, we simply delete the now-invalid backup.
This also adds some logging to identify in rageshakes when someone resets their cross-signing, and when their key backup is being deleted.
Fixes https://github.com/vector-im/riot-web/issues/13479
This looks to have been caused by something to do with the app load order, though where is a mystery. The view change seems to fire for the same page type despite a dispatch that says to change the view type.
Instead of debugging it too much further, we'll just patch around it.
This commit also makes the settings link use a more safe approach to viewing the user info - not going through the dispatcher means we are at the mercy of browser behaviour when we already have a loop which deals with this.
Fixes: https://github.com/vector-im/riot-web/issues/11395
Problem here was that the form gets re-mounted but there wasn't a facility
to preserve the password confirmation field. Since the form validates
that the passwords are equal, if we mount with a password supplied we
just copy it over.
The key backup reminder was being shown too eagerly in cases when we hadn't
actually checked with the homeserver on key backup status. This changes to only
show the reminder when we're sure a backup doesn't exist.
Fixes https://github.com/vector-im/riot-web/issues/13404