From 6e1b3460959e6cf6270f3213bc6f80a5bb9de053 Mon Sep 17 00:00:00 2001 From: Benoit Marty Date: Wed, 27 Mar 2024 10:15:57 +0100 Subject: [PATCH] Add dependency on `com.github.matrix-org:matrix-analytics-events` and remove local plan and management of its import. --- .../workflows/sync-from-external-sources.yml | 24 - dependencies_groups.gradle | 1 + docs/analytics.md | 2 +- tools/import_analytic_plan.sh | 18 - vector/build.gradle | 3 + .../analytics/itf/VectorAnalyticsEvent.kt | 22 - .../analytics/itf/VectorAnalyticsScreen.kt | 22 - .../app/features/analytics/plan/CallEnded.kt | 56 -- .../app/features/analytics/plan/CallError.kt | 51 -- .../features/analytics/plan/CallStarted.kt | 51 -- .../app/features/analytics/plan/Composer.kt | 90 ---- .../features/analytics/plan/CreatedRoom.kt | 41 -- .../app/features/analytics/plan/Error.kt | 183 ------- .../features/analytics/plan/Interaction.kt | 509 ------------------ .../app/features/analytics/plan/JoinedRoom.kt | 107 ---- .../features/analytics/plan/MobileScreen.kt | 353 ------------ .../plan/NotificationTroubleshoot.kt | 41 -- .../analytics/plan/PerformanceTimer.kt | 109 ---- .../analytics/plan/PermissionChanged.kt | 53 -- .../features/analytics/plan/PollCreation.kt | 63 --- .../app/features/analytics/plan/PollEnd.kt | 43 -- .../app/features/analytics/plan/PollVote.kt | 43 -- .../features/analytics/plan/RoomModeration.kt | 137 ----- .../app/features/analytics/plan/Signup.kt | 84 --- .../features/analytics/plan/SlashCommand.kt | 46 -- .../analytics/plan/SuperProperties.kt | 61 --- .../analytics/plan/UnauthenticatedError.kt | 66 --- .../features/analytics/plan/UserProperties.kt | 98 ---- .../app/features/analytics/plan/ViewRoom.kt | 312 ----------- 29 files changed, 5 insertions(+), 2684 deletions(-) delete mode 100755 tools/import_analytic_plan.sh delete mode 100644 vector/src/main/java/im/vector/app/features/analytics/itf/VectorAnalyticsEvent.kt delete mode 100644 vector/src/main/java/im/vector/app/features/analytics/itf/VectorAnalyticsScreen.kt delete mode 100644 vector/src/main/java/im/vector/app/features/analytics/plan/CallEnded.kt delete mode 100644 vector/src/main/java/im/vector/app/features/analytics/plan/CallError.kt delete mode 100644 vector/src/main/java/im/vector/app/features/analytics/plan/CallStarted.kt delete mode 100644 vector/src/main/java/im/vector/app/features/analytics/plan/Composer.kt delete mode 100644 vector/src/main/java/im/vector/app/features/analytics/plan/CreatedRoom.kt delete mode 100644 vector/src/main/java/im/vector/app/features/analytics/plan/Error.kt delete mode 100644 vector/src/main/java/im/vector/app/features/analytics/plan/Interaction.kt delete mode 100644 vector/src/main/java/im/vector/app/features/analytics/plan/JoinedRoom.kt delete mode 100644 vector/src/main/java/im/vector/app/features/analytics/plan/MobileScreen.kt delete mode 100644 vector/src/main/java/im/vector/app/features/analytics/plan/NotificationTroubleshoot.kt delete mode 100644 vector/src/main/java/im/vector/app/features/analytics/plan/PerformanceTimer.kt delete mode 100644 vector/src/main/java/im/vector/app/features/analytics/plan/PermissionChanged.kt delete mode 100644 vector/src/main/java/im/vector/app/features/analytics/plan/PollCreation.kt delete mode 100644 vector/src/main/java/im/vector/app/features/analytics/plan/PollEnd.kt delete mode 100644 vector/src/main/java/im/vector/app/features/analytics/plan/PollVote.kt delete mode 100644 vector/src/main/java/im/vector/app/features/analytics/plan/RoomModeration.kt delete mode 100644 vector/src/main/java/im/vector/app/features/analytics/plan/Signup.kt delete mode 100644 vector/src/main/java/im/vector/app/features/analytics/plan/SlashCommand.kt delete mode 100644 vector/src/main/java/im/vector/app/features/analytics/plan/SuperProperties.kt delete mode 100644 vector/src/main/java/im/vector/app/features/analytics/plan/UnauthenticatedError.kt delete mode 100644 vector/src/main/java/im/vector/app/features/analytics/plan/UserProperties.kt delete mode 100644 vector/src/main/java/im/vector/app/features/analytics/plan/ViewRoom.kt diff --git a/.github/workflows/sync-from-external-sources.yml b/.github/workflows/sync-from-external-sources.yml index e9c725b976..ac8b8f1717 100644 --- a/.github/workflows/sync-from-external-sources.yml +++ b/.github/workflows/sync-from-external-sources.yml @@ -58,27 +58,3 @@ jobs: - Update SAS Strings from matrix-doc. branch: sync-sas-strings base: develop - - sync-analytics-plan: - runs-on: ubuntu-latest - # Skip in forks - if: github.repository == 'element-hq/element-android' - # No concurrency required, runs every time on a schedule. - steps: - - uses: actions/checkout@v3 - - name: Run analytics import script - run: ./tools/import_analytic_plan.sh - - name: Create Pull Request for analytics plan - uses: peter-evans/create-pull-request@v5 - with: - commit-message: Sync analytics plan - title: Sync analytics plan - body: | - ### Update analytics plan - Reviewers: - - [ ] Please remove usage of Event or Enum which may have been removed or updated - - [ ] please ensure new Events or new Enums are used to send analytics by pushing new commit(s) to this PR. - - *Note*: Change are coming from [this project](https://github.com/matrix-org/matrix-analytics-events) - branch: sync-analytics-plan - base: develop diff --git a/dependencies_groups.gradle b/dependencies_groups.gradle index a6ddd5c799..449fc11d43 100644 --- a/dependencies_groups.gradle +++ b/dependencies_groups.gradle @@ -9,6 +9,7 @@ ext.groups = [ 'com.github.hyuwah', 'com.github.jetradarmobile', 'com.github.MatrixFrog', + 'com.github.matrix-org', 'com.github.tapadoo', 'com.github.UnifiedPush', 'com.github.yalantis', diff --git a/docs/analytics.md b/docs/analytics.md index 9b2c176912..517f071c9a 100644 --- a/docs/analytics.md +++ b/docs/analytics.md @@ -17,7 +17,7 @@ We ask for the user to give consent before sending any analytics data. The analytics plan is shared between all Element clients. To add an Event, please open a PR to this project: https://github.com/matrix-org/matrix-analytics-events -Then, once the PR has been merged, you can run the tool `import_analytic_plan.sh` to import the plan to Element, and then you can use the new Event. Note that this tool is run by Github action once a week. +Then, once the PR has been merged, and the library is release, you can update the version of the library in the `build.gradle` file. ## Forks of Element diff --git a/tools/import_analytic_plan.sh b/tools/import_analytic_plan.sh deleted file mode 100755 index 9c020a8e37..0000000000 --- a/tools/import_analytic_plan.sh +++ /dev/null @@ -1,18 +0,0 @@ -#!/usr/bin/env bash - -echo "Deleted existing plan..." -rm vector/src/main/java/im/vector/app/features/analytics/plan/*.* - -echo "Cloning analytics project..." -mkdir analytics_tmp -cd analytics_tmp -git clone https://github.com/matrix-org/matrix-analytics-events.git - -echo "Copy plan..." -cp matrix-analytics-events/types/kotlin2/* ../vector/src/main/java/im/vector/app/features/analytics/plan/ - -echo "Cleanup." -cd .. -rm -rf analytics_tmp - -echo "Done." diff --git a/vector/build.gradle b/vector/build.gradle index 441dbd3ec0..db6a9d72e4 100644 --- a/vector/build.gradle +++ b/vector/build.gradle @@ -159,6 +159,9 @@ dependencies { // Debug api 'com.facebook.stetho:stetho:1.6.0' + // Analytics + api 'com.github.matrix-org:matrix-analytics-events:0.15.0' + api libs.google.phonenumber // FlowBinding diff --git a/vector/src/main/java/im/vector/app/features/analytics/itf/VectorAnalyticsEvent.kt b/vector/src/main/java/im/vector/app/features/analytics/itf/VectorAnalyticsEvent.kt deleted file mode 100644 index 2797734343..0000000000 --- a/vector/src/main/java/im/vector/app/features/analytics/itf/VectorAnalyticsEvent.kt +++ /dev/null @@ -1,22 +0,0 @@ -/* - * Copyright (c) 2021 New Vector Ltd - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package im.vector.app.features.analytics.itf - -interface VectorAnalyticsEvent { - fun getName(): String - fun getProperties(): Map? -} diff --git a/vector/src/main/java/im/vector/app/features/analytics/itf/VectorAnalyticsScreen.kt b/vector/src/main/java/im/vector/app/features/analytics/itf/VectorAnalyticsScreen.kt deleted file mode 100644 index 7056814aaf..0000000000 --- a/vector/src/main/java/im/vector/app/features/analytics/itf/VectorAnalyticsScreen.kt +++ /dev/null @@ -1,22 +0,0 @@ -/* - * Copyright (c) 2021 New Vector Ltd - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package im.vector.app.features.analytics.itf - -interface VectorAnalyticsScreen { - fun getName(): String - fun getProperties(): Map? -} diff --git a/vector/src/main/java/im/vector/app/features/analytics/plan/CallEnded.kt b/vector/src/main/java/im/vector/app/features/analytics/plan/CallEnded.kt deleted file mode 100644 index 3bf16a6c97..0000000000 --- a/vector/src/main/java/im/vector/app/features/analytics/plan/CallEnded.kt +++ /dev/null @@ -1,56 +0,0 @@ -/* - * Copyright (c) 2021 New Vector Ltd - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package im.vector.app.features.analytics.plan - -import im.vector.app.features.analytics.itf.VectorAnalyticsEvent - -// GENERATED FILE, DO NOT EDIT. FOR MORE INFORMATION VISIT -// https://github.com/matrix-org/matrix-analytics-events/ - -/** - * Triggered when a call has ended. - */ -data class CallEnded( - /** - * The duration of the call in milliseconds. - */ - val durationMs: Int, - /** - * Whether its a video call or not. - */ - val isVideo: Boolean, - /** - * Number of participants in the call. - */ - val numParticipants: Int, - /** - * Whether this user placed it. - */ - val placed: Boolean, -) : VectorAnalyticsEvent { - - override fun getName() = "CallEnded" - - override fun getProperties(): Map? { - return mutableMapOf().apply { - put("durationMs", durationMs) - put("isVideo", isVideo) - put("numParticipants", numParticipants) - put("placed", placed) - }.takeIf { it.isNotEmpty() } - } -} diff --git a/vector/src/main/java/im/vector/app/features/analytics/plan/CallError.kt b/vector/src/main/java/im/vector/app/features/analytics/plan/CallError.kt deleted file mode 100644 index 1c3a57e971..0000000000 --- a/vector/src/main/java/im/vector/app/features/analytics/plan/CallError.kt +++ /dev/null @@ -1,51 +0,0 @@ -/* - * Copyright (c) 2021 New Vector Ltd - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package im.vector.app.features.analytics.plan - -import im.vector.app.features.analytics.itf.VectorAnalyticsEvent - -// GENERATED FILE, DO NOT EDIT. FOR MORE INFORMATION VISIT -// https://github.com/matrix-org/matrix-analytics-events/ - -/** - * Triggered when an error occurred in a call. - */ -data class CallError( - /** - * Whether its a video call or not. - */ - val isVideo: Boolean, - /** - * Number of participants in the call. - */ - val numParticipants: Int, - /** - * Whether this user placed it. - */ - val placed: Boolean, -) : VectorAnalyticsEvent { - - override fun getName() = "CallError" - - override fun getProperties(): Map? { - return mutableMapOf().apply { - put("isVideo", isVideo) - put("numParticipants", numParticipants) - put("placed", placed) - }.takeIf { it.isNotEmpty() } - } -} diff --git a/vector/src/main/java/im/vector/app/features/analytics/plan/CallStarted.kt b/vector/src/main/java/im/vector/app/features/analytics/plan/CallStarted.kt deleted file mode 100644 index e74d07d38c..0000000000 --- a/vector/src/main/java/im/vector/app/features/analytics/plan/CallStarted.kt +++ /dev/null @@ -1,51 +0,0 @@ -/* - * Copyright (c) 2021 New Vector Ltd - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package im.vector.app.features.analytics.plan - -import im.vector.app.features.analytics.itf.VectorAnalyticsEvent - -// GENERATED FILE, DO NOT EDIT. FOR MORE INFORMATION VISIT -// https://github.com/matrix-org/matrix-analytics-events/ - -/** - * Triggered when a call is started. - */ -data class CallStarted( - /** - * Whether its a video call or not. - */ - val isVideo: Boolean, - /** - * Number of participants in the call. - */ - val numParticipants: Int, - /** - * Whether this user placed it. - */ - val placed: Boolean, -) : VectorAnalyticsEvent { - - override fun getName() = "CallStarted" - - override fun getProperties(): Map? { - return mutableMapOf().apply { - put("isVideo", isVideo) - put("numParticipants", numParticipants) - put("placed", placed) - }.takeIf { it.isNotEmpty() } - } -} diff --git a/vector/src/main/java/im/vector/app/features/analytics/plan/Composer.kt b/vector/src/main/java/im/vector/app/features/analytics/plan/Composer.kt deleted file mode 100644 index a590ac168d..0000000000 --- a/vector/src/main/java/im/vector/app/features/analytics/plan/Composer.kt +++ /dev/null @@ -1,90 +0,0 @@ -/* - * Copyright (c) 2021 New Vector Ltd - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package im.vector.app.features.analytics.plan - -import im.vector.app.features.analytics.itf.VectorAnalyticsEvent - -// GENERATED FILE, DO NOT EDIT. FOR MORE INFORMATION VISIT -// https://github.com/matrix-org/matrix-analytics-events/ - -/** - * Triggered when the user sends a message via the composer. - */ -data class Composer( - /** - * Whether the user was using the composer inside of a thread. - */ - val inThread: Boolean, - /** - * Whether the user's composer interaction was editing a previously sent - * event. - */ - val isEditing: Boolean, - /** - * Whether the user's composer interaction was a reply to a previously - * sent event. - */ - val isReply: Boolean, - /** - * The type of the message. - */ - val messageType: MessageType, - /** - * Whether this message begins a new thread or not. - */ - val startsThread: Boolean? = null, -) : VectorAnalyticsEvent { - - enum class MessageType { - /** - * A pin drop location message. - */ - LocationPin, - - /** - * A user current location message. - */ - LocationUser, - - /** - * A poll message. - */ - Poll, - - /** - * A text message. - */ - Text, - - /** - * A voice message. - */ - VoiceMessage, - } - - override fun getName() = "Composer" - - override fun getProperties(): Map? { - return mutableMapOf().apply { - put("inThread", inThread) - put("isEditing", isEditing) - put("isReply", isReply) - put("messageType", messageType.name) - startsThread?.let { put("startsThread", it) } - }.takeIf { it.isNotEmpty() } - } -} diff --git a/vector/src/main/java/im/vector/app/features/analytics/plan/CreatedRoom.kt b/vector/src/main/java/im/vector/app/features/analytics/plan/CreatedRoom.kt deleted file mode 100644 index 598cc6ac28..0000000000 --- a/vector/src/main/java/im/vector/app/features/analytics/plan/CreatedRoom.kt +++ /dev/null @@ -1,41 +0,0 @@ -/* - * Copyright (c) 2021 New Vector Ltd - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package im.vector.app.features.analytics.plan - -import im.vector.app.features.analytics.itf.VectorAnalyticsEvent - -// GENERATED FILE, DO NOT EDIT. FOR MORE INFORMATION VISIT -// https://github.com/matrix-org/matrix-analytics-events/ - -/** - * Triggered when the user creates a room. - */ -data class CreatedRoom( - /** - * Whether the room is a DM. - */ - val isDM: Boolean, -) : VectorAnalyticsEvent { - - override fun getName() = "CreatedRoom" - - override fun getProperties(): Map? { - return mutableMapOf().apply { - put("isDM", isDM) - }.takeIf { it.isNotEmpty() } - } -} diff --git a/vector/src/main/java/im/vector/app/features/analytics/plan/Error.kt b/vector/src/main/java/im/vector/app/features/analytics/plan/Error.kt deleted file mode 100644 index 98553b9258..0000000000 --- a/vector/src/main/java/im/vector/app/features/analytics/plan/Error.kt +++ /dev/null @@ -1,183 +0,0 @@ -/* - * Copyright (c) 2021 New Vector Ltd - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package im.vector.app.features.analytics.plan - -import im.vector.app.features.analytics.itf.VectorAnalyticsEvent - -// GENERATED FILE, DO NOT EDIT. FOR MORE INFORMATION VISIT -// https://github.com/matrix-org/matrix-analytics-events/ - -/** - * Triggered when an error occurred. - */ -data class Error( - /** - * Context - client defined, can be used for debugging. - */ - val context: String? = null, - /** - * DEPRECATED: Which crypto module is the client currently using. - */ - val cryptoModule: CryptoModule? = null, - /** - * Which crypto backend is the client currently using. - */ - val cryptoSDK: CryptoSDK? = null, - val domain: Domain, - /** - * An heuristic based on event origin_server_ts and the current device - * creation time (origin_server_ts - device_ts). This would be used to - * get the source of the event scroll-back/live/initialSync. - */ - val eventLocalAgeMillis: Int? = null, - /** - * true if userDomain != senderDomain. - */ - val isFederated: Boolean? = null, - /** - * true if the current user is using matrix.org. - */ - val isMatrixDotOrg: Boolean? = null, - val name: Name, - /** - * UTDs can be permanent or temporary. If temporary, this field will - * contain the time it took to decrypt the message in milliseconds. If - * permanent should be -1. - */ - val timeToDecryptMillis: Int? = null, - /** - * true if the current user trusts their own identity (verified session) - * at time of decryption. - */ - val userTrustsOwnIdentity: Boolean? = null, - /** - * true if that unable to decrypt error was visible to the user. - */ - val wasVisibleToUser: Boolean? = null, -) : VectorAnalyticsEvent { - - enum class Domain { - E2EE, - TO_DEVICE, - VOIP, - } - - enum class Name { - - /** - * E2EE domain error. Decryption failed for a message sent before the - * device logged in, and key backup is not enabled. - */ - HistoricalMessage, - - /** - * E2EE domain error. The room key is known but is ratcheted (index > - * 0). - */ - OlmIndexError, - - /** - * E2EE domain error. Generic unknown inbound group session error. - */ - OlmKeysNotSentError, - - /** - * E2EE domain error. Any other decryption error (missing field, format - * errors...). - */ - OlmUnspecifiedError, - - /** - * TO_DEVICE domain error. The to-device message failed to decrypt. - */ - ToDeviceFailedToDecrypt, - - /** - * E2EE domain error. Decryption failed due to unknown error. - */ - UnknownError, - - /** - * VOIP domain error. ICE negotiation failed. - */ - VoipIceFailed, - - /** - * VOIP domain error. ICE negotiation timed out. - */ - VoipIceTimeout, - - /** - * VOIP domain error. The call invite timed out. - */ - VoipInviteTimeout, - - /** - * VOIP domain error. The user hung up the call. - */ - VoipUserHangup, - - /** - * VOIP domain error. The user's media failed to start. - */ - VoipUserMediaFailed, - } - - enum class CryptoSDK { - - /** - * Legacy crypto backend specific to each platform. - */ - Legacy, - - /** - * Cross-platform crypto backend written in Rust. - */ - Rust, - } - - enum class CryptoModule { - - /** - * Native / legacy crypto module specific to each platform. - */ - Native, - - /** - * Shared / cross-platform crypto module written in Rust. - */ - Rust, - } - - override fun getName() = "Error" - - override fun getProperties(): Map? { - return mutableMapOf().apply { - context?.let { put("context", it) } - cryptoModule?.let { put("cryptoModule", it.name) } - cryptoSDK?.let { put("cryptoSDK", it.name) } - put("domain", domain.name) - eventLocalAgeMillis?.let { put("eventLocalAgeMillis", it) } - isFederated?.let { put("isFederated", it) } - isMatrixDotOrg?.let { put("isMatrixDotOrg", it) } - put("name", name.name) - timeToDecryptMillis?.let { put("timeToDecryptMillis", it) } - userTrustsOwnIdentity?.let { put("userTrustsOwnIdentity", it) } - wasVisibleToUser?.let { put("wasVisibleToUser", it) } - }.takeIf { it.isNotEmpty() } - } -} diff --git a/vector/src/main/java/im/vector/app/features/analytics/plan/Interaction.kt b/vector/src/main/java/im/vector/app/features/analytics/plan/Interaction.kt deleted file mode 100644 index 4aa84353e5..0000000000 --- a/vector/src/main/java/im/vector/app/features/analytics/plan/Interaction.kt +++ /dev/null @@ -1,509 +0,0 @@ -/* - * Copyright (c) 2021 New Vector Ltd - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package im.vector.app.features.analytics.plan - -import im.vector.app.features.analytics.itf.VectorAnalyticsEvent - -// GENERATED FILE, DO NOT EDIT. FOR MORE INFORMATION VISIT -// https://github.com/matrix-org/matrix-analytics-events/ - -/** - * Triggered when the user clicks/taps/activates a UI element. - */ -data class Interaction( - /** - * The index of the element, if its in a list of elements. - */ - val index: Int? = null, - /** - * The manner with which the user activated the UI element. - */ - val interactionType: InteractionType? = null, - /** - * The unique name of this element. - */ - val name: Name, -) : VectorAnalyticsEvent { - - enum class Name { - /** - * User tapped the All filter in the All Chats filter tab. - */ - MobileAllChatsFilterAll, - - /** - * User tapped the Favourites filter in the All Chats filter tab. - */ - MobileAllChatsFilterFavourites, - - /** - * User tapped the People filter in the All Chats filter tab. - */ - MobileAllChatsFilterPeople, - - /** - * User tapped the Unreads filter in the All Chats filter tab. - */ - MobileAllChatsFilterUnreads, - - /** - * User disabled filters from the all chats layout settings. - */ - MobileAllChatsFiltersDisabled, - - /** - * User enabled filters from the all chats layout settings. - */ - MobileAllChatsFiltersEnabled, - - /** - * User disabled recents from the all chats layout settings. - */ - MobileAllChatsRecentsDisabled, - - /** - * User enabled recents from the all chats layout settings. - */ - MobileAllChatsRecentsEnabled, - - /** - * User tapped on Add to Home button on Room Details screen. - */ - MobileRoomAddHome, - - /** - * User switched the favourite toggle on Room Details screen. - */ - MobileRoomFavouriteToggle, - - /** - * User tapped on Leave Room button on Room Details screen. - */ - MobileRoomLeave, - - /** - * User adjusted their favourite rooms using the context menu on a room - * in the room list. - */ - MobileRoomListRoomContextMenuFavouriteToggle, - - /** - * User adjusted their unread rooms using the context menu on a room in - * the room list. - */ - MobileRoomListRoomContextMenuUnreadToggle, - - /** - * User tapped on Threads button on Room screen. - */ - MobileRoomThreadListButton, - - /** - * User tapped on a thread summary item on Room screen. - */ - MobileRoomThreadSummaryItem, - - /** - * User validated the creation of a new space. - */ - MobileSpaceCreationValidated, - - /** - * User tapped on the filter button on ThreadList screen. - */ - MobileThreadListFilterItem, - - /** - * User selected a thread on ThreadList screen. - */ - MobileThreadListThreadItem, - - /** - * User tapped the already selected space from the space list. - */ - SpacePanelSelectedSpace, - - /** - * User tapped an unselected space from the space list -> space - * switching should occur. - */ - SpacePanelSwitchSpace, - - /** - * User tapped an unselected sub space from the space list -> space - * switching should occur. - */ - SpacePanelSwitchSubSpace, - - /** - * User clicked the create room button in the add existing room to space - * dialog in Element Web/Desktop. - */ - WebAddExistingToSpaceDialogCreateRoomButton, - - /** - * User clicked the create DM button in the home page of Element - * Web/Desktop. - */ - WebHomeCreateChatButton, - - /** - * User clicked the create room button in the home page of Element - * Web/Desktop. - */ - WebHomeCreateRoomButton, - - /** - * User clicked the explore rooms button in the home page of Element - * Web/Desktop. - */ - WebHomeExploreRoomsButton, - - /** - * User clicked on the mini avatar uploader in the home page of Element - * Web/Desktop. - */ - WebHomeMiniAvatarUploadButton, - - /** - * User clicked the explore rooms button next to the search field at the - * top of the left panel in Element Web/Desktop. - */ - WebLeftPanelExploreRoomsButton, - - /** - * User clicked on the avatar uploader in the profile settings of - * Element Web/Desktop. - */ - WebProfileSettingsAvatarUploadButton, - - /** - * User interacted with pin to sidebar checkboxes in the quick settings - * menu of Element Web/Desktop. - */ - WebQuickSettingsPinToSidebarCheckbox, - - /** - * User interacted with the theme dropdown in the quick settings menu of - * Element Web/Desktop. - */ - WebQuickSettingsThemeDropdown, - - /** - * User accessed the room invite flow using the button at the top of the - * room member list in the right panel of Element Web/Desktop. - */ - WebRightPanelMemberListInviteButton, - - /** - * User accessed room member list using the 'People' button in the right - * panel room summary card of Element Web/Desktop. - */ - WebRightPanelRoomInfoPeopleButton, - - /** - * User accessed room settings using the 'Settings' button in the right - * panel room summary card of Element Web/Desktop. - */ - WebRightPanelRoomInfoSettingsButton, - - /** - * User accessed room member list using the back button in the right - * panel user info card of Element Web/Desktop. - */ - WebRightPanelRoomUserInfoBackButton, - - /** - * User invited someone to room by clicking invite on the right panel - * user info card in Element Web/Desktop. - */ - WebRightPanelRoomUserInfoInviteButton, - - /** - * User clicked the threads 'show' filter dropdown in the threads panel - * in Element Web/Desktop. - */ - WebRightPanelThreadPanelFilterDropdown, - - /** - * User clicked the create room button in the room directory of Element - * Web/Desktop. - */ - WebRoomDirectoryCreateRoomButton, - - /** - * User clicked the Threads button in the top right of a room in Element - * Web/Desktop. - */ - WebRoomHeaderButtonsThreadsButton, - - /** - * User adjusted their favourites using the context menu on the header - * of a room in Element Web/Desktop. - */ - WebRoomHeaderContextMenuFavouriteToggle, - - /** - * User accessed the room invite flow using the context menu on the - * header of a room in Element Web/Desktop. - */ - WebRoomHeaderContextMenuInviteItem, - - /** - * User interacted with leave action in the context menu on the header - * of a room in Element Web/Desktop. - */ - WebRoomHeaderContextMenuLeaveItem, - - /** - * User accessed their room notification settings via the context menu - * on the header of a room in Element Web/Desktop. - */ - WebRoomHeaderContextMenuNotificationsItem, - - /** - * User accessed room member list using the context menu on the header - * of a room in Element Web/Desktop. - */ - WebRoomHeaderContextMenuPeopleItem, - - /** - * User accessed room settings using the context menu on the header of a - * room in Element Web/Desktop. - */ - WebRoomHeaderContextMenuSettingsItem, - - /** - * User clicked the create DM button in the + context menu of the room - * list header in Element Web/Desktop. - */ - WebRoomListHeaderPlusMenuCreateChatItem, - - /** - * User clicked the create room button in the + context menu of the room - * list header in Element Web/Desktop. - */ - WebRoomListHeaderPlusMenuCreateRoomItem, - - /** - * User clicked the explore rooms button in the + context menu of the - * room list header in Element Web/Desktop. - */ - WebRoomListHeaderPlusMenuExploreRoomsItem, - - /** - * User adjusted their favourites using the context menu on a room tile - * in the room list in Element Web/Desktop. - */ - WebRoomListRoomTileContextMenuFavouriteToggle, - - /** - * User accessed the room invite flow using the context menu on a room - * tile in the room list in Element Web/Desktop. - */ - WebRoomListRoomTileContextMenuInviteItem, - - /** - * User interacted with leave action in the context menu on a room tile - * in the room list in Element Web/Desktop. - */ - WebRoomListRoomTileContextMenuLeaveItem, - - /** - * User marked a message as read using the context menu on a room tile - * in the room list in Element Web/Desktop. - */ - WebRoomListRoomTileContextMenuMarkRead, - - /** - * User marked a room as unread using the context menu on a room tile in - * the room list in Element Web/Desktop. - */ - WebRoomListRoomTileContextMenuMarkUnread, - - /** - * User accessed room settings using the context menu on a room tile in - * the room list in Element Web/Desktop. - */ - WebRoomListRoomTileContextMenuSettingsItem, - - /** - * User accessed their room notification settings via the context menu - * on a room tile in the room list in Element Web/Desktop. - */ - WebRoomListRoomTileNotificationsMenu, - - /** - * User clicked the create DM button in the + context menu of the rooms - * sublist in Element Web/Desktop. - */ - WebRoomListRoomsSublistPlusMenuCreateChatItem, - - /** - * User clicked the create room button in the + context menu of the - * rooms sublist in Element Web/Desktop. - */ - WebRoomListRoomsSublistPlusMenuCreateRoomItem, - - /** - * User clicked the explore rooms button in the + context menu of the - * rooms sublist in Element Web/Desktop. - */ - WebRoomListRoomsSublistPlusMenuExploreRoomsItem, - - /** - * User clicked on the button to return to the user onboarding list in - * the room list in Element Web/Desktop. - */ - WebRoomListUserOnboardingButton, - - /** - * User clicked on the button to close the user onboarding button in the - * room list in Element Web/Desktop. - */ - WebRoomListUserOnboardingIgnoreButton, - - /** - * User interacted with leave action in the general tab of the room - * settings dialog in Element Web/Desktop. - */ - WebRoomSettingsLeaveButton, - - /** - * User interacted with the prompt to create a new room when adjusting - * security settings in an existing room in Element Web/Desktop. - */ - WebRoomSettingsSecurityTabCreateNewRoomButton, - - /** - * User clicked a thread summary in the timeline of a room in Element - * Web/Desktop. - */ - WebRoomTimelineThreadSummaryButton, - - /** - * User interacted with the theme radio selector in the Appearance tab - * of Settings in Element Web/Desktop. - */ - WebSettingsAppearanceTabThemeSelector, - - /** - * User interacted with the pre-built space checkboxes in the Sidebar - * tab of Settings in Element Web/Desktop. - */ - WebSettingsSidebarTabSpacesCheckbox, - - /** - * User clicked the explore rooms button in the context menu of a space - * in Element Web/Desktop. - */ - WebSpaceContextMenuExploreRoomsItem, - - /** - * User clicked the home button in the context menu of a space in - * Element Web/Desktop. - */ - WebSpaceContextMenuHomeItem, - - /** - * User clicked the new room button in the context menu of a space in - * Element Web/Desktop. - */ - WebSpaceContextMenuNewRoomItem, - - /** - * User clicked the new room button in the context menu on the space - * home in Element Web/Desktop. - */ - WebSpaceHomeCreateRoomButton, - - /** - * User clicked the back button on a Thread view going back to the - * Threads Panel of Element Web/Desktop. - */ - WebThreadViewBackButton, - - /** - * User clicked on the Threads Activity Centre button of Element - * Web/Desktop. - */ - WebThreadsActivityCentreButton, - - /** - * User clicked on a room in the Threads Activity Centre of Element - * Web/Desktop. - */ - WebThreadsActivityCentreRoomItem, - - /** - * User selected a thread in the Threads panel in Element Web/Desktop. - */ - WebThreadsPanelThreadItem, - - /** - * User clicked the theme toggle button in the user menu of Element - * Web/Desktop. - */ - WebUserMenuThemeToggleButton, - - /** - * User clicked on the send DM CTA in the header of the new user - * onboarding page in Element Web/Desktop. - */ - WebUserOnboardingHeaderSendDm, - - /** - * User clicked on the action of the download apps task on the new user - * onboarding page in Element Web/Desktop. - */ - WebUserOnboardingTaskDownloadApps, - - /** - * User clicked on the action of the enable notifications task on the - * new user onboarding page in Element Web/Desktop. - */ - WebUserOnboardingTaskEnableNotifications, - - /** - * User clicked on the action of the find people task on the new user - * onboarding page in Element Web/Desktop. - */ - WebUserOnboardingTaskSendDm, - - /** - * User clicked on the action of the your profile task on the new user - * onboarding page in Element Web/Desktop. - */ - WebUserOnboardingTaskSetupProfile, - } - - enum class InteractionType { - Keyboard, - Pointer, - Touch, - } - - override fun getName() = "Interaction" - - override fun getProperties(): Map? { - return mutableMapOf().apply { - index?.let { put("index", it) } - interactionType?.let { put("interactionType", it.name) } - put("name", name.name) - }.takeIf { it.isNotEmpty() } - } -} diff --git a/vector/src/main/java/im/vector/app/features/analytics/plan/JoinedRoom.kt b/vector/src/main/java/im/vector/app/features/analytics/plan/JoinedRoom.kt deleted file mode 100644 index b076a07ae0..0000000000 --- a/vector/src/main/java/im/vector/app/features/analytics/plan/JoinedRoom.kt +++ /dev/null @@ -1,107 +0,0 @@ -/* - * Copyright (c) 2021 New Vector Ltd - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package im.vector.app.features.analytics.plan - -import im.vector.app.features.analytics.itf.VectorAnalyticsEvent - -// GENERATED FILE, DO NOT EDIT. FOR MORE INFORMATION VISIT -// https://github.com/matrix-org/matrix-analytics-events/ - -/** - * Triggered when the user joins a room. - */ -data class JoinedRoom( - /** - * Whether the room is a DM. - */ - val isDM: Boolean, - /** - * Whether the room is a Space. - */ - val isSpace: Boolean, - /** - * The size of the room. - */ - val roomSize: RoomSize, - /** - * The trigger for a room being joined if known. - */ - val trigger: Trigger? = null, -) : VectorAnalyticsEvent { - - enum class Trigger { - /** - * Room joined via an invite. - */ - Invite, - - /** - * Room joined via link. - */ - MobilePermalink, - - /** - * Room joined via a push/desktop notification. - */ - Notification, - - /** - * Room joined via the public rooms directory. - */ - RoomDirectory, - - /** - * Room joined via its preview. - */ - RoomPreview, - - /** - * Room joined via the /join slash command. - */ - SlashCommand, - - /** - * Room joined via the space hierarchy view. - */ - SpaceHierarchy, - - /** - * Room joined via a timeline pill or link in another room. - */ - Timeline, - } - - enum class RoomSize { - ElevenToOneHundred, - MoreThanAThousand, - One, - OneHundredAndOneToAThousand, - ThreeToTen, - Two, - } - - override fun getName() = "JoinedRoom" - - override fun getProperties(): Map? { - return mutableMapOf().apply { - put("isDM", isDM) - put("isSpace", isSpace) - put("roomSize", roomSize.name) - trigger?.let { put("trigger", it.name) } - }.takeIf { it.isNotEmpty() } - } -} diff --git a/vector/src/main/java/im/vector/app/features/analytics/plan/MobileScreen.kt b/vector/src/main/java/im/vector/app/features/analytics/plan/MobileScreen.kt deleted file mode 100644 index d08b0d1921..0000000000 --- a/vector/src/main/java/im/vector/app/features/analytics/plan/MobileScreen.kt +++ /dev/null @@ -1,353 +0,0 @@ -/* - * Copyright (c) 2021 New Vector Ltd - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package im.vector.app.features.analytics.plan - -import im.vector.app.features.analytics.itf.VectorAnalyticsScreen - -// GENERATED FILE, DO NOT EDIT. FOR MORE INFORMATION VISIT -// https://github.com/matrix-org/matrix-analytics-events/ - -/** - * Triggered when the user changed screen on Element Android/iOS. - */ -data class MobileScreen( - /** - * How long the screen was displayed for in milliseconds. - */ - val durationMs: Int? = null, - val screenName: ScreenName, -) : VectorAnalyticsScreen { - - enum class ScreenName { - /** - * The screen that displays the user's breadcrumbs. - */ - Breadcrumbs, - - /** - * The screen shown to create a poll. - */ - CreatePollView, - - /** - * The screen shown to create a new (non-direct) room. - */ - CreateRoom, - - /** - * The screen shown to create a new space. - */ - CreateSpace, - - /** - * The confirmation screen shown before deactivating an account. - */ - DeactivateAccount, - - /** - * The tab on mobile that displays the dialpad. - */ - Dialpad, - - /** - * The screen shown to edit a poll. - */ - EditPollView, - - /** - * The Favourites tab on mobile that lists your favourite people/rooms. - */ - Favourites, - - /** - * The form for the forgot password use case. - */ - ForgotPassword, - - /** - * Legacy: The screen that shows information about a specific group. - */ - Group, - - /** - * The Home tab on iOS | possibly the same on Android? - */ - Home, - - /** - * The screen shown to share a link to download the app. - */ - InviteFriends, - - /** - * Room accessed via space bottom sheet list. - */ - Invites, - - /** - * The screen shown to share location. - */ - LocationSend, - - /** - * The screen shown to view a shared location. - */ - LocationView, - - /** - * The screen that displays the login flow (when the user already has an - * account). - */ - Login, - - /** - * Legacy: The screen that shows all groups/communities you have joined. - */ - MyGroups, - - /** - * The screen containing tests to help user to fix issues around - * notifications. - */ - NotificationTroubleshoot, - - /** - * The People tab on mobile that lists all the DM rooms you have joined. - */ - People, - - /** - * The screen that displays the registration flow (when the user wants - * to create an account). - */ - Register, - - /** - * The screen that displays the messages and events received in a room. - */ - Room, - - /** - * The room addresses screen shown from the Room Details screen. - */ - RoomAddresses, - - /** - * The screen shown when tapping the name of a room from the Room - * screen. - */ - RoomDetails, - - /** - * The screen that lists public rooms for you to discover. - */ - RoomDirectory, - - /** - * The screen that lists all the user's rooms and let them filter the - * rooms. - */ - RoomFilter, - - /** - * The screen that displays the list of members that are part of a room. - */ - RoomMembers, - - /** - * The notifications settings screen shown from the Room Details screen. - */ - RoomNotifications, - - /** - * The roles permissions screen shown from the Room Details screen. - */ - RoomPermissions, - - /** - * Screen that displays room preview if user hasn't joined yet. - */ - RoomPreview, - - /** - * The screen that allows you to search for messages/files in a specific - * room. - */ - RoomSearch, - - /** - * The settings screen shown from the Room Details screen. - */ - RoomSettings, - - /** - * The screen that allows you to see all of the files sent in a specific - * room. - */ - RoomUploads, - - /** - * The Rooms tab on mobile that lists all the (non-direct) rooms you've - * joined. - */ - Rooms, - - /** - * The Files tab shown in the global search screen on Mobile. - */ - SearchFiles, - - /** - * The Messages tab shown in the global search screen on Mobile. - */ - SearchMessages, - - /** - * The People tab shown in the global search screen on Mobile. - */ - SearchPeople, - - /** - * The Rooms tab shown in the global search screen on Mobile. - */ - SearchRooms, - - /** - * The global settings screen shown in the app. - */ - Settings, - - /** - * The advanced settings screen (developer mode, rageshake, push - * notification rules). - */ - SettingsAdvanced, - - /** - * The settings screen to change the default notification options. - */ - SettingsDefaultNotifications, - - /** - * The settings screen with general profile settings. - */ - SettingsGeneral, - - /** - * The Help and About screen. - */ - SettingsHelp, - - /** - * The settings screen with list of the ignored users. - */ - SettingsIgnoredUsers, - - /** - * The experimental features settings screen. - */ - SettingsLabs, - - /** - * The settings screen with legals information. - */ - SettingsLegals, - - /** - * The settings screen to manage notification mentions and keywords. - */ - SettingsMentionsAndKeywords, - - /** - * The notifications settings screen. - */ - SettingsNotifications, - - /** - * The preferences screen (theme, language, editor preferences, etc. - */ - SettingsPreferences, - - /** - * The global security settings screen. - */ - SettingsSecurity, - - /** - * The calls settings screen. - */ - SettingsVoiceVideo, - - /** - * The sidebar shown on mobile with spaces, settings etc. - */ - Sidebar, - - /** - * Room accessed via space bottom sheet list. - */ - SpaceBottomSheet, - - /** - * Screen that displays the list of rooms and spaces of a space. - */ - SpaceExploreRooms, - - /** - * Screen that displays the list of members of a space. - */ - SpaceMembers, - - /** - * The bottom sheet that list all space options. - */ - SpaceMenu, - - /** - * The screen shown to create a new direct room. - */ - StartChat, - - /** - * The screen shown to select which room directory you'd like to use. - */ - SwitchDirectory, - - /** - * Screen that displays list of threads for a room. - */ - ThreadList, - - /** - * A screen that shows information about a room member. - */ - User, - - /** - * The splash screen. - */ - Welcome, - } - - override fun getName() = screenName.name - - override fun getProperties(): Map? { - return mutableMapOf().apply { - durationMs?.let { put("durationMs", it) } - }.takeIf { it.isNotEmpty() } - } -} diff --git a/vector/src/main/java/im/vector/app/features/analytics/plan/NotificationTroubleshoot.kt b/vector/src/main/java/im/vector/app/features/analytics/plan/NotificationTroubleshoot.kt deleted file mode 100644 index 9a4e6bd84b..0000000000 --- a/vector/src/main/java/im/vector/app/features/analytics/plan/NotificationTroubleshoot.kt +++ /dev/null @@ -1,41 +0,0 @@ -/* - * Copyright (c) 2021 New Vector Ltd - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package im.vector.app.features.analytics.plan - -import im.vector.app.features.analytics.itf.VectorAnalyticsEvent - -// GENERATED FILE, DO NOT EDIT. FOR MORE INFORMATION VISIT -// https://github.com/matrix-org/matrix-analytics-events/ - -/** - * Triggered when the user runs the troubleshoot notification test suite. - */ -data class NotificationTroubleshoot( - /** - * Whether one or more tests are in error. - */ - val hasError: Boolean, -) : VectorAnalyticsEvent { - - override fun getName() = "NotificationTroubleshoot" - - override fun getProperties(): Map? { - return mutableMapOf().apply { - put("hasError", hasError) - }.takeIf { it.isNotEmpty() } - } -} diff --git a/vector/src/main/java/im/vector/app/features/analytics/plan/PerformanceTimer.kt b/vector/src/main/java/im/vector/app/features/analytics/plan/PerformanceTimer.kt deleted file mode 100644 index 2770d668e5..0000000000 --- a/vector/src/main/java/im/vector/app/features/analytics/plan/PerformanceTimer.kt +++ /dev/null @@ -1,109 +0,0 @@ -/* - * Copyright (c) 2021 New Vector Ltd - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package im.vector.app.features.analytics.plan - -import im.vector.app.features.analytics.itf.VectorAnalyticsEvent - -// GENERATED FILE, DO NOT EDIT. FOR MORE INFORMATION VISIT -// https://github.com/matrix-org/matrix-analytics-events/ - -/** - * Triggered after timing an operation in the app. - */ -data class PerformanceTimer( - /** - * Client defined, can be used for debugging. - */ - val context: String? = null, - /** - * Client defined, an optional value to indicate how many items were - * handled during the operation. - */ - val itemCount: Int? = null, - /** - * The timer that is being reported. - */ - val name: Name, - /** - * The time reported by the timer in milliseconds. - */ - val timeMs: Int, -) : VectorAnalyticsEvent { - - enum class Name { - /** - * The time spent parsing the response from an initial /sync request. In - * this case, `itemCount` should contain the number of joined rooms. - */ - InitialSyncParsing, - - /** - * The time spent waiting for a response to an initial /sync request. In - * this case, `itemCount` should contain the number of joined rooms. - */ - InitialSyncRequest, - - /** - * The time taken to display an event in the timeline that was opened - * from a notification. - */ - NotificationsOpenEvent, - - /** - * The duration of a regular /sync request when resuming the app. In - * this case, `itemCount` should contain the number of joined rooms in - * the response. - */ - StartupIncrementalSync, - - /** - * The duration of an initial /sync request during startup (if the store - * has been wiped). In this case, `itemCount` should contain the number - * of joined rooms. - */ - StartupInitialSync, - - /** - * How long the app launch screen is displayed for. - */ - StartupLaunchScreen, - - /** - * The time to preload data in the MXStore on iOS. In this case, - * `itemCount` should contain the number of rooms in the store. - */ - StartupStorePreload, - - /** - * The time to load all data from the store (including - * StartupStorePreload time). In this case, `itemCount` should contain - * the number of rooms loaded into the session - */ - StartupStoreReady, - } - - override fun getName() = "PerformanceTimer" - - override fun getProperties(): Map? { - return mutableMapOf().apply { - context?.let { put("context", it) } - itemCount?.let { put("itemCount", it) } - put("name", name.name) - put("timeMs", timeMs) - }.takeIf { it.isNotEmpty() } - } -} diff --git a/vector/src/main/java/im/vector/app/features/analytics/plan/PermissionChanged.kt b/vector/src/main/java/im/vector/app/features/analytics/plan/PermissionChanged.kt deleted file mode 100644 index 9f463a4107..0000000000 --- a/vector/src/main/java/im/vector/app/features/analytics/plan/PermissionChanged.kt +++ /dev/null @@ -1,53 +0,0 @@ -/* - * Copyright (c) 2021 New Vector Ltd - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package im.vector.app.features.analytics.plan - -import im.vector.app.features.analytics.itf.VectorAnalyticsEvent - -// GENERATED FILE, DO NOT EDIT. FOR MORE INFORMATION VISIT -// https://github.com/matrix-org/matrix-analytics-events/ - -/** - * Triggered when the user changes a permission status. - */ -data class PermissionChanged( - /** - * Whether the permission has been granted by the user. - */ - val granted: Boolean, - /** - * The name of the permission. - */ - val permission: Permission, -) : VectorAnalyticsEvent { - - enum class Permission { - /** - * Permissions related to sending notifications have changed. - */ - Notification, - } - - override fun getName() = "PermissionChanged" - - override fun getProperties(): Map? { - return mutableMapOf().apply { - put("granted", granted) - put("permission", permission.name) - }.takeIf { it.isNotEmpty() } - } -} diff --git a/vector/src/main/java/im/vector/app/features/analytics/plan/PollCreation.kt b/vector/src/main/java/im/vector/app/features/analytics/plan/PollCreation.kt deleted file mode 100644 index c9ee1afd47..0000000000 --- a/vector/src/main/java/im/vector/app/features/analytics/plan/PollCreation.kt +++ /dev/null @@ -1,63 +0,0 @@ -/* - * Copyright (c) 2021 New Vector Ltd - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package im.vector.app.features.analytics.plan - -import im.vector.app.features.analytics.itf.VectorAnalyticsEvent - -// GENERATED FILE, DO NOT EDIT. FOR MORE INFORMATION VISIT -// https://github.com/matrix-org/matrix-analytics-events/ - -/** - * Triggered when a poll is created or edited. - */ -data class PollCreation( - /** - * Whether this poll has been created or edited. - */ - val action: Action, - /** - * Whether this poll is undisclosed. - */ - val isUndisclosed: Boolean, - /** - * Number of answers in the poll. - */ - val numberOfAnswers: Int, -) : VectorAnalyticsEvent { - - enum class Action { - /** - * Newly created poll. - */ - Create, - - /** - * Edit of an existing poll. - */ - Edit, - } - - override fun getName() = "PollCreation" - - override fun getProperties(): Map? { - return mutableMapOf().apply { - put("action", action.name) - put("isUndisclosed", isUndisclosed) - put("numberOfAnswers", numberOfAnswers) - }.takeIf { it.isNotEmpty() } - } -} diff --git a/vector/src/main/java/im/vector/app/features/analytics/plan/PollEnd.kt b/vector/src/main/java/im/vector/app/features/analytics/plan/PollEnd.kt deleted file mode 100644 index 8750d70a5f..0000000000 --- a/vector/src/main/java/im/vector/app/features/analytics/plan/PollEnd.kt +++ /dev/null @@ -1,43 +0,0 @@ -/* - * Copyright (c) 2021 New Vector Ltd - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package im.vector.app.features.analytics.plan - -import im.vector.app.features.analytics.itf.VectorAnalyticsEvent - -// GENERATED FILE, DO NOT EDIT. FOR MORE INFORMATION VISIT -// https://github.com/matrix-org/matrix-analytics-events/ - -/** - * Triggered when a poll has been ended. - */ -data class PollEnd( - /** - * Do not use this. Remove this property when the kotlin type generator - * can properly generate types without properties other than the event - * name. - */ - val doNotUse: Boolean? = null, -) : VectorAnalyticsEvent { - - override fun getName() = "PollEnd" - - override fun getProperties(): Map? { - return mutableMapOf().apply { - doNotUse?.let { put("doNotUse", it) } - }.takeIf { it.isNotEmpty() } - } -} diff --git a/vector/src/main/java/im/vector/app/features/analytics/plan/PollVote.kt b/vector/src/main/java/im/vector/app/features/analytics/plan/PollVote.kt deleted file mode 100644 index 9918063ef9..0000000000 --- a/vector/src/main/java/im/vector/app/features/analytics/plan/PollVote.kt +++ /dev/null @@ -1,43 +0,0 @@ -/* - * Copyright (c) 2021 New Vector Ltd - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package im.vector.app.features.analytics.plan - -import im.vector.app.features.analytics.itf.VectorAnalyticsEvent - -// GENERATED FILE, DO NOT EDIT. FOR MORE INFORMATION VISIT -// https://github.com/matrix-org/matrix-analytics-events/ - -/** - * Triggered when a poll vote has been cast. - */ -data class PollVote( - /** - * Do not use this. Remove this property when the kotlin type generator - * can properly generate types without properties other than the event - * name. - */ - val doNotUse: Boolean? = null, -) : VectorAnalyticsEvent { - - override fun getName() = "PollVote" - - override fun getProperties(): Map? { - return mutableMapOf().apply { - doNotUse?.let { put("doNotUse", it) } - }.takeIf { it.isNotEmpty() } - } -} diff --git a/vector/src/main/java/im/vector/app/features/analytics/plan/RoomModeration.kt b/vector/src/main/java/im/vector/app/features/analytics/plan/RoomModeration.kt deleted file mode 100644 index 7dd03caa76..0000000000 --- a/vector/src/main/java/im/vector/app/features/analytics/plan/RoomModeration.kt +++ /dev/null @@ -1,137 +0,0 @@ -/* - * Copyright (c) 2021 New Vector Ltd - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package im.vector.app.features.analytics.plan - -import im.vector.app.features.analytics.itf.VectorAnalyticsEvent - -// GENERATED FILE, DO NOT EDIT. FOR MORE INFORMATION VISIT -// https://github.com/matrix-org/matrix-analytics-events/ - -/** - * Triggered when a moderation action is performed within a room. - */ -data class RoomModeration( - /** - * The action that was performed. - */ - val action: Action, - /** - * When the action sets a particular power level, this is the suggested - * role for that the power level. - */ - val role: Role? = null, -) : VectorAnalyticsEvent { - - enum class Action { - /** - * Banned a room member. - */ - BanMember, - - /** - * Changed a room member's power level. - */ - ChangeMemberRole, - - /** - * Changed the power level required to ban room members. - */ - ChangePermissionsBanMembers, - - /** - * Changed the power level required to invite users to the room. - */ - ChangePermissionsInviteUsers, - - /** - * Changed the power level required to kick room members. - */ - ChangePermissionsKickMembers, - - /** - * Changed the power level required to redact messages in the room. - */ - ChangePermissionsRedactMessages, - - /** - * Changed the power level required to set the room's avatar. - */ - ChangePermissionsRoomAvatar, - - /** - * Changed the power level required to set the room's name. - */ - ChangePermissionsRoomName, - - /** - * Changed the power level required to set the room's topic. - */ - ChangePermissionsRoomTopic, - - /** - * Changed the power level required to send messages in the room. - */ - ChangePermissionsSendMessages, - - /** - * Kicked a room member. - */ - KickMember, - - /** - * Reset all of the room permissions back to their default values. - */ - ResetPermissions, - - /** - * Unbanned a room member. - */ - UnbanMember, - } - - enum class Role { - - /** - * A power level of 100. - */ - Administrator, - - /** - * A power level of 50. - */ - Moderator, - - /** - * Any other power level. - */ - Other, - - /** - * A power level of 0. - */ - User, - } - - override fun getName() = "RoomModeration" - - override fun getProperties(): Map? { - return mutableMapOf().apply { - put("action", action.name) - role?.let { put("role", it.name) } - }.takeIf { it.isNotEmpty() } - } -} diff --git a/vector/src/main/java/im/vector/app/features/analytics/plan/Signup.kt b/vector/src/main/java/im/vector/app/features/analytics/plan/Signup.kt deleted file mode 100644 index 328340fd2f..0000000000 --- a/vector/src/main/java/im/vector/app/features/analytics/plan/Signup.kt +++ /dev/null @@ -1,84 +0,0 @@ -/* - * Copyright (c) 2021 New Vector Ltd - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package im.vector.app.features.analytics.plan - -import im.vector.app.features.analytics.itf.VectorAnalyticsEvent - -// GENERATED FILE, DO NOT EDIT. FOR MORE INFORMATION VISIT -// https://github.com/matrix-org/matrix-analytics-events/ - -/** - * Triggered once onboarding has completed, but only if the user registered a - * new account. - */ -data class Signup( - /** - * The type of authentication that was used to sign up. - */ - val authenticationType: AuthenticationType, -) : VectorAnalyticsEvent { - - enum class AuthenticationType { - /** - * Social login using Apple. - */ - Apple, - - /** - * Social login using Facebook. - */ - Facebook, - - /** - * Social login using GitHub. - */ - GitHub, - - /** - * Social login using GitLab. - */ - GitLab, - - /** - * Social login using Google. - */ - Google, - - /** - * Registration using some other mechanism such as fallback. - */ - Other, - - /** - * Registration with a username and password. - */ - Password, - - /** - * Registration using another SSO provider. - */ - SSO, - } - - override fun getName() = "Signup" - - override fun getProperties(): Map? { - return mutableMapOf().apply { - put("authenticationType", authenticationType.name) - }.takeIf { it.isNotEmpty() } - } -} diff --git a/vector/src/main/java/im/vector/app/features/analytics/plan/SlashCommand.kt b/vector/src/main/java/im/vector/app/features/analytics/plan/SlashCommand.kt deleted file mode 100644 index 33d3545487..0000000000 --- a/vector/src/main/java/im/vector/app/features/analytics/plan/SlashCommand.kt +++ /dev/null @@ -1,46 +0,0 @@ -/* - * Copyright (c) 2021 New Vector Ltd - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package im.vector.app.features.analytics.plan - -import im.vector.app.features.analytics.itf.VectorAnalyticsEvent - -// GENERATED FILE, DO NOT EDIT. FOR MORE INFORMATION VISIT -// https://github.com/matrix-org/matrix-analytics-events/ - -/** - * Triggered when the user runs a slash command in their composer. - */ -data class SlashCommand( - /** - * The name of this command. - */ - val command: Command, -) : VectorAnalyticsEvent { - - enum class Command { - Invite, - Part, - } - - override fun getName() = "SlashCommand" - - override fun getProperties(): Map? { - return mutableMapOf().apply { - put("command", command.name) - }.takeIf { it.isNotEmpty() } - } -} diff --git a/vector/src/main/java/im/vector/app/features/analytics/plan/SuperProperties.kt b/vector/src/main/java/im/vector/app/features/analytics/plan/SuperProperties.kt deleted file mode 100644 index b62ae85a41..0000000000 --- a/vector/src/main/java/im/vector/app/features/analytics/plan/SuperProperties.kt +++ /dev/null @@ -1,61 +0,0 @@ -/* - * Copyright (c) 2021 New Vector Ltd - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package im.vector.app.features.analytics.plan - -// GENERATED FILE, DO NOT EDIT. FOR MORE INFORMATION VISIT -// https://github.com/matrix-org/matrix-analytics-events/ - -/** - * Super Properties are properties associated with events that are sent with - * every capture call, be it a $pageview, an autocaptured button click, or - * anything else. - */ -data class SuperProperties( - /** - * Used by web to identify the platform (Web Platform/Electron Platform). - */ - val appPlatform: String? = null, - /** - * Which crypto backend is the client currently using. - */ - val cryptoSDK: CryptoSDK? = null, - /** - * Version of the crypto backend. - */ - val cryptoSDKVersion: String? = null, -) { - - enum class CryptoSDK { - /** - * Legacy crypto backend specific to each platform. - */ - Legacy, - - /** - * Cross-platform crypto backend written in Rust. - */ - Rust, - } - - fun getProperties(): Map? { - return mutableMapOf().apply { - appPlatform?.let { put("appPlatform", it) } - cryptoSDK?.let { put("cryptoSDK", it.name) } - cryptoSDKVersion?.let { put("cryptoSDKVersion", it) } - }.takeIf { it.isNotEmpty() } - } -} diff --git a/vector/src/main/java/im/vector/app/features/analytics/plan/UnauthenticatedError.kt b/vector/src/main/java/im/vector/app/features/analytics/plan/UnauthenticatedError.kt deleted file mode 100644 index 56ef4af4be..0000000000 --- a/vector/src/main/java/im/vector/app/features/analytics/plan/UnauthenticatedError.kt +++ /dev/null @@ -1,66 +0,0 @@ -/* - * Copyright (c) 2021 New Vector Ltd - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package im.vector.app.features.analytics.plan - -import im.vector.app.features.analytics.itf.VectorAnalyticsEvent - -// GENERATED FILE, DO NOT EDIT. FOR MORE INFORMATION VISIT -// https://github.com/matrix-org/matrix-analytics-events/ - -/** - * Triggered when the user becomes unauthenticated without actually clicking - * sign out(E.g. Due to expiry of an access token without a way to refresh). - */ -data class UnauthenticatedError( - /** - * The error code as defined in matrix spec. The source of this error is - * from the homeserver. - */ - val errorCode: ErrorCode, - /** - * The reason for the error. The source of this error is from the - * homeserver, the reason can vary and is subject to change so there is - * no enum of possible values. - */ - val errorReason: String, - /** - * Whether the auth mechanism is refresh-token-based. - */ - val refreshTokenAuth: Boolean, - /** - * Whether a soft logout or hard logout was triggered. - */ - val softLogout: Boolean, -) : VectorAnalyticsEvent { - - enum class ErrorCode { - M_FORBIDDEN, - M_UNKNOWN, - M_UNKNOWN_TOKEN, - } - - override fun getName() = "UnauthenticatedError" - - override fun getProperties(): Map? { - return mutableMapOf().apply { - put("errorCode", errorCode.name) - put("errorReason", errorReason) - put("refreshTokenAuth", refreshTokenAuth) - put("softLogout", softLogout) - }.takeIf { it.isNotEmpty() } - } -} diff --git a/vector/src/main/java/im/vector/app/features/analytics/plan/UserProperties.kt b/vector/src/main/java/im/vector/app/features/analytics/plan/UserProperties.kt deleted file mode 100644 index 01720453ce..0000000000 --- a/vector/src/main/java/im/vector/app/features/analytics/plan/UserProperties.kt +++ /dev/null @@ -1,98 +0,0 @@ -/* - * Copyright (c) 2021 New Vector Ltd - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package im.vector.app.features.analytics.plan - -// GENERATED FILE, DO NOT EDIT. FOR MORE INFORMATION VISIT -// https://github.com/matrix-org/matrix-analytics-events/ - -/** - * The user properties to apply when identifying. This is not an event - * definition. These properties must all be device independent. - */ -data class UserProperties( - /** - * The active filter in the All Chats screen. - */ - val allChatsActiveFilter: AllChatsActiveFilter? = null, - /** - * The selected messaging use case during the onboarding flow. - */ - val ftueUseCaseSelection: FtueUseCaseSelection? = null, - /** - * Number of joined rooms the user has favourited. - */ - val numFavouriteRooms: Int? = null, - /** - * Number of spaces (and sub-spaces) the user is joined to. - */ - val numSpaces: Int? = null, -) { - - enum class FtueUseCaseSelection { - /** - * The third option, Communities. - */ - CommunityMessaging, - - /** - * The first option, Friends and family. - */ - PersonalMessaging, - - /** - * The footer option to skip the question. - */ - Skip, - - /** - * The second option, Teams. - */ - WorkMessaging, - } - - enum class AllChatsActiveFilter { - - /** - * Filters are activated and All is selected. - */ - All, - - /** - * Filters are activated and Favourites is selected. - */ - Favourites, - - /** - * Filters are activated and People is selected. - */ - People, - - /** - * Filters are activated and Unreads is selected. - */ - Unreads, - } - - fun getProperties(): Map? { - return mutableMapOf().apply { - allChatsActiveFilter?.let { put("allChatsActiveFilter", it.name) } - ftueUseCaseSelection?.let { put("ftueUseCaseSelection", it.name) } - numFavouriteRooms?.let { put("numFavouriteRooms", it) } - numSpaces?.let { put("numSpaces", it) } - }.takeIf { it.isNotEmpty() } - } -} diff --git a/vector/src/main/java/im/vector/app/features/analytics/plan/ViewRoom.kt b/vector/src/main/java/im/vector/app/features/analytics/plan/ViewRoom.kt deleted file mode 100644 index 93c166dc88..0000000000 --- a/vector/src/main/java/im/vector/app/features/analytics/plan/ViewRoom.kt +++ /dev/null @@ -1,312 +0,0 @@ -/* - * Copyright (c) 2021 New Vector Ltd - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package im.vector.app.features.analytics.plan - -import im.vector.app.features.analytics.itf.VectorAnalyticsEvent - -// GENERATED FILE, DO NOT EDIT. FOR MORE INFORMATION VISIT -// https://github.com/matrix-org/matrix-analytics-events/ - -/** - * Triggered when the user changes rooms. - */ -data class ViewRoom( - /** - * active space when user navigated to the room. - */ - val activeSpace: ActiveSpace? = null, - /** - * Whether the room is a DM. - */ - val isDM: Boolean? = null, - /** - * Whether the room is a Space. - */ - val isSpace: Boolean? = null, - /** - * The reason for the room change if known. - */ - val trigger: Trigger? = null, - /** - * Whether the interaction was performed via the keyboard input. - */ - val viaKeyboard: Boolean? = null, -) : VectorAnalyticsEvent { - - enum class Trigger { - /** - * Room accessed due to being just created. - */ - Created, - - /** - * Room switched due to user interacting with a message search result. - */ - MessageSearch, - - /** - * Room switched due to user selecting a user to go to a DM with. - */ - MessageUser, - - /** - * Room accessed via space explore. - */ - MobileExploreRooms, - - /** - * Room switched due to user interacting with a file search result. - */ - MobileFileSearch, - - /** - * Room accessed via interacting with the incall screen. - */ - MobileInCall, - - /** - * Room accessed during external sharing. - */ - MobileLinkShare, - - /** - * Room accessed via link. - */ - MobilePermalink, - - /** - * Room accessed via interacting with direct chat item in the room - * contact detail screen. - */ - MobileRoomMemberDetail, - - /** - * Room accessed via preview. - */ - MobileRoomPreview, - - /** - * Room switched due to user interacting with a room search result. - */ - MobileRoomSearch, - - /** - * Room accessed via interacting with direct chat item in the search - * contact detail screen. - */ - MobileSearchContactDetail, - - /** - * Room accessed via space bottom sheet list. - */ - MobileSpaceBottomSheet, - - /** - * Room accessed via interacting with direct chat item in the space - * contact detail screen. - */ - MobileSpaceMemberDetail, - - /** - * Room accessed via space members list. - */ - MobileSpaceMembers, - - /** - * Space accessed via interacting with the space menu. - */ - MobileSpaceMenu, - - /** - * Space accessed via interacting with a space settings menu item. - */ - MobileSpaceSettings, - - /** - * Room accessed via a push/desktop notification. - */ - Notification, - - /** - * Room accessed via the predecessor link at the top of the upgraded - * room. - */ - Predecessor, - - /** - * Room accessed via the public rooms directory. - */ - RoomDirectory, - - /** - * Room accessed via the room list. - */ - RoomList, - - /** - * Room accessed via a shortcut. - */ - Shortcut, - - /** - * Room accessed via a slash command in Element Web/Desktop like /goto. - */ - SlashCommand, - - /** - * Room accessed via the space hierarchy view. - */ - SpaceHierarchy, - - /** - * Room accessed via a timeline pill or link in another room. - */ - Timeline, - - /** - * Room accessed via a tombstone at the bottom of a predecessor room. - */ - Tombstone, - - /** - * Room switched due to user interacting with incoming verification - * request. - */ - VerificationRequest, - - /** - * Room switched due to accepting a call in a different room in Element - * Web/Desktop. - */ - WebAcceptCall, - - /** - * Room switched due to making a call via the dial pad in Element - * Web/Desktop. - */ - WebDialPad, - - /** - * Room accessed via interacting with the floating call or Jitsi PIP in - * Element Web/Desktop. - */ - WebFloatingCallWindow, - - /** - * Room accessed via the shortcut in Element Web/Desktop's forward - * modal. - */ - WebForwardShortcut, - - /** - * Room accessed via the Element Web/Desktop horizontal breadcrumbs at - * the top of the room list. - */ - WebHorizontalBreadcrumbs, - - /** - * Room accessed via an Element Web/Desktop keyboard shortcut like go to - * next room with unread messages. - */ - WebKeyboardShortcut, - - /** - * Room accessed via Element Web/Desktop's notification panel. - */ - WebNotificationPanel, - - /** - * Room accessed via the predecessor link in Settings > Advanced in - * Element Web/Desktop. - */ - WebPredecessorSettings, - - /** - * Room accessed via clicking on a notifications badge on a room list - * sublist in Element Web/Desktop. - */ - WebRoomListNotificationBadge, - - /** - * Room switched due to the user changing space in Element Web/Desktop. - */ - WebSpaceContextSwitch, - - /** - * Room accessed via clicking on the notifications badge on the - * currently selected space in Element Web/Desktop. - */ - WebSpacePanelNotificationBadge, - - /** - * Room accessed via interacting with the Threads Activity Centre in - * Element Web/Desktop. - */ - WebThreadsActivityCentre, - - /** - * Room accessed via Element Web/Desktop's Unified Search modal. - */ - WebUnifiedSearch, - - /** - * Room accessed via the Element Web/Desktop vertical breadcrumb hover - * menu. - */ - WebVerticalBreadcrumbs, - - /** - * Room switched due to widget interaction. - */ - Widget, - } - - enum class ActiveSpace { - - /** - * Active space is Home. - */ - Home, - - /** - * Active space is a meta space. - */ - Meta, - - /** - * Active space is a private space. - */ - Private, - - /** - * Active space is a public space. - */ - Public, - } - - override fun getName() = "ViewRoom" - - override fun getProperties(): Map? { - return mutableMapOf().apply { - activeSpace?.let { put("activeSpace", it.name) } - isDM?.let { put("isDM", it) } - isSpace?.let { put("isSpace", it) } - trigger?.let { put("trigger", it.name) } - viaKeyboard?.let { put("viaKeyboard", it) } - }.takeIf { it.isNotEmpty() } - } -}