analytics
This commit is contained in:
parent
2d32d0da54
commit
7437b71b24
|
@ -0,0 +1,44 @@
|
||||||
|
/*
|
||||||
|
* Copyright (c) 2022 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.experiment
|
||||||
|
|
||||||
|
import im.vector.app.features.analytics.itf.VectorAnalyticsEvent
|
||||||
|
|
||||||
|
data class ExperimentInteraction(
|
||||||
|
/**
|
||||||
|
* The unique name of this element.
|
||||||
|
*/
|
||||||
|
val name: Name,
|
||||||
|
|
||||||
|
val extra: Map<String, Any> = emptyMap()
|
||||||
|
) : VectorAnalyticsEvent {
|
||||||
|
|
||||||
|
enum class Name {
|
||||||
|
SpaceSwitchHeader,
|
||||||
|
SpaceSwitchHeaderAdd,
|
||||||
|
SpaceSwitchHeaderCreate,
|
||||||
|
}
|
||||||
|
|
||||||
|
override fun getName() = "Interaction"
|
||||||
|
|
||||||
|
override fun getProperties(): Map<String, Any>? {
|
||||||
|
return mutableMapOf<String, Any>().apply {
|
||||||
|
put("name", name.name)
|
||||||
|
putAll(extra)
|
||||||
|
}.takeIf { it.isNotEmpty() }
|
||||||
|
}
|
||||||
|
}
|
|
@ -45,6 +45,7 @@ import im.vector.app.core.ui.views.CurrentCallsView
|
||||||
import im.vector.app.core.ui.views.CurrentCallsViewPresenter
|
import im.vector.app.core.ui.views.CurrentCallsViewPresenter
|
||||||
import im.vector.app.core.ui.views.KeysBackupBanner
|
import im.vector.app.core.ui.views.KeysBackupBanner
|
||||||
import im.vector.app.databinding.FragmentHomeDetailBinding
|
import im.vector.app.databinding.FragmentHomeDetailBinding
|
||||||
|
import im.vector.app.features.analytics.experiment.ExperimentInteraction
|
||||||
import im.vector.app.features.call.SharedKnownCallsViewModel
|
import im.vector.app.features.call.SharedKnownCallsViewModel
|
||||||
import im.vector.app.features.call.VectorCallActivity
|
import im.vector.app.features.call.VectorCallActivity
|
||||||
import im.vector.app.features.call.dialpad.DialPadFragment
|
import im.vector.app.features.call.dialpad.DialPadFragment
|
||||||
|
@ -279,6 +280,12 @@ class HomeDetailFragment @Inject constructor(
|
||||||
.setInterpolator(DecelerateInterpolator())
|
.setInterpolator(DecelerateInterpolator())
|
||||||
.start()
|
.start()
|
||||||
} else {
|
} else {
|
||||||
|
val extraProperties = if (getCurrentSpace() != null) {
|
||||||
|
mapOf("isSubspace" to true)
|
||||||
|
} else {
|
||||||
|
mapOf("isSubspace" to false)
|
||||||
|
}
|
||||||
|
analyticsTracker.capture(ExperimentInteraction(ExperimentInteraction.Name.SpaceSwitchHeader, extraProperties))
|
||||||
showModal()
|
showModal()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -29,7 +29,10 @@ import im.vector.app.core.di.hiltMavericksViewModelFactory
|
||||||
import im.vector.app.core.extensions.singletonEntryPoint
|
import im.vector.app.core.extensions.singletonEntryPoint
|
||||||
import im.vector.app.core.platform.VectorViewModel
|
import im.vector.app.core.platform.VectorViewModel
|
||||||
import im.vector.app.features.VectorOverrides
|
import im.vector.app.features.VectorOverrides
|
||||||
|
import im.vector.app.features.analytics.AnalyticsTracker
|
||||||
|
import im.vector.app.features.analytics.extensions.toAnalyticsViewRoom
|
||||||
import im.vector.app.features.analytics.plan.Interaction
|
import im.vector.app.features.analytics.plan.Interaction
|
||||||
|
import im.vector.app.features.analytics.plan.ViewRoom
|
||||||
import im.vector.app.features.call.dialpad.DialPadLookup
|
import im.vector.app.features.call.dialpad.DialPadLookup
|
||||||
import im.vector.app.features.call.lookup.CallProtocolsChecker
|
import im.vector.app.features.call.lookup.CallProtocolsChecker
|
||||||
import im.vector.app.features.call.webrtc.WebRtcCallManager
|
import im.vector.app.features.call.webrtc.WebRtcCallManager
|
||||||
|
@ -75,7 +78,8 @@ class HomeDetailViewModel @AssistedInject constructor(
|
||||||
private val directRoomHelper: DirectRoomHelper,
|
private val directRoomHelper: DirectRoomHelper,
|
||||||
private val appStateHandler: AppStateHandler,
|
private val appStateHandler: AppStateHandler,
|
||||||
private val autoAcceptInvites: AutoAcceptInvites,
|
private val autoAcceptInvites: AutoAcceptInvites,
|
||||||
private val vectorOverrides: VectorOverrides
|
private val vectorOverrides: VectorOverrides,
|
||||||
|
private val analyticsTracker: AnalyticsTracker
|
||||||
) : VectorViewModel<HomeDetailViewState, HomeDetailAction, HomeDetailViewEvents>(initialState),
|
) : VectorViewModel<HomeDetailViewState, HomeDetailAction, HomeDetailViewEvents>(initialState),
|
||||||
CallProtocolsChecker.Listener {
|
CallProtocolsChecker.Listener {
|
||||||
|
|
||||||
|
@ -290,6 +294,9 @@ class HomeDetailViewModel @AssistedInject constructor(
|
||||||
hasUnreadMessages = dmRooms.totalCount + otherRooms.totalCount > 0
|
hasUnreadMessages = dmRooms.totalCount + otherRooms.totalCount > 0
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
groupingMethod.spaceSummary?.toAnalyticsViewRoom(null, groupingMethod)?.let {
|
||||||
|
analyticsTracker.capture(it)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
null -> Unit
|
null -> Unit
|
||||||
}
|
}
|
||||||
|
|
|
@ -29,6 +29,8 @@ import dagger.hilt.android.AndroidEntryPoint
|
||||||
import im.vector.app.R
|
import im.vector.app.R
|
||||||
import im.vector.app.core.platform.VectorBaseFragment
|
import im.vector.app.core.platform.VectorBaseFragment
|
||||||
import im.vector.app.databinding.FragmentSpaceListModalBinding
|
import im.vector.app.databinding.FragmentSpaceListModalBinding
|
||||||
|
import im.vector.app.features.analytics.experiment.ExperimentInteraction
|
||||||
|
import im.vector.app.features.analytics.plan.Interaction
|
||||||
import im.vector.app.features.home.room.list.UnreadCounterBadgeView
|
import im.vector.app.features.home.room.list.UnreadCounterBadgeView
|
||||||
import im.vector.app.features.spaces.SpaceListAction
|
import im.vector.app.features.spaces.SpaceListAction
|
||||||
import im.vector.app.features.spaces.SpaceListViewModel
|
import im.vector.app.features.spaces.SpaceListViewModel
|
||||||
|
@ -90,8 +92,10 @@ class SpaceListModalFragment : VectorBaseFragment<FragmentSpaceListModalBinding>
|
||||||
binding.addSpaceLayout.setOnClickListener {
|
binding.addSpaceLayout.setOnClickListener {
|
||||||
val currentSpace = sharedActionViewModel.space.value
|
val currentSpace = sharedActionViewModel.space.value
|
||||||
if (currentSpace != null) {
|
if (currentSpace != null) {
|
||||||
|
analyticsTracker.capture(ExperimentInteraction(ExperimentInteraction.Name.SpaceSwitchHeaderAdd))
|
||||||
startActivity(SpaceManageActivity.newIntent(requireActivity(), currentSpace.roomId, ManageType.AddRoomsOnlySpaces))
|
startActivity(SpaceManageActivity.newIntent(requireActivity(), currentSpace.roomId, ManageType.AddRoomsOnlySpaces))
|
||||||
} else {
|
} else {
|
||||||
|
analyticsTracker.capture(ExperimentInteraction(ExperimentInteraction.Name.SpaceSwitchHeaderCreate))
|
||||||
sharedActionViewModel.post(HomeActivitySharedAction.AddSpace)
|
sharedActionViewModel.post(HomeActivitySharedAction.AddSpace)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue