* Initial implementation of notification sync using `WorkManager`
* Use custom `MetroWorkerFactory` to allow assisted injection in WorkManager Workers
* Add tests for `FetchNotificationWorker`. Create `FakeNotificationResolverQueue` to help testing.
* Add more tests, fix Konsist checks
* Add tests for `SyncNotificationWorkManagerRequest`
* Simplify `FakeNotificationResolverQueue`
* Multi account - Do not reset analytics store on sign out.
Else when 1 of many accounts is removed, the analytics opt in screen is displayed again.
* Multi accounts - first implementation.
* Multi accounts - Prevent user from logging twice with the same account
* Multi accounts - ignore automatic GoBack in case of error.
* Multi accounts - update first view when adding an account.
* Rename method storeData to addSession.
* Multi accounts - handle account switch when coming from a notification
* Multi accounts - handle login link when there is already an account.
* Multi accounts - handle click on push history for not current account.
* Multi accounts - improve layout and add preview.
* Add accountselect modules
* Multi accounts - incoming share with account selection
* Multi accounts - check the feature flag before allowing login using login link.
* Multi accounts - swipe on account icon
* Cleanup
* Multi accounts - fix other implementation of SessionStore
* Multi accounts - fix PreferencesRootPresenterTest
* Multi accounts - Add test on AccountSelectPresenter
* Multi accounts - Fix test on HomePresenter - WIP
* Update database to be able to sort accounts by creation date.
* Add unit test on takeCurrentUserWithNeighbors
* Fix test and improve code.
* Add exception
* Multi accounts - handle permalink
* Code quality
* Multi accounts - localization
* Fix issue after rebase on develop
* Fix issue after rebase on develop
* Fix tests
* Fix tests
* Fix tests
* Fix tests
* Update Multi accounts flag details.
* Add missing test on DatabaseSessionStore
* Add missing preview on LoginModeView
* Remove dead code.
* Add missing preview on PushHistoryView
* Document API.
* Rename API and update test.
* Remove MatrixAuthenticationService.loggedInStateFlow()
* Update screenshots
* Remove unused import
* Add exception
* Fix compilation issue after rebase on develop.
* Update screenshots
* Fix test
* Avoid calling getLatestSession() twice
* Rename `matrixUserAndNeighbors` to `currentUserAndNeighbors`
* Extract code to its own class.
* Add comment to clarify the code.
* Init current user profile with what we now have in the database.
It allows having the cached data (user display name and avatar) when starting the application when no network is available.
* Let the RustMatrixClient update the profile in the session database
* Fix test.
* When logging out from Pin code screen, logout from all the sessions.
tom
* Make PushData.clientSecret mandatory.
Also do not restore the last session as a fallback, it can lead to error in a multi account context, or even when a ghost pusher send a Push.
* Change test in RustMatrixAuthenticationServiceTest
* Do not use MatrixAuthenticationService in RootFlowNode, only use SessionStore
* Remove MatrixAuthenticationService.getLatestSessionId()
* Fix compilation issue after merging develop
* Add test on DefaultAccountSelectEntryPoint
* Fix compilation issue after merging develop
* Introduce LoggedInAccountSwitcherNode, to improve animation when switching between accounts.
* Rename Node to follow naming convention.
* Fix navigation issue after login.
* Remove unused import
* Revert "Fix navigation issue after login."
This reverts commit e409630856d7a7e741548016d7afe174ff1b40f7.
* Revert "Rename Node to follow naming convention."
This reverts commit 883b1f37c7207512d9f6605749977ad9045846a1.
* Revert "Introduce LoggedInAccountSwitcherNode, to improve animation when switching between accounts."
This reverts commit 9c698ff8152aceb5fd2b8b5ab5f609d28de64d24.
* Metro now have `@AssistedInject`.
* Update screenshots
* Introduce DelegateTransitionHandler and use it in RootFlowNode
---------
Co-authored-by: ElementBot <android@element.io>
Co-authored-by: ganfra <francoisg@element.io>
* Add `InvitePeopleState.sendInvitesAction`
Keep track of the progress on sending invites with a new state property.
* Keep `RoomInviteMembersView` open until invites are sent
* Sync strings from localazy
* extend `ProgressDialog` to support custom content
For my current design, a simple text element is insufficient. I extend
`ProgressDialog` to give more flexibility over the content of the dialog.
* Show progress dialog while invites are being sent
* Add new ProgressDialog previews to the naming exceptions list
* Update screenshots
---------
Co-authored-by: ElementBot <android@element.io>
Co-authored-by: Jorge Martín <jorgem@element.io>
* Initial threads support: parse `ThreadSummary`.
Replace several `isThreaded` values with `EventThreadInfo`, which contains the info about the event either being the root of a thread or part of it.
* Add `Threaded` timeline mode
* Add a `liveTimeline` parameter to `TimelineController`'s constructor. This way we can customise which timeline will be used as the 'live' one. Also add `@LiveTimeline` DI qualifier for the actual live timeline of the room.
* Create `ThreadedMessagesNode`. Allow opening a thread in a separate screen.
* Add the callbacks for the list menu actions - even if they're the wrong ones and will send the data to the room instead
* Send attachments and location in threads
* Fix polls in threads, add support for sending voice messages in threads
* Display thread summaries only when the feature flag is enabled
* Use 'Reply' instead of 'Reply in thread' when in threaded timeline mode
* Remove incorrect usage of `Timeline` in `MessageComposerPresenter`. This led to replies to threaded events not appearing as actual replies.
---------
Co-authored-by: ElementBot <android@element.io>
* Move `ChangeRoles*` classes to their own module so they can be shared
* Hook the change roles screen to the leave room action, add confirmation dialogs
* Use enum instead of sealed interface for `ChangeRoomMemberRolesListType`
* Try to improve communications between nodes
* refactor (leave room) : makes sure to expose only necessary code from api module
* Add `:libraries:previewutils` module to share some test fixtures used for UI previews
* Update screenshots
---------
Co-authored-by: ElementBot <android@element.io>
Co-authored-by: ganfra <francoisg@matrix.org>
* Add Konsist test to ensure that the result of a function returning a flow is remembered.
* Remember flows before they are collected by state.
* Fix compilation issue
* Make isOnline a val.
* Make selectedUsers() a val.
* Make flow() a val.
* Make getUserConsent(), didAskUserConsent() and getAnalyticsId() some val.
* Remove Timeline.paginationStatus() and replace by direct access to the underlined flow.
* Simplify test
* userConsentFlow must be initialized before because it's used in observeUserConsent
* Fix test compilation
* Let TextFieldListItem take the entire width.
* Add unit test to detect usage of OutlinedTextField.
* Use TextField instead of OutlinedTextField
* Remove unnecessary opt in to ExperimentalFoundationApi
* Use TextField instead of OutlinedTextField
* Fix compilation issue.
* Update screenshots
* ListDialog: add space between items.
* Update screenshots
* Set applyPaddingToContents to true by default.
* Update screenshots
---------
Co-authored-by: ElementBot <android@element.io>
* Extract TextFieldDialog to its own file (no other change).
* Add TextFieldDialogPreview
Enhance TextFieldDialog
* Let RoomMembersModerationView use TextFieldDialog
* Update screenshots
* Konsist.
* Add modifier parameter.
---------
Co-authored-by: ElementBot <android@element.io>
* Make self verification screens scrollable
* Remove unused fields from `VerificationEmoji`
* Make only the header and content scroll in `HeaderFooterPage`.
* Use the right 'emoji' icon in both flows (`ReactionSolid`)
---------
Co-authored-by: ElementBot <android@element.io>
* Move `observeRoomMemberIdentityStateChange` and associated classes to `libs:matrixui` module so they can be reused
* Add `EncryptionService.getUserIdentity` method to retrieve not only if the user is verified or not, but in which state they are
* Fix `IdentityChangePresenter` after the previous changes
* Fix `withFakeLifecycleOwner` and add `testWithLifecycleOwner` helper
* Display verified badge in DM top app bar when possible
* Display a verification violation warning icon next to the 'People' item in room details screen
* Display either a verified badge or a verification violation warning icon next to the room members in the room member list screen
* Display either a verified badge or a verification violation warning and withdraw verification button in the room member profile.
Generic user profiles won't display verification state anymore since we can't easily track changes in it.
* Add preview for room member details screen with verification violation identity state
* Add verified and violation badge to the `Profile` list item in room details screen
* Update screenshots
---------
Co-authored-by: ElementBot <android@element.io>
2 replace all actions have been performed:
- "SPDX-License-Identifier: AGPL-3.0-only" to "SPDX-License-Identifier: AGPL-3.0-only OR LicenseRef-Element-Commercial"
- "Please see LICENSE in the repository root for full details." to "Please see LICENSE files in the repository root for full details."