* Handle poll events from the sdk
* Render started poll event in the timeline
* Create poll module
* Check poll kind before revealing the results
* Check if user has voted before revealing the results
* Add active poll previews
* Minor cleanup
* Update todos
* Fix CI
* Remove hardcoded string
* Update preview
* changelog file
* Update screenshots
* Use CommonPlurals
* Set poll root view as selectableGroup
* Improve poll result rendering
* Update screenshots
* Add missing showkase processor
* Update screenshots
* Add feature flag for polls
* Add supporting text in PreferenceCheckbox
* Render poll events if feature flag is enabled
* changelog
* Update screenshots
* Fix tests
* Move feature flag check to poll factory
---------
Co-authored-by: ElementBot <benoitm+elementbot@element.io>
* Handle poll events from the sdk
* Render started poll event in the timeline
* Create poll module
* Check poll kind before revealing the results
* Check if user has voted before revealing the results
* Add active poll previews
* Minor cleanup
* Update todos
* Fix CI
* Remove hardcoded string
* Update preview
* changelog file
* Update screenshots
* Use CommonPlurals
* Set poll root view as selectableGroup
* Improve poll result rendering
* Update screenshots
* Add missing showkase processor
* Update screenshots
---------
Co-authored-by: ElementBot <benoitm+elementbot@element.io>
* Make `InternalButton` internal instead of private so it can be customised.
Also, change the `ButtonColors.contentColor` for text buttons to `LocalContentColor.current` by default.
* Add temporary color for Snackbar action label
* Implement `Snackbar` component based on Compound
* Propagate changes to all other components
* Use right Preview annotation config
* Move `ButtonVisuals` to their own file
* Update screenshots
* Make previews internal
* Update screenshots
* Set a custom token for contentColor in AppBars
* Change 'Label' to 'Action' in the previews
* Add changelog
* Update screenshots
---------
Co-authored-by: ElementBot <benoitm+elementbot@element.io>
* Create `CompoundButton`
* Some fixes
* Lint fixes
* Start replacing existing `Button` usages
* Replace button usages
* Remove previous Button composable
* Rename `CompoundButton` to `Button`
* Fix emphasized button being displayed as Text
* Fix cancel button in `WaitListView`
* Update screenshots
* Add shorthand functions for `OutlinedButton` and `TextButton`
* Add changelog
* Fix wrong size used for emphasized button in dialog
* Create a private `ButtonInternal` implementation with the shared logic.
- Make `ButtonStyle` private.
- Rename `title` to `text`.
- Rename `buttonStyle` and `buttonSize` to just `style` and `size`.
* Fix several warnings and lint issues.
* Update screenshots
---------
Co-authored-by: ElementBot <benoitm+elementbot@element.io>
* Sort reactions by count and then timestamp
- Sort reactions within an aggregation by timestamp descending. This puts the most recent at the top, useful in cases like the reaction summary view or getting the most recent reaction.
- Sort aggregated reactions by count and then timestamp ascending, using the most recent reaction in the aggregation. This appends new aggregations on the end of the reaction layout.
* Add reaction summary view
* fix warnings
* Fix test unit tests and add sorting tests
- Fix broken build in test code
- Add a test for reaction sorting
* Remove default closure, move logic to presenter and add tests
* Update screenshots
* Fix imports
* Revert Screenshots I didn't update
* Fix imports remove screetshots
* Update screenshots
* Update screenshots
* Address comments.
* Update screenshots
* Remove unnecessary snapshotFlow
* Fix code quality checks
---------
Co-authored-by: ElementBot <benoitm+elementbot@element.io>
* Fetched `RoomMembers` are mapped in parallel
* Add horizontal padding to room/user name in room details screen
* Relax User & Event id regex matches
---------
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>
* Make sure we ignore notifications for open rooms
- Listen to process lifecycle changes in `AppForegroundStateService`. Use initializers to reliable create it.
- Merge `AppNavigationState` with `AppForegroundState`. Renamed the previous `AppNavigationState` to `NavigationState`, created a new `AppNavigationState` which contains both the navigation state and the foreground state.