* 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>
* Add `SessionData.needsVerification`:
- Allows us to add a skip button for debug builds.
- We can have the verification state almost instantly.
- It doesn't depend on network availability to know the verification state and display the UI.
* Add DB migration.
- Make the skip button in the verification flow skip the whole flow including the completed screen.
- Save the session as verified in `RustEncryptionService.recover(recoveryKey)`.
* Enforce session verification for existing users too.
* Fix verification confirmed screen subtitle (typo in id, was using the wrong string)
* Update screenshots
---------
Co-authored-by: ElementBot <benoitm+elementbot@element.io>
* First attempt at implementing encrypted history banner and removing old UTDs
* Get the right behavior in the timeline
* Implement the designs
* Extract post-processing logic, add tests
* Add encryption banner to timeline screenshots
* Create FTUE feature to handle welcome screen and analytics
* Move classes to their own packages, add tests for `DefaultFtueState`.
* Remove unnecessary private MutableStateFlow
* Move some FTUE related methods and classes back to the `impl` module
* Handle back press at each FTUE step
* Remove unneeded `TestScope` receiver for `createState` in tests.
* Use light & dark previews for the banner view.
* Move color customization from `TextStyle` to `Text` component.
* Rename `InfoList` design components, use them in `AnalyticsOptInView` too.
* Cleanup MatrixClient.
* Fix copy&paste error
Co-authored-by: Benoit Marty <benoit@matrix.org>
* Fix typo
* Fix Maestro tests
---------
Co-authored-by: ElementBot <benoitm+elementbot@element.io>
Co-authored-by: Benoit Marty <benoit@matrix.org>
* Update AGP to 8.0.0.
* Set JAVA_HOME to JDK17
* Update lint version.
* Use right JDK for dependency analysis, replace deprecated env var.
* Upgrade to Gradle 8.1.
* Remove `@Supress(DSL_SCOPE_VIOLATION)` as it's no longer needed.
---------
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>