mirror of
https://github.com/anyproto/anytype-kotlin.git
synced 2025-06-08 05:47:05 +09:00
DROID-1602 Analytics | Self hosting (#689)
This commit is contained in:
parent
3438361022
commit
40216d901c
4 changed files with 79 additions and 9 deletions
|
@ -184,6 +184,10 @@ object EventsDictionary {
|
|||
const val MENU_HELP_PRIVACY = "MenuHelpPrivacy"
|
||||
const val MENU_HELP_CONTACT_US = "MenuHelpContact"
|
||||
|
||||
// Network mode
|
||||
const val selectNetwork = "SelectNetwork"
|
||||
const val uploadNetworkConfiguration = "UploadNetworkConfiguration"
|
||||
|
||||
enum class ScreenOnboardingStep(val value: String) {
|
||||
VOID("Void"),
|
||||
PHRASE("Phrase"),
|
||||
|
@ -229,6 +233,9 @@ object EventsDictionary {
|
|||
const val dataView = "dataview"
|
||||
const val block = "block"
|
||||
const val bookmark = "bookmark"
|
||||
const val anytype = "Anytype"
|
||||
const val localOnly = "LocalOnly"
|
||||
const val selfHost = "SelfHost"
|
||||
}
|
||||
|
||||
object BlockAction {
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
package com.anytypeio.anytype.di.feature
|
||||
|
||||
import android.content.Context
|
||||
import com.anytypeio.anytype.analytics.base.Analytics
|
||||
import com.anytypeio.anytype.core_utils.di.scope.PerScreen
|
||||
import com.anytypeio.anytype.di.common.ComponentDependencies
|
||||
import com.anytypeio.anytype.domain.auth.repo.AuthRepository
|
||||
|
@ -46,11 +47,13 @@ object AppPreferencesModule {
|
|||
fun provideViewModelFactory(
|
||||
copyFileToCacheDirectory: CopyFileToCacheDirectory,
|
||||
getNetworkMode: GetNetworkMode,
|
||||
setNetworkMode: SetNetworkMode
|
||||
setNetworkMode: SetNetworkMode,
|
||||
analytics: Analytics
|
||||
): PreferencesViewModel.Factory = PreferencesViewModel.Factory(
|
||||
copyFileToCacheDirectory = copyFileToCacheDirectory,
|
||||
getNetworkMode = getNetworkMode,
|
||||
setNetworkMode = setNetworkMode
|
||||
setNetworkMode = setNetworkMode,
|
||||
analytics = analytics
|
||||
)
|
||||
}
|
||||
|
||||
|
@ -58,4 +61,5 @@ interface AppPreferencesDependencies : ComponentDependencies {
|
|||
fun context(): Context
|
||||
fun dispatchers(): AppCoroutineDispatchers
|
||||
fun authRepository(): AuthRepository
|
||||
fun analytics(): Analytics
|
||||
}
|
|
@ -1959,4 +1959,34 @@ private fun getAnalyticsObjectType(
|
|||
val typeStruct = details[objTypeId]?.map
|
||||
val objType = typeStruct?.mapToObjectWrapperType()
|
||||
return objType?.sourceObject ?: OBJ_TYPE_CUSTOM
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
//region Self-Hosting
|
||||
fun CoroutineScope.sendAnalyticsSelectNetworkEvent(
|
||||
analytics: Analytics,
|
||||
type: String,
|
||||
route: String
|
||||
) {
|
||||
sendEvent(
|
||||
analytics = analytics,
|
||||
eventName = EventsDictionary.selectNetwork,
|
||||
props = Props(
|
||||
mapOf(
|
||||
EventsPropertiesKey.type to type,
|
||||
EventsPropertiesKey.route to route
|
||||
)
|
||||
)
|
||||
)
|
||||
}
|
||||
|
||||
fun CoroutineScope.sendAnalyticsUploadConfigFileEvent(
|
||||
analytics: Analytics
|
||||
) {
|
||||
sendEvent(
|
||||
analytics = analytics,
|
||||
eventName = EventsDictionary.uploadNetworkConfiguration
|
||||
)
|
||||
}
|
||||
|
||||
//endregion
|
|
@ -4,6 +4,8 @@ import android.net.Uri
|
|||
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.NetworkMode
|
||||
import com.anytypeio.anytype.core_models.NetworkModeConfig
|
||||
|
@ -13,6 +15,8 @@ import com.anytypeio.anytype.domain.base.fold
|
|||
import com.anytypeio.anytype.domain.networkmode.GetNetworkMode
|
||||
import com.anytypeio.anytype.domain.networkmode.SetNetworkMode
|
||||
import com.anytypeio.anytype.presentation.editor.picker.PickerListener
|
||||
import com.anytypeio.anytype.presentation.extension.sendAnalyticsSelectNetworkEvent
|
||||
import com.anytypeio.anytype.presentation.extension.sendAnalyticsUploadConfigFileEvent
|
||||
import com.anytypeio.anytype.presentation.util.CopyFileToCacheDirectory
|
||||
import com.anytypeio.anytype.presentation.util.CopyFileToCacheStatus
|
||||
import kotlinx.coroutines.flow.MutableStateFlow
|
||||
|
@ -22,7 +26,8 @@ import timber.log.Timber
|
|||
class PreferencesViewModel(
|
||||
private val copyFileToCache: CopyFileToCacheDirectory,
|
||||
private val getNetworkMode: GetNetworkMode,
|
||||
private val setNetworkMode: SetNetworkMode
|
||||
private val setNetworkMode: SetNetworkMode,
|
||||
private val analytics: Analytics
|
||||
) : ViewModel(), PickerListener {
|
||||
|
||||
val networkModeState = MutableStateFlow(NetworkModeConfig(NetworkMode.DEFAULT, "", ""))
|
||||
|
@ -45,9 +50,30 @@ class PreferencesViewModel(
|
|||
fun proceedWithNetworkMode(mode: String?) {
|
||||
viewModelScope.launch {
|
||||
val config = when (mode) {
|
||||
NETWORK_MODE_LOCAL -> NetworkModeConfig(NetworkMode.LOCAL)
|
||||
NETWORK_MODE_CUSTOM -> NetworkModeConfig(NetworkMode.CUSTOM)
|
||||
else -> NetworkModeConfig()
|
||||
NETWORK_MODE_LOCAL -> {
|
||||
sendAnalyticsSelectNetworkEvent(
|
||||
analytics = analytics,
|
||||
type = EventsDictionary.Type.localOnly,
|
||||
route = EventsDictionary.Routes.settings
|
||||
)
|
||||
NetworkModeConfig(NetworkMode.LOCAL)
|
||||
}
|
||||
NETWORK_MODE_CUSTOM -> {
|
||||
sendAnalyticsSelectNetworkEvent(
|
||||
analytics = analytics,
|
||||
type = EventsDictionary.Type.selfHost,
|
||||
route = EventsDictionary.Routes.settings
|
||||
)
|
||||
NetworkModeConfig(NetworkMode.CUSTOM)
|
||||
}
|
||||
else -> {
|
||||
sendAnalyticsSelectNetworkEvent(
|
||||
analytics = analytics,
|
||||
type = EventsDictionary.Type.anytype,
|
||||
route = EventsDictionary.Routes.settings
|
||||
)
|
||||
NetworkModeConfig()
|
||||
}
|
||||
}
|
||||
networkModeState.value = config
|
||||
setNetworkMode.async(SetNetworkMode.Params(config)).fold(
|
||||
|
@ -68,6 +94,7 @@ class PreferencesViewModel(
|
|||
setNetworkMode.async(params).fold(
|
||||
onSuccess = {
|
||||
networkModeState.value = config
|
||||
sendAnalyticsUploadConfigFileEvent(analytics)
|
||||
Timber.d("Successfully update network mode with config:$config")
|
||||
},
|
||||
onFailure = { Timber.e(it, "Failed to set network mode") }
|
||||
|
@ -106,7 +133,8 @@ class PreferencesViewModel(
|
|||
class Factory(
|
||||
private val copyFileToCacheDirectory: CopyFileToCacheDirectory,
|
||||
private val getNetworkMode: GetNetworkMode,
|
||||
private val setNetworkMode: SetNetworkMode
|
||||
private val setNetworkMode: SetNetworkMode,
|
||||
private val analytics: Analytics
|
||||
) : ViewModelProvider.Factory {
|
||||
@Suppress("UNCHECKED_CAST")
|
||||
override fun <T : ViewModel> create(
|
||||
|
@ -114,7 +142,8 @@ class PreferencesViewModel(
|
|||
): T = PreferencesViewModel(
|
||||
copyFileToCache = copyFileToCacheDirectory,
|
||||
getNetworkMode = getNetworkMode,
|
||||
setNetworkMode = setNetworkMode
|
||||
setNetworkMode = setNetworkMode,
|
||||
analytics = analytics
|
||||
) as T
|
||||
}
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue