- Adds `ModalBottomSheet` to our design components (it wraps the homonimous Material3 one).
- Adds a bottom sheet to the Room list using the aforementioned design component.
- Adds navigation from the room list to a room detail (context menu "Settings" action).
- Consolidates the "leave room flow" into a new `leaveroom` module used by both the room list and the room details.
- Adds progress indicator to the leave room flow
- Uses new `leaveroom` module in `roomdetails` module too.
Parent issue:
- https://github.com/vector-im/element-x-android/issues/261
Invite users to existing rooms
Scope:
- Allow inviting from the room detail screen and the member list
- Invite option is only shown if the user has the correct power level
- Search flow the same as creating a new room, allowing multi-select
- Existing room members/invitees are disabled with a custom caption
- Sending is asynchronous, an error dialog will appear wherever the
user is if necessary
Closes#245
Splits a Room's member list in 2 showing pending invitees first and then the actual room member.
This simple user facing change entails a host of under the hood changes:
- It copies the logic from the `userlist` module and merges it into the `roomdetails` module removing all details not related to the member list (e.g. gets rid of multiple selection, debouncing etc.).
- Uncouples the `roomdetails` module from the `userlist` one. Now leaving only the `createroom` module to depend on the `userlist` module. Therefore the `userlist` module could be in the future completely removed and merged into the `createroom` module.
- Changes the room members count in the room details screen to only show the members who have joined (i.e. don't count those still in the invited state).
Missed ACs:
- This change does not make the member list live update. Discussion is ongoing on how to make this technically feasible.
Parent issue:
- https://github.com/vector-im/element-x-android/issues/246
Search for users to start a new DM.
Hooks up the create room UI to the matrix client to get
search results. Searches are debounced for 500ms and
only executed when 3 or more characters are entered.
Wrap the result state so we can distinguish between
"no results because we haven't searched yet" and
"no results because the API returned nothing", and
add a "No results found" message in the UI for the
latter case.
Closes#95
Hook up accept and decline buttons in the invites UI. Accept
will attempt to accept and then navigate to the room; decline
shows a confirmation dialog.
Fixes#106
* Implement room member list
* Move timeline initialization back to `TimelinePresenter`.
* Fix crash when the `innerRoom` inside a `RustMatrixRoom` is destroyed but `syncUpdateFlow` is still running.
* Address review comments
* Design fixes.
* Make text in emoji items secondary color and the snackbar duration short again
* Try to make margins smaller on smaller displays
---------
Co-authored-by: Florian Renaud <florianr@element.io>
* Create `RoomLastMessageFormatter` to produce readable room summaries.
* Add unit tests using Robolectric, fix bugs
* Add changelog
* Move `RoomLastMessageFormatter` back to `impl` module, allow it to receive an `EventTimelineItem` instead of `MessageContent`.
* Fix the case when a valid homeserver url can't be extracted from the mxid
* Add changelog
* Add `use` to Rust SDK calls in loginto automatically free memory from Rust objects
* Use user friendly error messages in login following iOS logic, fix dialog colors.
* Use `AlertDialogDefaults` for the default properties of dialogs
* Improve Maestro tests with wrong password dialog
* Add tests for error messages
* 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.