* Restore `MarkdownTextInput` contents: create a `MarkdownTextInputStateSaver` and use it to save and restore the text and selection.
* Add default text flags to the markdown composer
This looks a little more "sane", and more closely matches what iOS does
with it's filter chips. This has to manually track which filters were
"just-deselected" and move those even higher up the z stack to ensure
they appear above even when sliding right. This is because the order is
determined by the position left-to-right of the _final_ destination of
the chip. In this case we want anything that's either currently
selected, or was selected and is still fading out to appear on top.
Signed-off-by: Joe Groocock <me@frebib.net>
* Add plain text editor based on markdown input
- Fix autofocus of message composer.
- Remove `Message` data class, fetch the details in `MessagesPresenter` instead.
- Remove `enable rich text` option from advanced settings, set it as a build configuration instead.
* Fix MentionSpanProvider
* Bump RTE library to released `v2.37.3`
---------
Co-authored-by: ElementBot <benoitm+elementbot@element.io>
* Session falsely displayed as 'verified' with no internet connection
- Remove the need to wait for `isReady` for `SessionVerificationService.canVerifySessionFlow` to fix this.
- Rename `SessionVerificationService.canVerifySessionFlow` to `needsSessionVerification`.
- Make `isReady` private.
* Make logs less verbose, especially for sliding sync.
Use the same config as iOS for most targets.
* Make sure we don't try to upload logs that are larger than the max request size of the bug reporter server.
* Display the loading state as soon as the bug reporter starts processing the log files
* Add changelog
* UX cleanup: user profile.
- Move send DM to a CTA button.
- Add 'Call' CTA button too when there is a DM with that user and a call is possible.
- Add missing tests.
* Update screenshots
* Add tests for clicking on the avatar
---------
Co-authored-by: ElementBot <benoitm+elementbot@element.io>
* Enforce mandatory session verification only for new logins
- Creates `AppMigration` base interface as a way to isolate migration logic, app migrations must implement this interface.
- Creates `AppMigration01` with the existing logs removal migration and `AppMigration02` with the logic to allow existing sessions to skip verification.
- Add `DefaultSessionPreferencesStoreFactory.remove(sessionId)` to allow a ephemeral session store access to exist outside the `SessionScope` for this new migration.
* Fix tests
* Add more tests.
This also includes creating several abstractions.
* Review changes.
- Make `orderedMigrations` a class property, `migrations` just a constructor parameter to avoid incorrect usages.
- Create `lastMigration` property too, use it instead of `MIGRATION_VERSION`.
* UX cleanup: reorder options in the main settings screen
* Update screenshots
* Group sections in composables
* Add some horizontal padding to the `Footer` component
---------
Co-authored-by: ElementBot <benoitm+elementbot@element.io>
* Adjust typography in `SelectedUser` component
* Set 2 max lines for `SelectedUser` component.
Also update the theme token references.
* Update screenshots
---------
Co-authored-by: ElementBot <benoitm+elementbot@element.io>
* Always display 'lost recovery key?' option
* Use `isLastDevice` it to display only 'enter recovery key' option for verification.
* Update strings. This should fix the wrong term 'passcode' being used in the recovery key screen title.
* Disable 'lost your recovery key?' button while the screen is in a loading state
* Update screenshots
---------
Co-authored-by: ElementBot <benoitm+elementbot@element.io>
* Remove `SessionData.needsVerification` as the source of truth for session verification status.
- Use the Rust SDK `EncryptionService.verificationState()` instead, but always waiting for the first 'known' result (either verified or not, discarding 'unknown').
- Add a workaround in the super rare case when reading this value gets stuck somehow. We'll assume the user is not verified in that case.
- Make `DefaultFtueService.getNextStep` and dependent checks `suspend`.
- Make the `skip` button use a value in the session preferences instead.
* Log exception when the verification status can't be loaded
Co-authored-by: Benoit Marty <benoit@matrix.org>
* Fix review comments
---------
Co-authored-by: Benoit Marty <benoit@matrix.org>