* 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>
* Disable Paparazzi tasks when Kover is running.
It allows us to split the test jobs between unit tests, screenshot test and coverage reports.
* Move Sonar upload to the quality workflow, since we have no lint info in tests.
* Try to improve 'Tests' CI job times
* Remove `-Pci-build=true` for jobs where the debug mode can be explicitly used
* Add some more excluded `*State` values for kover
* Run paparazzi verification at the same time as Kover tasks, otherwise the coverage is lost.
Drop from 90% to 85% to allow for smaller presenters where the
number of untestable instructions generated by kotlin/compose
can reach ~10% of the entire file.
* Fix displaying reaction row in message action list
* Rename `sendState` to `localSendState` and make it nullable.
Create an `isRemote` helper to detect if an event comes from the server instead.
---------
Co-authored-by: ElementBot <benoitm+elementbot@element.io>
Use member count instead of counting members
For the room details screen, use the member count as supplied by
matrix instead of waiting for the entire member list to be
retrieved and then manually adding up all the relevant users.
This removes the loading state of the member count, relying on
a spinner on the member list itself if the user actually wants
to see the members. (The performance of that will be improved
separately on the rust side in the future)
Closes#505
* 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>
* Add consumer proguard rules for SQLCipher
* Add changelog
* Explain why these rules are necessary
Co-authored-by: Andrew Morgan <1342360+anoadragon453@users.noreply.github.com>
* Try to switch to a supported version of Compose Rules to avoid dependency issues
---------
Co-authored-by: Andrew Morgan <1342360+anoadragon453@users.noreply.github.com>
* Fix dark theme
* First attempt at replicating iOS' UI & flows.
* Try to fix Maestro tests
* Add error dialogs and tests
* Remove unused modifiers
* Try to fix detekt issues
* Tidy up maestro login flow a bit
* Add `CompoundColorPalette` with some needed colors
* Fixes to designs
* Fix detekt issues
* More design fixes
* Some other minor design fixes
* Add changelog
* Minor tweaks.
* Remove legacy dark material theme as it's no longer needed.
* Move sliding sync 'learn more' url to constants object
* Remove unused focusManager
* Change how the displayed homeserver works
* Keep user input as homeserver if it's valid
* Remove `CompoundColorPalette`, try to fix issue when toggling dark mode.
* Add `@Stable` to the theme, adjust how it toggles in dark mode
* Remove unused strings
* Update screenshots
* Re-organize components in LoginRootScreen
* Bump min coverage to 55, max to 60
* Always replace the snapshots contents when running `recordPaparazzi`
* Fix dark theme preview of components using content colors
* Add `BackButton` component
* Handle errors with dialogs in a generic way
* Align our Dialog components with the designs, use them were needed
* Use a `MatrixHomeserverDetails` data class instead of just an URL.
* `AuthenticationService.getHomeserverDetails()` now returns a `StateFlow`.
Also, try to fix coverage issues in tests.
* Run Paparazzi tests just once when koverMergedReport is used.
* Make sure a Paparazzi failure breaks the test flow and blocks merging.
* Change ./gradlew check call in quality.yml to custom runQualityChecks task.