* Add `AnalyticsTransactions` with a set of `TransactionDefinition` items matching those in the user story
* Use that for `AnalyticsLongRunningTransactions`, make sure we send the right fields (name, operation, description)
* Add `AnalyticsSendMessageWatcher` to track how long it takes for an event to be sent and for us to get a call back for that from sync
* Add `Noop` implementation for enterprise
* 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 support for login link
https://mobile.element.io/element?account_provider=example.org&login_hint=mxid:@alice:example.org
* Update screenshots
* Reduce code duplication
* Add test on OnBoardingPresenter
* Fix tool
* Ignore login parameter if user is not allowed to connect to the provided server.
* Improve tests.
* Cleanup
* Revert change on Project.xml.
* Add documentation
* Improve LoginHelper
* Rename LoginFlow to LoginMode
Move LoginFlow to package io.element.android.features.login.impl.login
Rename some implementation of LoginMode
Rename LoginFlowView to LoginModeView
* Change launchMode of MainActivity from `singleTop` to `singleTask`
Using launchMode singleTask to avoid multiple instances of the Activity when the app is already open. This is important for incoming share and for opening the application from a mobile.element.io link.
Closes#4074
---------
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."
* Use Anvil KSP instead of the Square KAPT one
* Fix several configuration cache, lint and test issues
* Allow incremental kotlin compilation in the CI
* Workaround Robolectric + Compose issue that caused `AppNotIdleException`
* Update the `enterprise` commit hash
* Update screenshots
---------
Co-authored-by: ElementBot <android@element.io>
* Add `MatrixClient.isSlidingSyncProxySupported` function
* Update localazy strings
* Modify `ErrorDialog` to have an `onSubmit` call, which will be used for the submit action.
Also make the title text optional and dismissing the dialog by tapping outside/going back configurable.
* Check if a forced migration to SSS is needed because the proxy is no longer available.
In that case, display the non-dismissable dialog and force the user to log out after enabling SSS.
* Enable native/simplified sliding sync by default.
* Refactor the login to make sure we:
1. Always try native/simplified sliding sync login first, if available.
2. Then, if it wasn't available or failed with an sliding sync not supported error, try with the proxy instead (either discovered proxy or forced custom one).
* Move logic to `LoggedInPresenter` and the UI to `LoggedInView`
* Update screenshots
---------
Co-authored-by: ElementBot <benoitm+elementbot@element.io>
* Use ComposablePreviewScanner to rework how screenshot testing works
* Add test sharding
* Update screenshots
* Fixes for Element Gallery
---------
Co-authored-by: ElementBot <benoitm+elementbot@element.io>
Co-authored-by: Benoit Marty <benoit@matrix.org>
* Change RoomSummaryDataSource to RoomListService to better reflects the rust api
* Better Sync management
* Sync: improve sync spinner rendering
* Sync: make test compiles
* Sync: add more test for sync spinner
* Sync: more clean-up
* Sync: pr review
---------
Co-authored-by: ganfra <francoisg@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>
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
Make danger check view changes
Add a check that if a file with @Preview or @LargeHeightPreview
in it is changed, then the corresponding build file includes
the showkase processor.
Also change the check that prompts about screenshots to use
the same @Preview logic instead of checking for "/layout" in
the path which doesn't work with compose.
Also add missing showkase processors
* 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>