1
0
Fork 0
mirror of https://github.com/anyproto/anytype-kotlin.git synced 2025-06-08 05:47:05 +09:00

DROID-2623 Analytics | Relation events (#1425)

This commit is contained in:
Konstantin Ivanov 2024-07-26 19:57:53 +02:00 committed by GitHub
parent 84000b34b7
commit 04cf436e78
Signed by: github
GPG key ID: B5690EEEBB952194
30 changed files with 407 additions and 181 deletions

View file

@ -101,6 +101,7 @@ object EventsDictionary {
const val relationAdd = "AddExistingRelation"
const val relationCreate = "CreateRelation"
const val relationChangeValue = "ChangeRelationValue"
const val relationDeleteValue = "DeleteRelationValue"
const val relationDelete = "DeleteRelation"
const val relationUrlOpen = "RelationUrlOpen"
const val relationUrlCopy = "RelationUrlCopy"

View file

@ -6,6 +6,7 @@ data class Props(val map: Map<String?, Any?>) {
const val OBJ_TYPE_CUSTOM = "custom"
const val OBJ_LAYOUT_NONE = "none"
const val OBJ_RELATION_CUSTOM = "custom"
fun empty() = Props(emptyMap())
}

View file

@ -28,6 +28,8 @@ import com.anytypeio.anytype.domain.relations.AddRelationToObject
import com.anytypeio.anytype.domain.relations.AddToFeaturedRelations
import com.anytypeio.anytype.domain.relations.DeleteRelationFromObject
import com.anytypeio.anytype.domain.relations.RemoveFromFeaturedRelations
import com.anytypeio.anytype.domain.workspace.SpaceManager
import com.anytypeio.anytype.presentation.analytics.AnalyticSpaceHelperDelegate
import com.anytypeio.anytype.presentation.editor.Editor
import com.anytypeio.anytype.presentation.objects.LockedStateProvider
import com.anytypeio.anytype.presentation.relations.ObjectRelationListViewModelFactory
@ -87,6 +89,12 @@ class ObjectRelationListTest {
@Mock
lateinit var lockedStateProvider: LockedStateProvider
@Mock
lateinit var spaceManager: SpaceManager
@Mock
lateinit var analyticSpaceHelperDelegate: AnalyticSpaceHelperDelegate
private lateinit var updateDetail: UpdateDetail
private lateinit var addToFeaturedRelations: AddToFeaturedRelations
private lateinit var removeFromFeaturedRelations: RemoveFromFeaturedRelations
@ -116,7 +124,9 @@ class ObjectRelationListTest {
deleteRelationFromObject = deleteRelationFromObject,
analytics = analytics,
storeOfRelations = storeOfRelations,
addRelationToObject = addRelationToObject
addRelationToObject = addRelationToObject,
spaceManager = spaceManager,
analyticSpaceHelperDelegate = analyticSpaceHelperDelegate
)
}

View file

@ -11,6 +11,8 @@ import com.anytypeio.anytype.domain.relations.AddRelationToObject
import com.anytypeio.anytype.domain.relations.AddToFeaturedRelations
import com.anytypeio.anytype.domain.relations.DeleteRelationFromObject
import com.anytypeio.anytype.domain.relations.RemoveFromFeaturedRelations
import com.anytypeio.anytype.domain.workspace.SpaceManager
import com.anytypeio.anytype.presentation.analytics.AnalyticSpaceHelperDelegate
import com.anytypeio.anytype.presentation.objects.LockedStateProvider
import com.anytypeio.anytype.presentation.relations.ObjectRelationListViewModelFactory
import com.anytypeio.anytype.presentation.relations.providers.RelationListProvider
@ -49,7 +51,9 @@ object ObjectRelationListModule {
deleteRelationFromObject: DeleteRelationFromObject,
analytics: Analytics,
storeOfRelations: StoreOfRelations,
addRelationToObject: AddRelationToObject
addRelationToObject: AddRelationToObject,
analyticSpaceHelperDelegate: AnalyticSpaceHelperDelegate,
spaceManager: SpaceManager
): ObjectRelationListViewModelFactory {
return ObjectRelationListViewModelFactory(
lockedStateProvider = lockedStateProvider,
@ -62,7 +66,9 @@ object ObjectRelationListModule {
deleteRelationFromObject = deleteRelationFromObject,
analytics = analytics,
storeOfRelations = storeOfRelations,
addRelationToObject = addRelationToObject
addRelationToObject = addRelationToObject,
analyticSpaceHelperDelegate = analyticSpaceHelperDelegate,
spaceManager = spaceManager
)
}

View file

@ -6,6 +6,8 @@ import com.anytypeio.anytype.core_utils.di.scope.PerModal
import com.anytypeio.anytype.domain.dataview.interactor.UpdateDataViewViewer
import com.anytypeio.anytype.domain.objects.StoreOfRelations
import com.anytypeio.anytype.domain.relations.DeleteRelationFromDataView
import com.anytypeio.anytype.domain.workspace.SpaceManager
import com.anytypeio.anytype.presentation.analytics.AnalyticSpaceHelperDelegate
import com.anytypeio.anytype.presentation.relations.ObjectSetSettingsViewModel
import com.anytypeio.anytype.presentation.sets.state.ObjectState
import com.anytypeio.anytype.presentation.util.Dispatcher
@ -40,12 +42,16 @@ object ObjectSetSettingsModule {
store: StoreOfRelations,
analytics: Analytics,
deleteRelationFromDataView: DeleteRelationFromDataView,
analyticSpaceHelperDelegate: AnalyticSpaceHelperDelegate,
spaceManager: SpaceManager
): ObjectSetSettingsViewModel.Factory = ObjectSetSettingsViewModel.Factory(
objectState = state,
dispatcher = dispatcher,
updateDataViewViewer = updateDataViewViewer,
analytics = analytics,
store = store,
deleteRelationFromDataView = deleteRelationFromDataView
deleteRelationFromDataView = deleteRelationFromDataView,
analyticSpaceHelperDelegate = analyticSpaceHelperDelegate,
spaceManager = spaceManager
)
}

View file

@ -10,8 +10,10 @@ import com.anytypeio.anytype.domain.`object`.DuplicateObject
import com.anytypeio.anytype.domain.`object`.UpdateDetail
import com.anytypeio.anytype.domain.objects.SetObjectListIsArchived
import com.anytypeio.anytype.domain.objects.StoreOfObjectTypes
import com.anytypeio.anytype.domain.objects.StoreOfRelations
import com.anytypeio.anytype.domain.search.SearchObjects
import com.anytypeio.anytype.domain.workspace.SpaceManager
import com.anytypeio.anytype.presentation.analytics.AnalyticSpaceHelperDelegate
import com.anytypeio.anytype.presentation.relations.providers.ObjectRelationProvider
import com.anytypeio.anytype.presentation.relations.providers.ObjectValueProvider
import com.anytypeio.anytype.presentation.relations.value.`object`.ObjectValueViewModel
@ -67,7 +69,9 @@ object ObjectValueObjectModule {
urlBuilder: UrlBuilder,
storeOfObjectTypes: StoreOfObjectTypes,
objectListIsArchived: SetObjectListIsArchived,
duplicateObject: DuplicateObject
duplicateObject: DuplicateObject,
analyticSpaceHelperDelegate: AnalyticSpaceHelperDelegate,
storeOfRelations: StoreOfRelations
): ObjectValueViewModelFactory = ObjectValueViewModelFactory(
params = params,
values = values,
@ -80,7 +84,9 @@ object ObjectValueObjectModule {
urlBuilder = urlBuilder,
storeOfObjectTypes = storeOfObjectTypes,
objectListIsArchived = objectListIsArchived,
duplicateObject = duplicateObject
duplicateObject = duplicateObject,
analyticSpaceHelperDelegate = analyticSpaceHelperDelegate,
storeOfRelations = storeOfRelations
)
}
//endregion
@ -120,7 +126,9 @@ object ObjectValueSetModule {
urlBuilder: UrlBuilder,
storeOfObjectTypes: StoreOfObjectTypes,
objectListIsArchived: SetObjectListIsArchived,
duplicateObject: DuplicateObject
duplicateObject: DuplicateObject,
analyticSpaceHelperDelegate: AnalyticSpaceHelperDelegate,
storeOfRelations: StoreOfRelations
): ObjectValueViewModelFactory = ObjectValueViewModelFactory(
params = params,
values = values,
@ -133,7 +141,9 @@ object ObjectValueSetModule {
urlBuilder = urlBuilder,
storeOfObjectTypes = storeOfObjectTypes,
objectListIsArchived = objectListIsArchived,
duplicateObject = duplicateObject
duplicateObject = duplicateObject,
analyticSpaceHelperDelegate = analyticSpaceHelperDelegate,
storeOfRelations = storeOfRelations
)
}
//endregion
@ -173,7 +183,9 @@ object ObjectValueDataViewModule {
urlBuilder: UrlBuilder,
storeOfObjectTypes: StoreOfObjectTypes,
objectListIsArchived: SetObjectListIsArchived,
duplicateObject: DuplicateObject
duplicateObject: DuplicateObject,
analyticSpaceHelperDelegate: AnalyticSpaceHelperDelegate,
storeOfRelations: StoreOfRelations
): ObjectValueViewModelFactory = ObjectValueViewModelFactory(
params = params,
values = values,
@ -186,7 +198,9 @@ object ObjectValueDataViewModule {
urlBuilder = urlBuilder,
storeOfObjectTypes = storeOfObjectTypes,
objectListIsArchived = objectListIsArchived,
duplicateObject = duplicateObject
duplicateObject = duplicateObject,
analyticSpaceHelperDelegate = analyticSpaceHelperDelegate,
storeOfRelations = storeOfRelations
)
}
//endregion

View file

@ -8,6 +8,7 @@ import com.anytypeio.anytype.domain.`object`.SetObjectDetails
import com.anytypeio.anytype.domain.objects.StoreOfRelations
import com.anytypeio.anytype.domain.relations.CreateRelationOption
import com.anytypeio.anytype.domain.workspace.SpaceManager
import com.anytypeio.anytype.presentation.analytics.AnalyticSpaceHelperDelegate
import com.anytypeio.anytype.presentation.relations.option.CreateOrEditOptionViewModel
import com.anytypeio.anytype.presentation.relations.option.CreateOrEditOptionViewModelFactory
import com.anytypeio.anytype.presentation.relations.providers.ObjectRelationProvider
@ -58,7 +59,8 @@ object CreateOrEditOptionObjectModule {
spaceManager: SpaceManager,
analytics: Analytics,
createOption: CreateRelationOption,
storeOfRelations: StoreOfRelations
storeOfRelations: StoreOfRelations,
analyticSpaceHelperDelegate: AnalyticSpaceHelperDelegate
): CreateOrEditOptionViewModelFactory = CreateOrEditOptionViewModelFactory(
params = params,
values = values,
@ -67,7 +69,8 @@ object CreateOrEditOptionObjectModule {
dispatcher = dispatcher,
spaceManager = spaceManager,
analytics = analytics,
storeOfRelations = storeOfRelations
storeOfRelations = storeOfRelations,
analyticSpaceHelperDelegate = analyticSpaceHelperDelegate
)
}
//endregion
@ -110,7 +113,8 @@ object CreateOrEditOptionSetModule {
spaceManager: SpaceManager,
analytics: Analytics,
createOption: CreateRelationOption,
storeOfRelations: StoreOfRelations
storeOfRelations: StoreOfRelations,
analyticSpaceHelperDelegate: AnalyticSpaceHelperDelegate
): CreateOrEditOptionViewModelFactory = CreateOrEditOptionViewModelFactory(
params = params,
values = values,
@ -119,7 +123,8 @@ object CreateOrEditOptionSetModule {
dispatcher = dispatcher,
spaceManager = spaceManager,
analytics = analytics,
storeOfRelations = storeOfRelations
storeOfRelations = storeOfRelations,
analyticSpaceHelperDelegate = analyticSpaceHelperDelegate
)
}
//endregion
@ -162,7 +167,8 @@ object CreateOrEditOptionDataViewModule {
spaceManager: SpaceManager,
analytics: Analytics,
createOption: CreateRelationOption,
storeOfRelations: StoreOfRelations
storeOfRelations: StoreOfRelations,
analyticSpaceHelperDelegate: AnalyticSpaceHelperDelegate
): CreateOrEditOptionViewModelFactory = CreateOrEditOptionViewModelFactory(
params = params,
values = values,
@ -171,7 +177,8 @@ object CreateOrEditOptionDataViewModule {
dispatcher = dispatcher,
spaceManager = spaceManager,
analytics = analytics,
storeOfRelations = storeOfRelations
storeOfRelations = storeOfRelations,
analyticSpaceHelperDelegate = analyticSpaceHelperDelegate
)
}
//endregion

View file

@ -8,9 +8,11 @@ import com.anytypeio.anytype.domain.block.repo.BlockRepository
import com.anytypeio.anytype.domain.debugging.Logger
import com.anytypeio.anytype.domain.library.StorelessSubscriptionContainer
import com.anytypeio.anytype.domain.`object`.UpdateDetail
import com.anytypeio.anytype.domain.objects.StoreOfRelations
import com.anytypeio.anytype.domain.relations.DeleteRelationOptions
import com.anytypeio.anytype.domain.search.SubscriptionEventChannel
import com.anytypeio.anytype.domain.workspace.SpaceManager
import com.anytypeio.anytype.presentation.analytics.AnalyticSpaceHelperDelegate
import com.anytypeio.anytype.presentation.relations.providers.ObjectRelationProvider
import com.anytypeio.anytype.presentation.relations.providers.ObjectValueProvider
import com.anytypeio.anytype.presentation.relations.value.tagstatus.SUB_MY_OPTIONS
@ -83,7 +85,9 @@ object TagOrStatusValueObjectModule {
spaceManager: SpaceManager,
params: TagOrStatusValueViewModel.ViewModelParams,
@Named(SUB_MY_OPTIONS) subscription: StorelessSubscriptionContainer,
deleteRelationOptions: DeleteRelationOptions
deleteRelationOptions: DeleteRelationOptions,
analyticSpaceHelperDelegate: AnalyticSpaceHelperDelegate,
storeOfRelations: StoreOfRelations
): TagOrStatusValueViewModelFactory = TagOrStatusValueViewModelFactory(
params = params,
values = values,
@ -93,7 +97,9 @@ object TagOrStatusValueObjectModule {
analytics = analytics,
spaceManager = spaceManager,
subscription = subscription,
deleteRelationOptions = deleteRelationOptions
deleteRelationOptions = deleteRelationOptions,
analyticSpaceHelperDelegate = analyticSpaceHelperDelegate,
storeOfRelations = storeOfRelations
)
}
//endregion
@ -157,7 +163,9 @@ object TagOrStatusValueSetModule {
spaceManager: SpaceManager,
params: TagOrStatusValueViewModel.ViewModelParams,
@Named(SUB_MY_OPTIONS) subscription: StorelessSubscriptionContainer,
deleteRelationOptions: DeleteRelationOptions
deleteRelationOptions: DeleteRelationOptions,
analyticSpaceHelperDelegate: AnalyticSpaceHelperDelegate,
storeOfRelations: StoreOfRelations
): TagOrStatusValueViewModelFactory = TagOrStatusValueViewModelFactory(
params = params,
values = values,
@ -167,7 +175,9 @@ object TagOrStatusValueSetModule {
analytics = analytics,
spaceManager = spaceManager,
subscription = subscription,
deleteRelationOptions = deleteRelationOptions
deleteRelationOptions = deleteRelationOptions,
analyticSpaceHelperDelegate = analyticSpaceHelperDelegate,
storeOfRelations = storeOfRelations
)
}
//endregion
@ -231,7 +241,9 @@ object TagOrStatusValueDataViewModule {
spaceManager: SpaceManager,
params: TagOrStatusValueViewModel.ViewModelParams,
@Named(SUB_MY_OPTIONS) subscription: StorelessSubscriptionContainer,
deleteRelationOptions: DeleteRelationOptions
deleteRelationOptions: DeleteRelationOptions,
analyticSpaceHelperDelegate: AnalyticSpaceHelperDelegate,
storeOfRelations: StoreOfRelations
): TagOrStatusValueViewModelFactory = TagOrStatusValueViewModelFactory(
params = params,
values = values,
@ -241,7 +253,9 @@ object TagOrStatusValueDataViewModule {
analytics = analytics,
spaceManager = spaceManager,
subscription = subscription,
deleteRelationOptions = deleteRelationOptions
deleteRelationOptions = deleteRelationOptions,
analyticSpaceHelperDelegate = analyticSpaceHelperDelegate,
storeOfRelations = storeOfRelations
)
}
//endregion

View file

@ -119,7 +119,8 @@ object RelationAddToDataViewModule {
getRelations: GetRelations,
addObjectToWorkspace: AddObjectToWorkspace,
spaceManager: SpaceManager,
analyticSpaceHelperDelegate: AnalyticSpaceHelperDelegate
analyticSpaceHelperDelegate: AnalyticSpaceHelperDelegate,
storeOfRelations: StoreOfRelations
): RelationAddToDataViewViewModel.Factory = RelationAddToDataViewViewModel.Factory(
addRelationToDataView = addRelationToDataView,
dispatcher = dispatcher,
@ -131,7 +132,8 @@ object RelationAddToDataViewModule {
getRelations = getRelations,
addObjectToWorkspace = addObjectToWorkspace,
spaceManager = spaceManager,
analyticSpaceHelperDelegate = analyticSpaceHelperDelegate
analyticSpaceHelperDelegate = analyticSpaceHelperDelegate,
storeOfRelations = storeOfRelations
)
@JvmStatic

View file

@ -57,7 +57,8 @@ object RelationCreateFromScratchForObjectModule {
createFromScratchState: StateHolder<CreateFromScratchState>,
createRelation: CreateRelation,
spaceManager: SpaceManager,
analyticSpaceHelperDelegate: AnalyticSpaceHelperDelegate
analyticSpaceHelperDelegate: AnalyticSpaceHelperDelegate,
storeOfRelations: StoreOfRelations
) = RelationCreateFromScratchForObjectViewModel.Factory(
addRelationToObject = addRelationToObject,
createRelation = createRelation,
@ -65,7 +66,8 @@ object RelationCreateFromScratchForObjectModule {
analytics = analytics,
createFromScratchState = createFromScratchState,
spaceManager = spaceManager,
analyticSpaceHelperDelegate = analyticSpaceHelperDelegate
analyticSpaceHelperDelegate = analyticSpaceHelperDelegate,
storeOfRelations = storeOfRelations
)
@JvmStatic
@ -120,7 +122,8 @@ object RelationCreateFromScratchForDataViewModule {
createRelation: CreateRelation,
addRelationToDataView: AddRelationToDataView,
spaceManager: SpaceManager,
analyticSpaceHelperDelegate: AnalyticSpaceHelperDelegate
analyticSpaceHelperDelegate: AnalyticSpaceHelperDelegate,
storeOfRelations: StoreOfRelations
) = RelationCreateFromScratchForDataViewViewModel.Factory(
addRelationToDataView = addRelationToDataView,
dispatcher = dispatcher,
@ -130,7 +133,8 @@ object RelationCreateFromScratchForDataViewModule {
createFromScratchState = createFromScratchState,
createRelation = createRelation,
spaceManager = spaceManager,
analyticSpaceHelperDelegate = analyticSpaceHelperDelegate
analyticSpaceHelperDelegate = analyticSpaceHelperDelegate,
storeOfRelations = storeOfRelations
)
@JvmStatic
@ -188,7 +192,8 @@ object RelationCreateFromScratchForObjectBlockModule {
analytics: Analytics,
createFromScratchState: StateHolder<CreateFromScratchState>,
spaceManager: SpaceManager,
analyticSpaceHelperDelegate: AnalyticSpaceHelperDelegate
analyticSpaceHelperDelegate: AnalyticSpaceHelperDelegate,
storeOfRelations: StoreOfRelations
) = RelationCreateFromScratchForObjectBlockViewModel.Factory(
addRelationToObject = addRelationToObject,
createRelation = createRelation,
@ -196,7 +201,8 @@ object RelationCreateFromScratchForObjectBlockModule {
analytics = analytics,
createFromScratchState = createFromScratchState,
spaceManager = spaceManager,
analyticSpaceHelperDelegate = analyticSpaceHelperDelegate
analyticSpaceHelperDelegate = analyticSpaceHelperDelegate,
storeOfRelations = storeOfRelations
)
@JvmStatic

View file

@ -2043,7 +2043,8 @@ open class EditorFragment : NavigationFragment<FragmentEditorBinding>(R.layout.f
vm.onRelationTextValueChanged(
ctx = ctx,
value = text,
relationKey = relationKey
relationKey = relationKey,
isValueEmpty = text.isEmpty()
)
}
@ -2051,7 +2052,8 @@ open class EditorFragment : NavigationFragment<FragmentEditorBinding>(R.layout.f
vm.onRelationTextValueChanged(
ctx = ctx,
value = number,
relationKey = relationKey
relationKey = relationKey,
isValueEmpty = number == null
)
}
@ -2064,7 +2066,8 @@ open class EditorFragment : NavigationFragment<FragmentEditorBinding>(R.layout.f
vm.onRelationTextValueChanged(
ctx = ctx,
relationKey = relationKey,
value = timeInSeconds
value = timeInSeconds,
isValueEmpty = timeInSeconds == null
)
}

View file

@ -239,7 +239,8 @@ open class ObjectRelationListFragment : BaseBottomSheetFragment<FragmentRelation
vm.onRelationTextValueChanged(
ctx = ctx,
relationKey = relationKey,
value = text
value = text,
isValueEmpty = text.isEmpty()
)
}
@ -247,7 +248,8 @@ open class ObjectRelationListFragment : BaseBottomSheetFragment<FragmentRelation
vm.onRelationTextValueChanged(
ctx = ctx,
relationKey = relationKey,
value = number
value = number,
isValueEmpty = number == null
)
}
@ -260,7 +262,8 @@ open class ObjectRelationListFragment : BaseBottomSheetFragment<FragmentRelation
vm.onRelationTextValueChanged(
ctx = ctx,
relationKey = relationKey,
value = timeInSeconds
value = timeInSeconds,
isValueEmpty = timeInSeconds == null
)
}

View file

@ -109,7 +109,6 @@ abstract class RelationAddBaseFragment :
onRelationSelected(
ctx = command.ctx,
relation = command.relation,
format = command.format
)
}
}
@ -128,7 +127,7 @@ abstract class RelationAddBaseFragment :
BottomSheetBehavior.from(root.parent as View).state = BottomSheetBehavior.STATE_EXPANDED
}
abstract fun onRelationSelected(ctx: Id, relation: Key, format: RelationFormat)
abstract fun onRelationSelected(ctx: Id, relation: Key)
abstract fun onCreateFromScratchClicked()
override fun inflateBinding(
@ -154,11 +153,10 @@ class RelationAddToObjectFragment : RelationAddBaseFragment() {
lateinit var factory: RelationAddToObjectViewModel.Factory
override val vm: RelationAddToObjectViewModel by viewModels { factory }
override fun onRelationSelected(ctx: Id, relation: Key, format: RelationFormat) {
override fun onRelationSelected(ctx: Id, relation: Key) {
vm.onRelationSelected(
ctx = ctx,
relation = relation,
format = format,
screenType = EventsDictionary.Type.menu
)
}
@ -222,12 +220,11 @@ class RelationAddToDataViewFragment : RelationAddBaseFragment() {
lateinit var factory: RelationAddToDataViewViewModel.Factory
override val vm: RelationAddToDataViewViewModel by viewModels { factory }
override fun onRelationSelected(ctx: Id, relation: Key, format: RelationFormat) {
override fun onRelationSelected(ctx: Id, relation: Key) {
vm.onRelationSelected(
ctx = ctx,
viewerId = viewer,
relation = relation,
format = format,
dv = dv,
screenType = EventsDictionary.Type.dataView
)
@ -294,11 +291,10 @@ class RelationAddToObjectBlockFragment : RelationAddBaseFragment(),
super.onStart()
}
override fun onRelationSelected(ctx: Id, relation: Key, format: RelationFormat) {
override fun onRelationSelected(ctx: Id, relation: Key) {
vm.onRelationSelected(
ctx = ctx,
relation = relation,
format = format,
screenType = EventsDictionary.Type.block
)
}

View file

@ -79,7 +79,8 @@ class RelationsSubscriptionManager @Inject constructor(
Relations.MAX_COUNT,
Relations.RELATION_READ_ONLY_VALUE,
Relations.RELATION_DEFAULT_VALUE,
Relations.RELATION_FORMAT_OBJECT_TYPES
Relations.RELATION_FORMAT_OBJECT_TYPES,
Relations.SOURCE_OBJECT
),
ignoreWorkspace = true
)

View file

@ -214,7 +214,7 @@ import com.anytypeio.anytype.presentation.extension.sendAnalyticsObjectCreateEve
import com.anytypeio.anytype.presentation.extension.sendAnalyticsObjectShowEvent
import com.anytypeio.anytype.presentation.extension.sendAnalyticsObjectTypeSelectOrChangeEvent
import com.anytypeio.anytype.presentation.extension.sendAnalyticsOpenAsObject
import com.anytypeio.anytype.presentation.extension.sendAnalyticsRelationValueEvent
import com.anytypeio.anytype.presentation.extension.sendAnalyticsRelationEvent
import com.anytypeio.anytype.presentation.extension.sendAnalyticsSearchResultEvent
import com.anytypeio.anytype.presentation.extension.sendAnalyticsSearchWordsEvent
import com.anytypeio.anytype.presentation.extension.sendAnalyticsSelectTemplateEvent
@ -247,6 +247,7 @@ import com.anytypeio.anytype.presentation.profile.profileIcon
import com.anytypeio.anytype.presentation.relations.ObjectRelationView
import com.anytypeio.anytype.presentation.relations.getNotIncludedRecommendedRelations
import com.anytypeio.anytype.presentation.relations.getObjectRelations
import com.anytypeio.anytype.presentation.relations.values
import com.anytypeio.anytype.presentation.relations.views
import com.anytypeio.anytype.presentation.search.ObjectSearchConstants
import com.anytypeio.anytype.presentation.search.ObjectSearchViewModel
@ -3875,7 +3876,8 @@ class EditorViewModel(
proceedWithSetObjectDetails(
ctx = content.target,
key = Relations.DONE,
value = !clicked.isChecked
value = !clicked.isChecked,
isValueEmpty = false
)
}
}
@ -4122,17 +4124,6 @@ class EditorViewModel(
}
}
private fun proceedWithTogglingBlockRelationCheckbox(
view: ObjectRelationView.Checkbox,
relation: Id
) {
proceedWithSetObjectDetails(
ctx = context,
key = relation,
value = !view.isChecked
)
}
override fun onProceedWithFilePath(filePath: String?) {
Timber.d("onProceedWithFilePath, filePath:[$filePath]")
if (filePath == null) {
@ -4421,7 +4412,12 @@ class EditorViewModel(
}
}
private fun proceedWithSetObjectDetails(ctx: Id, key: String, value: Any?) {
private fun proceedWithSetObjectDetails(
ctx: Id,
key: String,
value: Any?,
isValueEmpty: Boolean
) {
viewModelScope.launch {
updateDetail(
UpdateDetail.Params(
@ -4432,8 +4428,12 @@ class EditorViewModel(
).process(
success = {
dispatcher.send(it)
sendAnalyticsRelationValueEvent(
analytics = analytics
analytics.sendAnalyticsRelationEvent(
eventName = if (isValueEmpty) EventsDictionary.relationDeleteValue
else EventsDictionary.relationChangeValue,
storeOfRelations = storeOfRelations,
relationKey = key,
spaceParams = provideParams(spaceManager.get())
)
},
failure = {
@ -4500,13 +4500,15 @@ class EditorViewModel(
fun onRelationTextValueChanged(
ctx: Id,
value: Any?,
relationKey: Key
relationKey: Key,
isValueEmpty: Boolean
) {
Timber.d("onRelationTextValueChanged, ctx:[$ctx] value:[$value] relationId:[$relationKey]")
proceedWithSetObjectDetails(
ctx = ctx,
key = relationKey,
value = value
value = value,
isValueEmpty = isValueEmpty
)
}
@ -7195,6 +7197,12 @@ class EditorViewModel(
failure = { Timber.e(it, "Error while adding relation to object") },
success = {
dispatcher.send(it)
analytics.sendAnalyticsRelationEvent(
eventName = EventsDictionary.relationAdd,
storeOfRelations = storeOfRelations,
relationKey = view.key,
spaceParams = provideParams(spaceManager.get())
)
action.invoke()
}
)
@ -7232,7 +7240,8 @@ class EditorViewModel(
proceedWithSetObjectDetails(
ctx = context,
key = relation.key,
value = !relationView.isChecked
value = !relationView.isChecked,
isValueEmpty = false
)
}
RelationFormat.DATE -> {

View file

@ -35,11 +35,13 @@ import com.anytypeio.anytype.analytics.base.sendEvent
import com.anytypeio.anytype.analytics.event.EventAnalytics
import com.anytypeio.anytype.analytics.features.WidgetAnalytics
import com.anytypeio.anytype.analytics.props.Props
import com.anytypeio.anytype.analytics.props.Props.Companion.OBJ_RELATION_CUSTOM
import com.anytypeio.anytype.analytics.props.Props.Companion.OBJ_TYPE_CUSTOM
import com.anytypeio.anytype.analytics.props.UserProperty
import com.anytypeio.anytype.core_models.Block
import com.anytypeio.anytype.core_models.DVFilterCondition
import com.anytypeio.anytype.core_models.Id
import com.anytypeio.anytype.core_models.Key
import com.anytypeio.anytype.core_models.ObjectWrapper
import com.anytypeio.anytype.core_models.Relation
import com.anytypeio.anytype.core_models.TextStyle
@ -49,8 +51,10 @@ import com.anytypeio.anytype.core_models.ext.mapToObjectWrapperType
import com.anytypeio.anytype.core_models.multiplayer.SpaceMemberPermissions
import com.anytypeio.anytype.core_utils.ext.Mimetype
import com.anytypeio.anytype.domain.config.ConfigStorage
import com.anytypeio.anytype.domain.objects.StoreOfRelations
import com.anytypeio.anytype.presentation.analytics.AnalyticSpaceHelperDelegate
import com.anytypeio.anytype.presentation.editor.editor.Markup
import com.anytypeio.anytype.presentation.relations.values
import com.anytypeio.anytype.presentation.sets.isChangingDefaultTypeAvailable
import com.anytypeio.anytype.presentation.sets.state.ObjectState
import com.anytypeio.anytype.presentation.sets.viewerByIdOrFirst
@ -726,50 +730,33 @@ fun CoroutineScope.sendAnalyticsCreateRelationEvent(
)
}
fun CoroutineScope.sendAnalyticsAddRelationEvent(
analytics: Analytics,
format: String,
type: String,
suspend fun Analytics.sendAnalyticsRelationEvent(
eventName: String,
relationKey: Key,
type: String? = null,
storeOfRelations: StoreOfRelations,
spaceParams: AnalyticSpaceHelperDelegate.Params
) {
val relation = storeOfRelations.getByKey(relationKey)
val sourceObject = relation?.sourceObject ?: OBJ_RELATION_CUSTOM
sendEvent(
analytics = analytics,
eventName = EventsDictionary.relationAdd,
eventName = eventName,
props = Props(
mapOf(
EventsPropertiesKey.format to format,
EventsPropertiesKey.type to type,
EventsPropertiesKey.permissions to spaceParams.permission,
EventsPropertiesKey.spaceType to spaceParams.spaceType
)
buildMap {
put(EventsPropertiesKey.relationKey, sourceObject)
if (relation != null) {
put(EventsPropertiesKey.format, relation.format.getPropName())
}
if (type != null) {
put(EventsPropertiesKey.type, type)
}
put(EventsPropertiesKey.permissions, spaceParams.permission)
put(EventsPropertiesKey.spaceType, spaceParams.spaceType)
}
)
)
}
fun CoroutineScope.sendAnalyticsRelationValueEvent(
analytics: Analytics,
type: String = ""
) {
sendEvent(
analytics = analytics,
eventName = EventsDictionary.relationChangeValue,
props = Props(
mapOf(
EventsPropertiesKey.type to type
)
)
)
}
fun CoroutineScope.sendAnalyticsRelationDeleteEvent(
analytics: Analytics
) {
sendEvent(
analytics = analytics,
eventName = EventsDictionary.relationDelete
)
}
fun CoroutineScope.sendAnalyticsObjectCreateEvent(
analytics: Analytics,
route: String,

View file

@ -11,6 +11,8 @@ import com.anytypeio.anytype.domain.relations.AddRelationToObject
import com.anytypeio.anytype.domain.relations.AddToFeaturedRelations
import com.anytypeio.anytype.domain.relations.DeleteRelationFromObject
import com.anytypeio.anytype.domain.relations.RemoveFromFeaturedRelations
import com.anytypeio.anytype.domain.workspace.SpaceManager
import com.anytypeio.anytype.presentation.analytics.AnalyticSpaceHelperDelegate
import com.anytypeio.anytype.presentation.objects.LockedStateProvider
import com.anytypeio.anytype.presentation.relations.providers.RelationListProvider
import com.anytypeio.anytype.presentation.util.Dispatcher
@ -26,7 +28,9 @@ class ObjectRelationListViewModelFactory(
private val deleteRelationFromObject: DeleteRelationFromObject,
private val analytics: Analytics,
private val storeOfRelations: StoreOfRelations,
private val addRelationToObject: AddRelationToObject
private val addRelationToObject: AddRelationToObject,
private val analyticSpaceHelperDelegate: AnalyticSpaceHelperDelegate,
private val spaceManager: SpaceManager
) : ViewModelProvider.Factory {
@Suppress("UNCHECKED_CAST")
@ -42,7 +46,9 @@ class ObjectRelationListViewModelFactory(
deleteRelationFromObject = deleteRelationFromObject,
analytics = analytics,
storeOfRelations = storeOfRelations,
addRelationToObject = addRelationToObject
addRelationToObject = addRelationToObject,
analyticSpaceHelperDelegate = analyticSpaceHelperDelegate,
spaceManager = spaceManager
) as T
}
}

View file

@ -4,15 +4,19 @@ 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.core_models.DVViewerRelation
import com.anytypeio.anytype.core_models.Id
import com.anytypeio.anytype.core_models.Key
import com.anytypeio.anytype.core_models.Payload
import com.anytypeio.anytype.domain.base.fold
import com.anytypeio.anytype.domain.dataview.interactor.UpdateDataViewViewer
import com.anytypeio.anytype.domain.objects.StoreOfRelations
import com.anytypeio.anytype.domain.relations.DeleteRelationFromDataView
import com.anytypeio.anytype.domain.workspace.SpaceManager
import com.anytypeio.anytype.presentation.analytics.AnalyticSpaceHelperDelegate
import com.anytypeio.anytype.presentation.common.BaseListViewModel
import com.anytypeio.anytype.presentation.extension.sendAnalyticsRelationDeleteEvent
import com.anytypeio.anytype.presentation.extension.sendAnalyticsRelationEvent
import com.anytypeio.anytype.presentation.mapper.mapToSimpleRelationView
import com.anytypeio.anytype.presentation.sets.dataViewState
import com.anytypeio.anytype.presentation.sets.filterHiddenRelations
@ -33,8 +37,10 @@ class ObjectSetSettingsViewModel(
private val updateDataViewViewer: UpdateDataViewViewer,
private val storeOfRelations: StoreOfRelations,
private val analytics: Analytics,
private val deleteRelationFromDataView: DeleteRelationFromDataView
) : BaseListViewModel<ViewerRelationListView>() {
private val deleteRelationFromDataView: DeleteRelationFromDataView,
private val analyticSpaceHelperDelegate: AnalyticSpaceHelperDelegate,
private val spaceManager: SpaceManager
) : BaseListViewModel<ViewerRelationListView>(), AnalyticSpaceHelperDelegate by analyticSpaceHelperDelegate {
val screenState = MutableStateFlow(ScreenState.LIST)
@ -80,10 +86,10 @@ class ObjectSetSettingsViewModel(
}
fun onDeleteClicked(ctx: Id, viewerId: Id, item: SimpleRelationView) {
proceedWithDeletingRelationFromViewer(ctx = ctx, viewerId = viewerId, relation = item.key)
proceedWithDeletingRelationFromViewer(ctx = ctx, viewerId = viewerId, relationKey = item.key)
}
private fun proceedWithDeletingRelationFromViewer(ctx: Id, viewerId: Id, relation: Id) {
private fun proceedWithDeletingRelationFromViewer(ctx: Id, viewerId: Id, relationKey: Key) {
val state = objectState.value.dataViewState() ?: return
val viewer = state.viewerById(viewerId) ?: return
viewModelScope.launch {
@ -91,7 +97,7 @@ class ObjectSetSettingsViewModel(
ctx = ctx,
dv = state.dataViewBlock.id,
view = viewer.id,
keys = listOf(relation)
keys = listOf(relationKey)
)
updateDataViewViewer.async(params).fold(
onFailure = { e -> Timber.e(e, "Error while deleting relation from dv") },
@ -99,11 +105,16 @@ class ObjectSetSettingsViewModel(
dispatcher.send(payload)
proceedWithUpdatingCurrentViewAfterRelationDeletion(
ctx = ctx,
relation = relation,
relation = relationKey,
viewerId = viewerId
)
proceedWithDeletingRelationFromDataView(ctx = ctx, relation = relation)
sendAnalyticsRelationDeleteEvent(analytics)
proceedWithDeletingRelationFromDataView(ctx = ctx, relation = relationKey)
analytics.sendAnalyticsRelationEvent(
eventName = EventsDictionary.relationDelete,
storeOfRelations = storeOfRelations,
relationKey = relationKey,
spaceParams = provideParams(spaceManager.get())
)
}
)
}
@ -215,7 +226,9 @@ class ObjectSetSettingsViewModel(
private val updateDataViewViewer: UpdateDataViewViewer,
private val store: StoreOfRelations,
private val analytics: Analytics,
private val deleteRelationFromDataView: DeleteRelationFromDataView
private val deleteRelationFromDataView: DeleteRelationFromDataView,
private val analyticSpaceHelperDelegate: AnalyticSpaceHelperDelegate,
private val spaceManager: SpaceManager
) : ViewModelProvider.Factory {
@Suppress("UNCHECKED_CAST")
override fun <T : ViewModel> create(modelClass: Class<T>): T {
@ -225,7 +238,9 @@ class ObjectSetSettingsViewModel(
updateDataViewViewer = updateDataViewViewer,
storeOfRelations = store,
analytics = analytics,
deleteRelationFromDataView = deleteRelationFromDataView
deleteRelationFromDataView = deleteRelationFromDataView,
analyticSpaceHelperDelegate = analyticSpaceHelperDelegate,
spaceManager = spaceManager
) as T
}
}

View file

@ -4,22 +4,22 @@ 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.core_models.DVViewerRelation
import com.anytypeio.anytype.core_models.Id
import com.anytypeio.anytype.core_models.Key
import com.anytypeio.anytype.core_models.Payload
import com.anytypeio.anytype.core_models.RelationFormat
import com.anytypeio.anytype.core_models.primitives.SpaceId
import com.anytypeio.anytype.domain.base.AppCoroutineDispatchers
import com.anytypeio.anytype.domain.base.fold
import com.anytypeio.anytype.domain.dataview.interactor.AddRelationToDataView
import com.anytypeio.anytype.domain.dataview.interactor.UpdateDataViewViewer
import com.anytypeio.anytype.domain.objects.StoreOfRelations
import com.anytypeio.anytype.domain.relations.GetRelations
import com.anytypeio.anytype.domain.workspace.AddObjectToWorkspace
import com.anytypeio.anytype.domain.workspace.SpaceManager
import com.anytypeio.anytype.presentation.analytics.AnalyticSpaceHelperDelegate
import com.anytypeio.anytype.presentation.extension.getPropName
import com.anytypeio.anytype.presentation.extension.sendAnalyticsAddRelationEvent
import com.anytypeio.anytype.presentation.extension.sendAnalyticsRelationEvent
import com.anytypeio.anytype.presentation.relations.providers.ObjectRelationProvider
import com.anytypeio.anytype.presentation.sets.dataViewState
import com.anytypeio.anytype.presentation.sets.state.ObjectState
@ -40,7 +40,8 @@ class RelationAddToDataViewViewModel(
private val addObjectToWorkspace: AddObjectToWorkspace,
private val appCoroutineDispatchers: AppCoroutineDispatchers,
private val spaceManager: SpaceManager,
private val analyticSpaceHelperDelegate: AnalyticSpaceHelperDelegate
private val analyticSpaceHelperDelegate: AnalyticSpaceHelperDelegate,
private val storeOfRelations: StoreOfRelations
) : RelationAddViewModelBase(
relationsProvider = relationsProvider,
appCoroutineDispatchers = appCoroutineDispatchers,
@ -53,7 +54,6 @@ class RelationAddToDataViewViewModel(
ctx: Id,
viewerId: Id,
relation: Key,
format: RelationFormat,
dv: Id,
screenType: String
) {
@ -73,10 +73,11 @@ class RelationAddToDataViewViewModel(
relation = relation
)
}
sendAnalyticsAddRelationEvent(
analytics = analytics,
analytics.sendAnalyticsRelationEvent(
eventName = EventsDictionary.relationAdd,
storeOfRelations = storeOfRelations,
relationKey = relation,
type = screenType,
format = format.getPropName(),
spaceParams = analyticSpaceHelperDelegate.provideParams(spaceManager.get())
)
},
@ -119,7 +120,8 @@ class RelationAddToDataViewViewModel(
private val getRelations: GetRelations,
private val addObjectToWorkspace: AddObjectToWorkspace,
private val spaceManager: SpaceManager,
private val analyticSpaceHelperDelegate: AnalyticSpaceHelperDelegate
private val analyticSpaceHelperDelegate: AnalyticSpaceHelperDelegate,
private val storeOfRelations: StoreOfRelations
) : ViewModelProvider.Factory {
@Suppress("UNCHECKED_CAST")
override fun <T : ViewModel> create(modelClass: Class<T>): T {
@ -134,7 +136,8 @@ class RelationAddToDataViewViewModel(
getRelations = getRelations,
addObjectToWorkspace = addObjectToWorkspace,
spaceManager = spaceManager,
analyticSpaceHelperDelegate = analyticSpaceHelperDelegate
analyticSpaceHelperDelegate = analyticSpaceHelperDelegate,
storeOfRelations = storeOfRelations
) as T
}
}

View file

@ -4,6 +4,7 @@ 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.core_models.Id
import com.anytypeio.anytype.core_models.Key
import com.anytypeio.anytype.core_models.Payload
@ -16,8 +17,7 @@ import com.anytypeio.anytype.domain.relations.GetRelations
import com.anytypeio.anytype.domain.workspace.AddObjectToWorkspace
import com.anytypeio.anytype.domain.workspace.SpaceManager
import com.anytypeio.anytype.presentation.analytics.AnalyticSpaceHelperDelegate
import com.anytypeio.anytype.presentation.extension.getPropName
import com.anytypeio.anytype.presentation.extension.sendAnalyticsAddRelationEvent
import com.anytypeio.anytype.presentation.extension.sendAnalyticsRelationEvent
import com.anytypeio.anytype.presentation.relations.providers.ObjectRelationProvider
import com.anytypeio.anytype.presentation.util.Dispatcher
import kotlinx.coroutines.flow.MutableSharedFlow
@ -48,7 +48,6 @@ class RelationAddToObjectViewModel(
fun onRelationSelected(
ctx: Id,
relation: Key,
format: RelationFormat,
screenType: String
) {
viewModelScope.launch {
@ -61,10 +60,11 @@ class RelationAddToObjectViewModel(
success = {
dispatcher.send(it).also {
commands.emit(Command.OnRelationAdd(relation = relation))
sendAnalyticsAddRelationEvent(
analytics = analytics,
analytics.sendAnalyticsRelationEvent(
eventName = EventsDictionary.relationAdd,
storeOfRelations = storeOfRelations,
relationKey = relation,
type = screenType,
format = format.getPropName(),
spaceParams = provideParams(spaceManager.get())
)
isDismissed.value = true

View file

@ -9,6 +9,7 @@ import com.anytypeio.anytype.core_models.Marketplace.MARKETPLACE_SPACE_ID
import com.anytypeio.anytype.core_models.ObjectWrapper
import com.anytypeio.anytype.core_models.RelationFormat
import com.anytypeio.anytype.core_models.Relations
import com.anytypeio.anytype.core_models.primitives.RelationKey
import com.anytypeio.anytype.domain.base.AppCoroutineDispatchers
import com.anytypeio.anytype.domain.relations.GetRelations
import com.anytypeio.anytype.domain.workspace.AddObjectToWorkspace
@ -226,8 +227,7 @@ abstract class RelationAddViewModelBase(
command.emit(
Command.DispatchSelectedRelation(
ctx = ctx,
relation = relation.key,
format = relation.format
relation = relation.key
)
)
}
@ -235,8 +235,7 @@ abstract class RelationAddViewModelBase(
sealed class Command {
data class DispatchSelectedRelation(
val ctx: Id,
val relation: Key,
val format: RelationFormat
val relation: Key
) : Command()
}

View file

@ -10,12 +10,14 @@ import com.anytypeio.anytype.core_models.primitives.SpaceId
import com.anytypeio.anytype.domain.base.fold
import com.anytypeio.anytype.domain.dataview.interactor.AddRelationToDataView
import com.anytypeio.anytype.domain.dataview.interactor.UpdateDataViewViewer
import com.anytypeio.anytype.domain.objects.StoreOfRelations
import com.anytypeio.anytype.domain.relations.AddRelationToObject
import com.anytypeio.anytype.domain.relations.CreateRelation
import com.anytypeio.anytype.domain.workspace.SpaceManager
import com.anytypeio.anytype.presentation.analytics.AnalyticSpaceHelperDelegate
import com.anytypeio.anytype.presentation.common.BaseViewModel
import com.anytypeio.anytype.presentation.extension.sendAnalyticsCreateRelationEvent
import com.anytypeio.anytype.presentation.extension.sendAnalyticsRelationEvent
import com.anytypeio.anytype.presentation.relations.model.CreateFromScratchState
import com.anytypeio.anytype.presentation.relations.model.LimitObjectTypeValueView
import com.anytypeio.anytype.presentation.relations.model.RelationView
@ -90,7 +92,8 @@ class RelationCreateFromScratchForObjectViewModel(
private val dispatcher: Dispatcher<Payload>,
private val analytics: Analytics,
private val spaceManager: SpaceManager,
private val analyticSpaceHelperDelegate: AnalyticSpaceHelperDelegate
private val analyticSpaceHelperDelegate: AnalyticSpaceHelperDelegate,
private val storeOfRelations: StoreOfRelations
) : RelationCreateFromScratchBaseViewModel(),
AnalyticSpaceHelperDelegate by analyticSpaceHelperDelegate {
@ -143,6 +146,12 @@ class RelationCreateFromScratchForObjectViewModel(
).process(
success = { payload ->
dispatcher.send(payload).also { isDismissed.value = true }
analytics.sendAnalyticsRelationEvent(
eventName = EventsDictionary.relationAdd,
storeOfRelations = storeOfRelations,
relationKey = relation,
spaceParams = provideParams(spaceManager.get())
)
},
failure = {
Timber.e(it, ACTION_FAILED_ERROR).also { _toasts.emit(ACTION_FAILED_ERROR) }
@ -158,7 +167,8 @@ class RelationCreateFromScratchForObjectViewModel(
private val dispatcher: Dispatcher<Payload>,
private val analytics: Analytics,
private val spaceManager: SpaceManager,
private val analyticSpaceHelperDelegate: AnalyticSpaceHelperDelegate
private val analyticSpaceHelperDelegate: AnalyticSpaceHelperDelegate,
private val storeOfRelations: StoreOfRelations
) : ViewModelProvider.Factory {
@Suppress("UNCHECKED_CAST")
override fun <T : ViewModel> create(modelClass: Class<T>): T {
@ -169,7 +179,8 @@ class RelationCreateFromScratchForObjectViewModel(
createRelation = createRelation,
addRelationToObject = addRelationToObject,
spaceManager = spaceManager,
analyticSpaceHelperDelegate = analyticSpaceHelperDelegate
analyticSpaceHelperDelegate = analyticSpaceHelperDelegate,
storeOfRelations = storeOfRelations
) as T
}
}
@ -182,7 +193,8 @@ class RelationCreateFromScratchForObjectBlockViewModel(
private val createFromScratchState: StateHolder<CreateFromScratchState>,
private val createRelation: CreateRelation,
private val spaceManager: SpaceManager,
private val analyticSpaceHelperDelegate: AnalyticSpaceHelperDelegate
private val analyticSpaceHelperDelegate: AnalyticSpaceHelperDelegate,
private val storeOfRelations: StoreOfRelations
) : RelationCreateFromScratchBaseViewModel(),
AnalyticSpaceHelperDelegate by analyticSpaceHelperDelegate {
@ -240,6 +252,12 @@ class RelationCreateFromScratchForObjectBlockViewModel(
).process(
success = { payload ->
dispatcher.send(payload).also { commands.emit(Command.OnSuccess(relationKey)) }
analytics.sendAnalyticsRelationEvent(
eventName = EventsDictionary.relationAdd,
storeOfRelations = storeOfRelations,
relationKey = relationKey,
spaceParams = provideParams(spaceManager.get())
)
},
failure = {
Timber.e(it, ACTION_FAILED_ERROR).also { _toasts.emit(ACTION_FAILED_ERROR) }
@ -255,7 +273,8 @@ class RelationCreateFromScratchForObjectBlockViewModel(
private val createFromScratchState: StateHolder<CreateFromScratchState>,
private val createRelation: CreateRelation,
private val spaceManager: SpaceManager,
private val analyticSpaceHelperDelegate: AnalyticSpaceHelperDelegate
private val analyticSpaceHelperDelegate: AnalyticSpaceHelperDelegate,
private val storeOfRelations: StoreOfRelations
) : ViewModelProvider.Factory {
@Suppress("UNCHECKED_CAST")
override fun <T : ViewModel> create(modelClass: Class<T>): T {
@ -266,7 +285,8 @@ class RelationCreateFromScratchForObjectBlockViewModel(
createFromScratchState = createFromScratchState,
createRelation = createRelation,
spaceManager = spaceManager,
analyticSpaceHelperDelegate = analyticSpaceHelperDelegate
analyticSpaceHelperDelegate = analyticSpaceHelperDelegate,
storeOfRelations = storeOfRelations
) as T
}
}
@ -285,7 +305,8 @@ class RelationCreateFromScratchForDataViewViewModel(
private val createFromScratchState: StateHolder<CreateFromScratchState>,
private val createRelation: CreateRelation,
private val spaceManager: SpaceManager,
private val analyticSpaceHelperDelegate: AnalyticSpaceHelperDelegate
private val analyticSpaceHelperDelegate: AnalyticSpaceHelperDelegate,
private val storeOfRelations: StoreOfRelations
) : RelationCreateFromScratchBaseViewModel(),
AnalyticSpaceHelperDelegate by analyticSpaceHelperDelegate {
@ -347,6 +368,12 @@ class RelationCreateFromScratchForDataViewViewModel(
relationKey = relationKey
)
}
analytics.sendAnalyticsRelationEvent(
eventName = EventsDictionary.relationAdd,
storeOfRelations = storeOfRelations,
relationKey = relationKey,
spaceParams = provideParams(spaceManager.get())
)
},
failure = {
Timber.d(it, "Error while adding relation with key: $relationKey to data view: $dv")
@ -383,7 +410,8 @@ class RelationCreateFromScratchForDataViewViewModel(
private val dispatcher: Dispatcher<Payload>,
private val analytics: Analytics,
private val spaceManager: SpaceManager,
private val analyticSpaceHelperDelegate: AnalyticSpaceHelperDelegate
private val analyticSpaceHelperDelegate: AnalyticSpaceHelperDelegate,
private val storeOfRelations: StoreOfRelations
) : ViewModelProvider.Factory {
@Suppress("UNCHECKED_CAST")
override fun <T : ViewModel> create(modelClass: Class<T>): T {
@ -396,7 +424,8 @@ class RelationCreateFromScratchForDataViewViewModel(
createFromScratchState = createFromScratchState,
createRelation = createRelation,
addRelationToDataView = addRelationToDataView,
analyticSpaceHelperDelegate = analyticSpaceHelperDelegate
analyticSpaceHelperDelegate = analyticSpaceHelperDelegate,
storeOfRelations = storeOfRelations
) as T
}
}

View file

@ -2,6 +2,7 @@ package com.anytypeio.anytype.presentation.relations
import androidx.lifecycle.viewModelScope
import com.anytypeio.anytype.analytics.base.Analytics
import com.anytypeio.anytype.analytics.base.EventsDictionary
import com.anytypeio.anytype.analytics.base.EventsDictionary.objectRelationFeature
import com.anytypeio.anytype.analytics.base.EventsDictionary.objectRelationUnfeature
import com.anytypeio.anytype.analytics.base.EventsDictionary.relationsScreenShow
@ -22,10 +23,11 @@ import com.anytypeio.anytype.domain.relations.AddRelationToObject
import com.anytypeio.anytype.domain.relations.AddToFeaturedRelations
import com.anytypeio.anytype.domain.relations.DeleteRelationFromObject
import com.anytypeio.anytype.domain.relations.RemoveFromFeaturedRelations
import com.anytypeio.anytype.domain.workspace.SpaceManager
import com.anytypeio.anytype.presentation.BuildConfig
import com.anytypeio.anytype.presentation.analytics.AnalyticSpaceHelperDelegate
import com.anytypeio.anytype.presentation.common.BaseViewModel
import com.anytypeio.anytype.presentation.extension.sendAnalyticsRelationDeleteEvent
import com.anytypeio.anytype.presentation.extension.sendAnalyticsRelationValueEvent
import com.anytypeio.anytype.presentation.extension.sendAnalyticsRelationEvent
import com.anytypeio.anytype.presentation.objects.LockedStateProvider
import com.anytypeio.anytype.presentation.objects.getProperType
import com.anytypeio.anytype.presentation.relations.model.RelationOperationError
@ -50,8 +52,10 @@ class RelationListViewModel(
private val deleteRelationFromObject: DeleteRelationFromObject,
private val analytics: Analytics,
private val storeOfRelations: StoreOfRelations,
private val addRelationToObject: AddRelationToObject
) : BaseViewModel() {
private val addRelationToObject: AddRelationToObject,
private val analyticSpaceHelperDelegate: AnalyticSpaceHelperDelegate,
private val spaceManager: SpaceManager
) : BaseViewModel(), AnalyticSpaceHelperDelegate by analyticSpaceHelperDelegate {
val isEditMode = MutableStateFlow(false)
@ -249,6 +253,12 @@ class RelationListViewModel(
failure = { Timber.e(it, "Error while adding relation to object") },
success = {
dispatcher.send(it)
analytics.sendAnalyticsRelationEvent(
eventName = EventsDictionary.relationAdd,
storeOfRelations = storeOfRelations,
relationKey = view.key,
spaceParams = provideParams(spaceManager.get())
)
success.invoke()
}
)
@ -271,9 +281,11 @@ class RelationListViewModel(
failure = { Timber.e(it, "Error while removing from featured relations") },
success = {
dispatcher.send(it)
sendEvent(
analytics = analytics,
eventName = objectRelationUnfeature
analytics.sendAnalyticsRelationEvent(
eventName = objectRelationUnfeature,
storeOfRelations = storeOfRelations,
relationKey = relationKey,
spaceParams = provideParams(spaceManager.get())
)
}
)
@ -289,9 +301,11 @@ class RelationListViewModel(
failure = { Timber.e(it, "Error while adding to featured relations") },
success = {
dispatcher.send(it)
sendEvent(
analytics = analytics,
eventName = objectRelationFeature
analytics.sendAnalyticsRelationEvent(
eventName = objectRelationFeature,
storeOfRelations = storeOfRelations,
relationKey = relationKey,
spaceParams = provideParams(spaceManager.get())
)
}
)
@ -311,7 +325,12 @@ class RelationListViewModel(
failure = { Timber.e(it, "Error while deleting relation") },
success = {
dispatcher.send(it)
sendAnalyticsRelationDeleteEvent(analytics)
analytics.sendAnalyticsRelationEvent(
eventName = EventsDictionary.relationDelete,
storeOfRelations = storeOfRelations,
relationKey = view.key,
spaceParams = provideParams(spaceManager.get())
)
}
)
}
@ -446,7 +465,12 @@ class RelationListViewModel(
).process(
success = {
dispatcher.send(it)
sendAnalyticsRelationValueEvent(analytics)
analytics.sendAnalyticsRelationEvent(
eventName = EventsDictionary.relationChangeValue,
storeOfRelations = storeOfRelations,
relationKey = view.key,
spaceParams = provideParams(spaceManager.get())
)
},
failure = { Timber.e(it, "Error while updating checkbox relation") }
)
@ -470,7 +494,8 @@ class RelationListViewModel(
fun onRelationTextValueChanged(
ctx: Id,
value: Any?,
relationKey: Key
relationKey: Key,
isValueEmpty: Boolean
) {
viewModelScope.launch {
updateDetail(
@ -482,7 +507,13 @@ class RelationListViewModel(
).process(
success = { payload ->
if (payload.events.isNotEmpty()) dispatcher.send(payload)
sendAnalyticsRelationValueEvent(analytics)
analytics.sendAnalyticsRelationEvent(
eventName = if (isValueEmpty) EventsDictionary.relationDeleteValue
else EventsDictionary.relationChangeValue,
storeOfRelations = storeOfRelations,
relationKey = relationKey,
spaceParams = provideParams(spaceManager.get())
)
},
failure = { Timber.e(it, "Error while updating relation values") }
)

View file

@ -2,6 +2,7 @@ package com.anytypeio.anytype.presentation.relations.option
import androidx.lifecycle.viewModelScope
import com.anytypeio.anytype.analytics.base.Analytics
import com.anytypeio.anytype.analytics.base.EventsDictionary
import com.anytypeio.anytype.core_models.Id
import com.anytypeio.anytype.core_models.Key
import com.anytypeio.anytype.core_models.ObjectWrapper
@ -17,8 +18,9 @@ import com.anytypeio.anytype.domain.`object`.SetObjectDetails
import com.anytypeio.anytype.domain.objects.StoreOfRelations
import com.anytypeio.anytype.domain.relations.CreateRelationOption
import com.anytypeio.anytype.domain.workspace.SpaceManager
import com.anytypeio.anytype.presentation.analytics.AnalyticSpaceHelperDelegate
import com.anytypeio.anytype.presentation.common.BaseViewModel
import com.anytypeio.anytype.presentation.extension.sendAnalyticsRelationValueEvent
import com.anytypeio.anytype.presentation.extension.sendAnalyticsRelationEvent
import com.anytypeio.anytype.presentation.relations.providers.ObjectValueProvider
import com.anytypeio.anytype.presentation.util.Dispatcher
import kotlinx.coroutines.flow.MutableSharedFlow
@ -34,8 +36,9 @@ class CreateOrEditOptionViewModel(
private val dispatcher: Dispatcher<Payload>,
private val spaceManager: SpaceManager,
private val analytics: Analytics,
private val storeOfRelations: StoreOfRelations
) : BaseViewModel() {
private val storeOfRelations: StoreOfRelations,
private val analyticSpaceHelperDelegate: AnalyticSpaceHelperDelegate
) : BaseViewModel(), AnalyticSpaceHelperDelegate by analyticSpaceHelperDelegate {
val command = MutableSharedFlow<Command>(replay = 0)
val viewState: MutableStateFlow<CreateOrEditOptionScreenViewState> =
@ -120,7 +123,6 @@ class CreateOrEditOptionViewModel(
onFailure = { Timber.e(it, "Error while updating option") },
onSuccess = {
dispatcher.send(it)
viewModelScope.sendAnalyticsRelationValueEvent(analytics)
command.emit(Command.Dismiss)
}
)
@ -145,7 +147,13 @@ class CreateOrEditOptionViewModel(
onFailure = { Timber.e(it, "Error while adding tag to object") },
onSuccess = {
dispatcher.send(it)
viewModelScope.sendAnalyticsRelationValueEvent(analytics)
analytics.sendAnalyticsRelationEvent(
eventName = if (result.isEmpty()) EventsDictionary.relationDeleteValue
else EventsDictionary.relationChangeValue,
storeOfRelations = storeOfRelations,
relationKey = relationKey,
spaceParams = provideParams(spaceManager.get())
)
command.emit(Command.Dismiss)
}
)

View file

@ -8,6 +8,7 @@ import com.anytypeio.anytype.domain.`object`.SetObjectDetails
import com.anytypeio.anytype.domain.objects.StoreOfRelations
import com.anytypeio.anytype.domain.relations.CreateRelationOption
import com.anytypeio.anytype.domain.workspace.SpaceManager
import com.anytypeio.anytype.presentation.analytics.AnalyticSpaceHelperDelegate
import com.anytypeio.anytype.presentation.relations.providers.ObjectValueProvider
import com.anytypeio.anytype.presentation.util.Dispatcher
import javax.inject.Inject
@ -20,7 +21,8 @@ class CreateOrEditOptionViewModelFactory @Inject constructor(
private val dispatcher: Dispatcher<Payload>,
private val spaceManager: SpaceManager,
private val analytics: Analytics,
private val storeOfRelations: StoreOfRelations
private val storeOfRelations: StoreOfRelations,
private val analyticSpaceHelperDelegate: AnalyticSpaceHelperDelegate
) : ViewModelProvider.Factory {
@Suppress("UNCHECKED_CAST")
override fun <T : ViewModel> create(
@ -33,6 +35,7 @@ class CreateOrEditOptionViewModelFactory @Inject constructor(
dispatcher = dispatcher,
spaceManager = spaceManager,
analytics = analytics,
storeOfRelations = storeOfRelations
storeOfRelations = storeOfRelations,
analyticSpaceHelperDelegate = analyticSpaceHelperDelegate
) as T
}

View file

@ -2,6 +2,7 @@ package com.anytypeio.anytype.presentation.relations.value.`object`
import androidx.lifecycle.viewModelScope
import com.anytypeio.anytype.analytics.base.Analytics
import com.anytypeio.anytype.analytics.base.EventsDictionary
import com.anytypeio.anytype.core_models.Id
import com.anytypeio.anytype.core_models.Key
import com.anytypeio.anytype.core_models.ObjectTypeIds
@ -18,11 +19,13 @@ import com.anytypeio.anytype.domain.`object`.DuplicateObject
import com.anytypeio.anytype.domain.`object`.UpdateDetail
import com.anytypeio.anytype.domain.objects.SetObjectListIsArchived
import com.anytypeio.anytype.domain.objects.StoreOfObjectTypes
import com.anytypeio.anytype.domain.objects.StoreOfRelations
import com.anytypeio.anytype.domain.search.SearchObjects
import com.anytypeio.anytype.domain.workspace.SpaceManager
import com.anytypeio.anytype.domain.workspace.getSpaceWithTechSpace
import com.anytypeio.anytype.presentation.analytics.AnalyticSpaceHelperDelegate
import com.anytypeio.anytype.presentation.common.BaseViewModel
import com.anytypeio.anytype.presentation.extension.sendAnalyticsRelationValueEvent
import com.anytypeio.anytype.presentation.extension.sendAnalyticsRelationEvent
import com.anytypeio.anytype.presentation.navigation.DefaultObjectView
import com.anytypeio.anytype.presentation.objects.SupportedLayouts
import com.anytypeio.anytype.presentation.objects.toView
@ -54,8 +57,10 @@ class ObjectValueViewModel(
private val urlBuilder: UrlBuilder,
private val storeOfObjectTypes: StoreOfObjectTypes,
private val objectListIsArchived: SetObjectListIsArchived,
private val duplicateObject: DuplicateObject
) : BaseViewModel() {
private val duplicateObject: DuplicateObject,
private val analyticSpaceHelperDelegate: AnalyticSpaceHelperDelegate,
private val storeOfRelations: StoreOfRelations
) : BaseViewModel(), AnalyticSpaceHelperDelegate by analyticSpaceHelperDelegate {
val viewState = MutableStateFlow<ObjectValueViewState>(ObjectValueViewState.Loading())
private val query = MutableSharedFlow<String>(replay = 1)
@ -333,7 +338,12 @@ class ObjectValueViewModel(
failure = { Timber.e(it, "Error while clearing objects") },
success = {
dispatcher.send(it)
sendAnalyticsRelationValueEvent(analytics)
analytics.sendAnalyticsRelationEvent(
eventName = EventsDictionary.relationDeleteValue,
storeOfRelations = storeOfRelations,
relationKey = viewModelParams.relationKey,
spaceParams = provideParams(spaceManager.get())
)
})
}
}
@ -390,7 +400,13 @@ class ObjectValueViewModel(
failure = { Timber.e(it, "Error while adding object") },
success = {
dispatcher.send(it)
sendAnalyticsRelationValueEvent(analytics)
analytics.sendAnalyticsRelationEvent(
eventName = if (result.isEmpty()) EventsDictionary.relationDeleteValue
else EventsDictionary.relationChangeValue,
storeOfRelations = storeOfRelations,
relationKey = viewModelParams.relationKey,
spaceParams = provideParams(spaceManager.get())
)
}
)
}
@ -409,7 +425,13 @@ class ObjectValueViewModel(
failure = { Timber.e(it, "Error while removing object ${item.view.id}") },
success = {
dispatcher.send(it)
viewModelScope.sendAnalyticsRelationValueEvent(analytics)
analytics.sendAnalyticsRelationEvent(
eventName = if (value.isEmpty()) EventsDictionary.relationDeleteValue
else EventsDictionary.relationChangeValue,
storeOfRelations = storeOfRelations,
relationKey = viewModelParams.relationKey,
spaceParams = provideParams(spaceManager.get())
)
action()
}
)

View file

@ -9,8 +9,10 @@ import com.anytypeio.anytype.domain.`object`.DuplicateObject
import com.anytypeio.anytype.domain.`object`.UpdateDetail
import com.anytypeio.anytype.domain.objects.SetObjectListIsArchived
import com.anytypeio.anytype.domain.objects.StoreOfObjectTypes
import com.anytypeio.anytype.domain.objects.StoreOfRelations
import com.anytypeio.anytype.domain.search.SearchObjects
import com.anytypeio.anytype.domain.workspace.SpaceManager
import com.anytypeio.anytype.presentation.analytics.AnalyticSpaceHelperDelegate
import com.anytypeio.anytype.presentation.relations.providers.ObjectRelationProvider
import com.anytypeio.anytype.presentation.relations.providers.ObjectValueProvider
import com.anytypeio.anytype.presentation.util.Dispatcher
@ -29,6 +31,8 @@ class ObjectValueViewModelFactory @Inject constructor(
private val storeOfObjectTypes: StoreOfObjectTypes,
private val objectListIsArchived: SetObjectListIsArchived,
private val duplicateObject: DuplicateObject,
private val analyticSpaceHelperDelegate: AnalyticSpaceHelperDelegate,
private val storeOfRelations: StoreOfRelations
) : ViewModelProvider.Factory {
@Suppress("UNCHECKED_CAST")
override fun <T : ViewModel> create(
@ -45,6 +49,8 @@ class ObjectValueViewModelFactory @Inject constructor(
urlBuilder = urlBuilder,
storeOfObjectTypes = storeOfObjectTypes,
objectListIsArchived = objectListIsArchived,
duplicateObject = duplicateObject
duplicateObject = duplicateObject,
analyticSpaceHelperDelegate = analyticSpaceHelperDelegate,
storeOfRelations = storeOfRelations
) as T
}

View file

@ -2,6 +2,7 @@ package com.anytypeio.anytype.presentation.relations.value.tagstatus
import androidx.lifecycle.viewModelScope
import com.anytypeio.anytype.analytics.base.Analytics
import com.anytypeio.anytype.analytics.base.EventsDictionary
import com.anytypeio.anytype.core_models.Id
import com.anytypeio.anytype.core_models.Key
import com.anytypeio.anytype.core_models.ObjectWrapper
@ -14,10 +15,12 @@ import com.anytypeio.anytype.domain.base.fold
import com.anytypeio.anytype.domain.library.StoreSearchParams
import com.anytypeio.anytype.domain.library.StorelessSubscriptionContainer
import com.anytypeio.anytype.domain.`object`.UpdateDetail
import com.anytypeio.anytype.domain.objects.StoreOfRelations
import com.anytypeio.anytype.domain.relations.DeleteRelationOptions
import com.anytypeio.anytype.domain.workspace.SpaceManager
import com.anytypeio.anytype.presentation.analytics.AnalyticSpaceHelperDelegate
import com.anytypeio.anytype.presentation.common.BaseViewModel
import com.anytypeio.anytype.presentation.extension.sendAnalyticsRelationValueEvent
import com.anytypeio.anytype.presentation.extension.sendAnalyticsRelationEvent
import com.anytypeio.anytype.presentation.relations.providers.ObjectRelationProvider
import com.anytypeio.anytype.presentation.relations.providers.ObjectValueProvider
import com.anytypeio.anytype.presentation.search.ObjectSearchConstants
@ -41,8 +44,10 @@ class TagOrStatusValueViewModel(
private val analytics: Analytics,
private val spaceManager: SpaceManager,
private val subscription: StorelessSubscriptionContainer,
private val deleteRelationOptions: DeleteRelationOptions
) : BaseViewModel() {
private val deleteRelationOptions: DeleteRelationOptions,
private val analyticSpaceHelperDelegate: AnalyticSpaceHelperDelegate,
private val storeOfRelations: StoreOfRelations
) : BaseViewModel(), AnalyticSpaceHelperDelegate by analyticSpaceHelperDelegate {
val viewState = MutableStateFlow<TagStatusViewState>(TagStatusViewState.Loading)
private val query = MutableSharedFlow<String>(replay = 0)
@ -317,7 +322,13 @@ class TagOrStatusValueViewModel(
failure = { Timber.e(it, "Error while adding tag") },
success = {
dispatcher.send(it)
sendAnalyticsRelationValueEvent(analytics)
analytics.sendAnalyticsRelationEvent(
eventName = if (result.isEmpty()) EventsDictionary.relationDeleteValue
else EventsDictionary.relationChangeValue,
storeOfRelations = storeOfRelations,
relationKey = viewModelParams.relationKey,
spaceParams = provideParams(spaceManager.get())
)
}
)
}
@ -337,7 +348,13 @@ class TagOrStatusValueViewModel(
failure = { Timber.e(it, "Error while adding tag") },
success = {
dispatcher.send(it)
sendAnalyticsRelationValueEvent(analytics)
analytics.sendAnalyticsRelationEvent(
eventName = if (remaining.isEmpty()) EventsDictionary.relationDeleteValue
else EventsDictionary.relationChangeValue,
storeOfRelations = storeOfRelations,
relationKey = viewModelParams.relationKey,
spaceParams = provideParams(spaceManager.get())
)
})
}
}
@ -354,7 +371,12 @@ class TagOrStatusValueViewModel(
failure = { Timber.e(it, "Error while adding tag") },
success = {
dispatcher.send(it)
sendAnalyticsRelationValueEvent(analytics)
analytics.sendAnalyticsRelationEvent(
eventName = EventsDictionary.relationChangeValue,
storeOfRelations = storeOfRelations,
relationKey = viewModelParams.relationKey,
spaceParams = provideParams(spaceManager.get())
)
emitCommand(command = Command.Dismiss, delay = DELAY_UNTIL_CLOSE)
}
)
@ -373,7 +395,12 @@ class TagOrStatusValueViewModel(
failure = { Timber.e(it, "Error while clearing tags or select") },
success = {
dispatcher.send(it)
sendAnalyticsRelationValueEvent(analytics)
analytics.sendAnalyticsRelationEvent(
eventName = EventsDictionary.relationDeleteValue,
storeOfRelations = storeOfRelations,
relationKey = viewModelParams.relationKey,
spaceParams = provideParams(spaceManager.get())
)
}
)
}

View file

@ -6,8 +6,10 @@ import com.anytypeio.anytype.analytics.base.Analytics
import com.anytypeio.anytype.core_models.Payload
import com.anytypeio.anytype.domain.library.StorelessSubscriptionContainer
import com.anytypeio.anytype.domain.`object`.UpdateDetail
import com.anytypeio.anytype.domain.objects.StoreOfRelations
import com.anytypeio.anytype.domain.relations.DeleteRelationOptions
import com.anytypeio.anytype.domain.workspace.SpaceManager
import com.anytypeio.anytype.presentation.analytics.AnalyticSpaceHelperDelegate
import com.anytypeio.anytype.presentation.relations.providers.ObjectRelationProvider
import com.anytypeio.anytype.presentation.relations.providers.ObjectValueProvider
import com.anytypeio.anytype.presentation.util.Dispatcher
@ -22,7 +24,9 @@ class TagOrStatusValueViewModelFactory @Inject constructor(
private val analytics: Analytics,
private val spaceManager: SpaceManager,
private val subscription: StorelessSubscriptionContainer,
private val deleteRelationOptions: DeleteRelationOptions
private val deleteRelationOptions: DeleteRelationOptions,
private val analyticSpaceHelperDelegate: AnalyticSpaceHelperDelegate,
private val storeOfRelations: StoreOfRelations
) : ViewModelProvider.Factory {
@Suppress("UNCHECKED_CAST")
override fun <T : ViewModel> create(
@ -36,6 +40,8 @@ class TagOrStatusValueViewModelFactory @Inject constructor(
analytics = analytics,
spaceManager = spaceManager,
subscription = subscription,
deleteRelationOptions = deleteRelationOptions
deleteRelationOptions = deleteRelationOptions,
analyticSpaceHelperDelegate = analyticSpaceHelperDelegate,
storeOfRelations = storeOfRelations
) as T
}

View file

@ -70,7 +70,7 @@ import com.anytypeio.anytype.presentation.editor.model.TextUpdate
import com.anytypeio.anytype.presentation.extension.ObjectStateAnalyticsEvent
import com.anytypeio.anytype.presentation.extension.logEvent
import com.anytypeio.anytype.presentation.extension.sendAnalyticsObjectCreateEvent
import com.anytypeio.anytype.presentation.extension.sendAnalyticsRelationValueEvent
import com.anytypeio.anytype.presentation.extension.sendAnalyticsRelationEvent
import com.anytypeio.anytype.presentation.home.HomeScreenViewModel.Companion.HOME_SCREEN_PROFILE_OBJECT_SUBSCRIPTION
import com.anytypeio.anytype.presentation.mapper.toTemplateObjectTypeViewItems
import com.anytypeio.anytype.presentation.navigation.AppNavigation
@ -1736,7 +1736,12 @@ class ObjectSetViewModel(
).process(
success = {
dispatcher.send(it)
sendAnalyticsRelationValueEvent(analytics)
analytics.sendAnalyticsRelationEvent(
eventName = EventsDictionary.relationChangeValue,
storeOfRelations = storeOfRelations,
relationKey = view.key,
spaceParams = provideParams(spaceManager.get())
)
},
failure = { Timber.e(it, "Error while updating checkbox relation") }
)