* 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
- Add `AnalyticsService.startTransaction(...)` to start a logging transaction that can be uploaded to Sentry if the user enabled the analytics upload.
- Add `AnalyticsTransaction` wrapper to abstract the Sentry ones.
- Added several helper methods to improve the UX around these transactions.
- Then measure:
- Time until the first sync, and how it ended.
- Time until the first rooms are displayed.
- Time to load a room or a preview.
- Time to load a timeline.
- Do not reset the analytics store, so that we do not ask the user consent again => Parity with iOS.
- Do not reset the permission store, because it contains information that's related to the system permission, which cannot be retrieved otherwise => Should help with #3195.
* 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
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."
* 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>