diff --git a/analytics/src/main/java/com/anytypeio/anytype/analytics/base/EventsDictionary.kt b/analytics/src/main/java/com/anytypeio/anytype/analytics/base/EventsDictionary.kt index 34e7eea487..a9b080be01 100644 --- a/analytics/src/main/java/com/anytypeio/anytype/analytics/base/EventsDictionary.kt +++ b/analytics/src/main/java/com/anytypeio/anytype/analytics/base/EventsDictionary.kt @@ -23,7 +23,10 @@ object EventsDictionary { const val screenSettingsAccount = "ScreenSettingsAccount" const val clickDeleteSpace = "ClickDeleteSpace" const val clickDeleteSpaceWarning = "ClickDeleteSpaceWarning" + const val createSpace = "CreateSpace" + const val switchSpace = "SwitchSpace" const val deleteSpace = "DeleteSpace" + const val screenSettingsSpaceCreate = "ScreenSettingsSpaceCreate" const val wallpaperSet = "SettingsWallpaperSet" diff --git a/presentation/src/main/java/com/anytypeio/anytype/presentation/onboarding/signup/OnboardingSetProfileNameViewModel.kt b/presentation/src/main/java/com/anytypeio/anytype/presentation/onboarding/signup/OnboardingSetProfileNameViewModel.kt index bb9637944d..526af7cb78 100644 --- a/presentation/src/main/java/com/anytypeio/anytype/presentation/onboarding/signup/OnboardingSetProfileNameViewModel.kt +++ b/presentation/src/main/java/com/anytypeio/anytype/presentation/onboarding/signup/OnboardingSetProfileNameViewModel.kt @@ -6,6 +6,7 @@ import androidx.lifecycle.viewModelScope import com.anytypeio.anytype.CrashReporter import com.anytypeio.anytype.analytics.base.Analytics import com.anytypeio.anytype.analytics.base.EventsDictionary +import com.anytypeio.anytype.analytics.base.sendEvent import com.anytypeio.anytype.core_models.Id import com.anytypeio.anytype.core_models.Relations import com.anytypeio.anytype.core_models.exceptions.CreateAccountException @@ -108,6 +109,9 @@ class OnboardingSetProfileNameViewModel @Inject constructor( } }, fnR = { + viewModelScope.launch { + analytics.sendEvent(eventName = EventsDictionary.createSpace) + } createAccountAnalytics(startTime) val config = configStorage.getOrNull() if (config != null) { diff --git a/presentation/src/main/java/com/anytypeio/anytype/presentation/spaces/CreateSpaceViewModel.kt b/presentation/src/main/java/com/anytypeio/anytype/presentation/spaces/CreateSpaceViewModel.kt index 29b65173b8..0d18989d77 100644 --- a/presentation/src/main/java/com/anytypeio/anytype/presentation/spaces/CreateSpaceViewModel.kt +++ b/presentation/src/main/java/com/anytypeio/anytype/presentation/spaces/CreateSpaceViewModel.kt @@ -3,6 +3,9 @@ package com.anytypeio.anytype.presentation.spaces import androidx.lifecycle.ViewModel import androidx.lifecycle.ViewModelProvider import androidx.lifecycle.viewModelScope +import com.anytypeio.anytype.analytics.base.Analytics +import com.anytypeio.anytype.analytics.base.EventsDictionary +import com.anytypeio.anytype.analytics.base.sendEvent import com.anytypeio.anytype.core_models.Id import com.anytypeio.anytype.core_models.Relations import com.anytypeio.anytype.domain.base.fold @@ -17,7 +20,8 @@ import timber.log.Timber class CreateSpaceViewModel( private val createSpace: CreateSpace, private val spaceGradientProvider: SpaceGradientProvider, - private val spaceManager: SpaceManager + private val spaceManager: SpaceManager, + private val analytics: Analytics ) : BaseViewModel() { val isInProgress = MutableStateFlow(false) @@ -33,6 +37,10 @@ class CreateSpaceViewModel( to = gradient.to ) spaceGradient = MutableStateFlow(view) + + viewModelScope.launch { + analytics.sendEvent(eventName = EventsDictionary.screenSettingsSpaceCreate) + } } val isDismissed = MutableStateFlow(false) @@ -57,6 +65,7 @@ class CreateSpaceViewModel( result.fold( onLoading = { isInProgress.value = true }, onSuccess = { space: Id -> + analytics.sendEvent(eventName = EventsDictionary.createSpace) setNewSpaceAsCurrentSpace(space) Timber.d("Successfully created space: $space").also { isDismissed.value = true @@ -95,7 +104,8 @@ class CreateSpaceViewModel( class Factory @Inject constructor( private val createSpace: CreateSpace, private val spaceGradientProvider: SpaceGradientProvider, - private val spaceManager: SpaceManager + private val spaceManager: SpaceManager, + private val analytics: Analytics ) : ViewModelProvider.Factory { @Suppress("UNCHECKED_CAST") override fun create( @@ -103,7 +113,8 @@ class CreateSpaceViewModel( ) = CreateSpaceViewModel( createSpace = createSpace, spaceGradientProvider = spaceGradientProvider, - spaceManager = spaceManager + spaceManager = spaceManager, + analytics = analytics ) as T } } \ No newline at end of file diff --git a/presentation/src/main/java/com/anytypeio/anytype/presentation/spaces/SelectSpaceViewModel.kt b/presentation/src/main/java/com/anytypeio/anytype/presentation/spaces/SelectSpaceViewModel.kt index 44fc825b01..913e51970e 100644 --- a/presentation/src/main/java/com/anytypeio/anytype/presentation/spaces/SelectSpaceViewModel.kt +++ b/presentation/src/main/java/com/anytypeio/anytype/presentation/spaces/SelectSpaceViewModel.kt @@ -3,6 +3,9 @@ package com.anytypeio.anytype.presentation.spaces import androidx.lifecycle.ViewModel import androidx.lifecycle.ViewModelProvider import androidx.lifecycle.viewModelScope +import com.anytypeio.anytype.analytics.base.Analytics +import com.anytypeio.anytype.analytics.base.EventsDictionary +import com.anytypeio.anytype.analytics.base.sendEvent import com.anytypeio.anytype.core_models.DVFilter import com.anytypeio.anytype.core_models.DVFilterCondition import com.anytypeio.anytype.core_models.DVSort @@ -45,7 +48,8 @@ class SelectSpaceViewModel( private val urlBuilder: UrlBuilder, private val saveCurrentSpace: SaveCurrentSpace, private val appActionManager: AppActionManager, - private val getDefaultObjectType: GetDefaultObjectType + private val getDefaultObjectType: GetDefaultObjectType, + private val analytics: Analytics ) : BaseViewModel() { val views = MutableStateFlow>(emptyList()) @@ -181,6 +185,7 @@ class SelectSpaceViewModel( viewModelScope.launch { Timber.d("Setting space: $view") if (!view.isSelected) { + analytics.sendEvent(eventName = EventsDictionary.switchSpace) spaceManager.set(view.space) saveCurrentSpace.async(SaveCurrentSpace.Params(SpaceId(view.space))).fold( onFailure = { @@ -243,7 +248,8 @@ class SelectSpaceViewModel( private val urlBuilder: UrlBuilder, private val saveCurrentSpace: SaveCurrentSpace, private val appActionManager: AppActionManager, - private val getDefaultObjectType: GetDefaultObjectType + private val getDefaultObjectType: GetDefaultObjectType, + private val analytics: Analytics ) : ViewModelProvider.Factory { @Suppress("UNCHECKED_CAST") override fun create( @@ -255,7 +261,8 @@ class SelectSpaceViewModel( urlBuilder = urlBuilder, saveCurrentSpace = saveCurrentSpace, appActionManager = appActionManager, - getDefaultObjectType = getDefaultObjectType + getDefaultObjectType = getDefaultObjectType, + analytics = analytics ) as T }