mirror of
https://github.com/anyproto/anytype-kotlin.git
synced 2025-06-08 05:47:05 +09:00
DROID-1124 Analytics | BackLink or add to Collection event (#3124)
* DROID-1124 add context and originalId to analytics * DROID-1124 editor, set analytics params * DROID-1124 addToCollection and backLink events
This commit is contained in:
parent
02f1c960c0
commit
7777c2e898
5 changed files with 68 additions and 7 deletions
|
@ -24,6 +24,11 @@ interface Analytics {
|
|||
fun observeEvents(): Flow<EventAnalytics>
|
||||
|
||||
fun observeUserProperties(): Flow<UserProperty>
|
||||
|
||||
fun setContext(ctx: String?)
|
||||
fun getContext(): String?
|
||||
fun setOriginalId(originalId: String?)
|
||||
fun getOriginalId(): String?
|
||||
}
|
||||
|
||||
fun CoroutineScope.sendEvent(
|
||||
|
|
|
@ -12,4 +12,19 @@ class DefaultAnalytics : Analytics {
|
|||
override suspend fun updateUserProperty(property: UserProperty) = userProps.emit(property)
|
||||
override fun observeEvents(): Flow<EventAnalytics> = events
|
||||
override fun observeUserProperties(): Flow<UserProperty> = userProps
|
||||
|
||||
private var analyticsContext: String? = null
|
||||
private var analyticsOriginalId: String? = null
|
||||
|
||||
override fun setContext(ctx: String?) {
|
||||
analyticsContext = ctx
|
||||
}
|
||||
|
||||
override fun getContext(): String? = analyticsContext
|
||||
|
||||
override fun setOriginalId(originalId: String?) {
|
||||
analyticsOriginalId = originalId
|
||||
}
|
||||
|
||||
override fun getOriginalId(): String? = analyticsOriginalId
|
||||
}
|
|
@ -980,6 +980,8 @@ class EditorViewModel(
|
|||
isSyncStatusVisible.value = false
|
||||
}
|
||||
val block = event.blocks.firstOrNull { it.id == context }
|
||||
analytics.setContext(block?.fields?.analyticsContext)
|
||||
analytics.setOriginalId(block?.fields?.analyticsOriginalId)
|
||||
analyticsContext = block?.fields?.analyticsContext
|
||||
if (analyticsContext != null) {
|
||||
analyticsOriginalId = block?.fields?.analyticsOriginalId
|
||||
|
|
|
@ -352,12 +352,43 @@ fun CoroutineScope.sendAnalyticsRemoveFromFavoritesEvent(
|
|||
)
|
||||
}
|
||||
|
||||
fun CoroutineScope.sendAnalyticsObjectLinkToEvent(
|
||||
analytics: Analytics
|
||||
fun CoroutineScope.sendAnalyticsBackLinkAddEvent(
|
||||
analytics: Analytics,
|
||||
startTime: Long
|
||||
) {
|
||||
val props = Props(
|
||||
buildMap {
|
||||
analytics.getContext()?.let { put("context", it) }
|
||||
analytics.getOriginalId()?.let { put("originalId", it) }
|
||||
put("linkType", "Object")
|
||||
}
|
||||
)
|
||||
sendEvent(
|
||||
analytics = analytics,
|
||||
eventName = EventsDictionary.objectLinkTo
|
||||
eventName = EventsDictionary.objectLinkTo,
|
||||
props = props,
|
||||
startTime = startTime,
|
||||
middleTime = System.currentTimeMillis()
|
||||
)
|
||||
}
|
||||
|
||||
fun CoroutineScope.sendAnalyticsAddToCollectionEvent(
|
||||
analytics: Analytics,
|
||||
startTime: Long
|
||||
) {
|
||||
val props = Props(
|
||||
buildMap {
|
||||
analytics.getContext()?.let { put("context", it) }
|
||||
analytics.getOriginalId()?.let { put("originalId", it) }
|
||||
put("linkType", "Collection")
|
||||
}
|
||||
)
|
||||
sendEvent(
|
||||
analytics = analytics,
|
||||
eventName = EventsDictionary.objectLinkTo,
|
||||
props = props,
|
||||
startTime = startTime,
|
||||
middleTime = System.currentTimeMillis()
|
||||
)
|
||||
}
|
||||
|
||||
|
|
|
@ -1,7 +1,6 @@
|
|||
package com.anytypeio.anytype.presentation.objects.menu
|
||||
|
||||
import android.net.Uri
|
||||
import android.widget.Toast
|
||||
import androidx.lifecycle.viewModelScope
|
||||
import com.anytypeio.anytype.analytics.base.Analytics
|
||||
import com.anytypeio.anytype.core_models.Id
|
||||
|
@ -18,9 +17,10 @@ import com.anytypeio.anytype.domain.page.AddBackLinkToObject
|
|||
import com.anytypeio.anytype.presentation.common.Action
|
||||
import com.anytypeio.anytype.presentation.common.BaseViewModel
|
||||
import com.anytypeio.anytype.presentation.common.Delegator
|
||||
import com.anytypeio.anytype.presentation.extension.sendAnalyticsAddToCollectionEvent
|
||||
import com.anytypeio.anytype.presentation.extension.sendAnalyticsAddToFavoritesEvent
|
||||
import com.anytypeio.anytype.presentation.extension.sendAnalyticsBackLinkAddEvent
|
||||
import com.anytypeio.anytype.presentation.extension.sendAnalyticsMoveToBinEvent
|
||||
import com.anytypeio.anytype.presentation.extension.sendAnalyticsObjectLinkToEvent
|
||||
import com.anytypeio.anytype.presentation.extension.sendAnalyticsRemoveFromFavoritesEvent
|
||||
import com.anytypeio.anytype.presentation.objects.ObjectAction
|
||||
import com.anytypeio.anytype.presentation.objects.ObjectIcon
|
||||
|
@ -221,10 +221,14 @@ abstract class ObjectMenuViewModelBase(
|
|||
targets = listOf(ctx)
|
||||
)
|
||||
viewModelScope.launch {
|
||||
val startTime = System.currentTimeMillis()
|
||||
addObjectToCollection.execute(params).fold(
|
||||
onSuccess = { payload ->
|
||||
dispatcher.send(payload)
|
||||
sendAnalyticsObjectLinkToEvent(analytics)
|
||||
sendAnalyticsAddToCollectionEvent(
|
||||
analytics = analytics,
|
||||
startTime = startTime
|
||||
)
|
||||
commands.emit(
|
||||
Command.OpenSnackbar(
|
||||
id = collection,
|
||||
|
@ -243,11 +247,15 @@ abstract class ObjectMenuViewModelBase(
|
|||
fun onLinkedMyselfTo(myself: Id, addTo: Id, fromName: String?) {
|
||||
Timber.d("onLinkedMyselfTo, myself:[$myself], addTo:[$addTo], fromName:[$fromName]")
|
||||
jobs += viewModelScope.launch {
|
||||
val startTime = System.currentTimeMillis()
|
||||
addBackLinkToObject.execute(
|
||||
AddBackLinkToObject.Params(objectToLink = myself, objectToPlaceLink = addTo)
|
||||
).fold(
|
||||
onSuccess = { obj ->
|
||||
sendAnalyticsObjectLinkToEvent(analytics)
|
||||
sendAnalyticsBackLinkAddEvent(
|
||||
analytics = analytics,
|
||||
startTime = startTime
|
||||
)
|
||||
commands.emit(
|
||||
Command.OpenSnackbar(
|
||||
id = addTo,
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue