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.
`unread` and `unread-muted` store booleans in the cache, and can easily be `false`. Without this patch, both of those cached types would be cleared from the object where a later call to `getRoomState` would try and re-populate them. `getRoomState` is supposed to use the cache where possible to avoid making the more expensive calls required to calculate those booleans.
On my account in a test environment, this brings the `generateRoomLists` execution time down from ~250ms to just ~30ms.
This still does not solve the whole issue, but should solve the more common case of performance woes for people.
This padding only one side made it impossible to center things in the dialog.
Since the dialog also has nice spacing without the padding, this change removes
it.
Fixes https://github.com/vector-im/riot-web/issues/7862.