mirror of
https://github.com/sudoxnym/habitica-android.git
synced 2026-07-13 17:51:57 +00:00
begin analytics refactoring
This commit is contained in:
parent
ef54a2ce63
commit
e330577bae
19 changed files with 179 additions and 130 deletions
|
|
@ -25,7 +25,7 @@ import com.google.firebase.remoteconfig.FirebaseRemoteConfig
|
||||||
import com.google.firebase.remoteconfig.FirebaseRemoteConfigSettings
|
import com.google.firebase.remoteconfig.FirebaseRemoteConfigSettings
|
||||||
import com.habitrpg.android.habitica.data.ApiClient
|
import com.habitrpg.android.habitica.data.ApiClient
|
||||||
import com.habitrpg.android.habitica.helpers.AdHandler
|
import com.habitrpg.android.habitica.helpers.AdHandler
|
||||||
import com.habitrpg.android.habitica.helpers.AmplitudeManager
|
import com.habitrpg.android.habitica.helpers.Analytics
|
||||||
import com.habitrpg.android.habitica.helpers.notifications.PushNotificationManager
|
import com.habitrpg.android.habitica.helpers.notifications.PushNotificationManager
|
||||||
import com.habitrpg.android.habitica.modules.AuthenticationHandler
|
import com.habitrpg.android.habitica.modules.AuthenticationHandler
|
||||||
import com.habitrpg.android.habitica.ui.activities.BaseActivity
|
import com.habitrpg.android.habitica.ui.activities.BaseActivity
|
||||||
|
|
@ -65,11 +65,11 @@ abstract class HabiticaBaseApplication : Application(), Application.ActivityLife
|
||||||
super.onCreate()
|
super.onCreate()
|
||||||
if (!BuildConfig.DEBUG) {
|
if (!BuildConfig.DEBUG) {
|
||||||
try {
|
try {
|
||||||
AmplitudeManager.initialize(this)
|
Analytics.initialize(this)
|
||||||
} catch (ignored: Resources.NotFoundException) {
|
} catch (ignored: Resources.NotFoundException) {
|
||||||
}
|
}
|
||||||
AmplitudeManager.identify(sharedPrefs)
|
Analytics.identify(sharedPrefs)
|
||||||
AmplitudeManager.setUserID(lazyApiHelper.hostConfig.userID)
|
Analytics.setUserID(lazyApiHelper.hostConfig.userID)
|
||||||
}
|
}
|
||||||
registerActivityLifecycleCallbacks(this)
|
registerActivityLifecycleCallbacks(this)
|
||||||
setupRealm()
|
setupRealm()
|
||||||
|
|
|
||||||
|
|
@ -8,7 +8,7 @@ import com.habitrpg.android.habitica.R
|
||||||
import com.habitrpg.android.habitica.api.ApiService
|
import com.habitrpg.android.habitica.api.ApiService
|
||||||
import com.habitrpg.android.habitica.api.GSonFactoryCreator
|
import com.habitrpg.android.habitica.api.GSonFactoryCreator
|
||||||
import com.habitrpg.android.habitica.data.ApiClient
|
import com.habitrpg.android.habitica.data.ApiClient
|
||||||
import com.habitrpg.android.habitica.helpers.AmplitudeManager
|
import com.habitrpg.android.habitica.helpers.Analytics
|
||||||
import com.habitrpg.android.habitica.helpers.NotificationsManager
|
import com.habitrpg.android.habitica.helpers.NotificationsManager
|
||||||
import com.habitrpg.android.habitica.models.Achievement
|
import com.habitrpg.android.habitica.models.Achievement
|
||||||
import com.habitrpg.android.habitica.models.ContentResult
|
import com.habitrpg.android.habitica.models.ContentResult
|
||||||
|
|
@ -333,7 +333,7 @@ class ApiClientImpl(
|
||||||
this.hostConfig.userID = userID ?: ""
|
this.hostConfig.userID = userID ?: ""
|
||||||
this.hostConfig.apiKey = apiToken ?: ""
|
this.hostConfig.apiKey = apiToken ?: ""
|
||||||
analyticsManager.setUserIdentifier(this.hostConfig.userID)
|
analyticsManager.setUserIdentifier(this.hostConfig.userID)
|
||||||
AmplitudeManager.setUserID(hostConfig.userID)
|
Analytics.setUserID(hostConfig.userID)
|
||||||
}
|
}
|
||||||
|
|
||||||
override suspend fun getStatus(): Status? = process { apiService.getStatus() }
|
override suspend fun getStatus(): Status? = process { apiService.getStatus() }
|
||||||
|
|
|
||||||
|
|
@ -1,75 +0,0 @@
|
||||||
package com.habitrpg.android.habitica.helpers
|
|
||||||
|
|
||||||
import android.content.Context
|
|
||||||
import android.content.SharedPreferences
|
|
||||||
import com.amplitude.android.Amplitude
|
|
||||||
import com.amplitude.android.Configuration
|
|
||||||
import com.amplitude.android.events.Identify
|
|
||||||
import com.habitrpg.android.habitica.BuildConfig
|
|
||||||
import com.habitrpg.android.habitica.R
|
|
||||||
|
|
||||||
object AmplitudeManager {
|
|
||||||
var EVENT_CATEGORY_BEHAVIOUR = "behaviour"
|
|
||||||
var EVENT_CATEGORY_NAVIGATION = "navigation"
|
|
||||||
var EVENT_HITTYPE_EVENT = "event"
|
|
||||||
var EVENT_HITTYPE_PAGEVIEW = "pageview"
|
|
||||||
var EVENT_HITTYPE_CREATE_WIDGET = "create"
|
|
||||||
var EVENT_HITTYPE_REMOVE_WIDGET = "remove"
|
|
||||||
var EVENT_HITTYPE_UPDATE_WIDGET = "update"
|
|
||||||
|
|
||||||
lateinit var amplitude: Amplitude
|
|
||||||
|
|
||||||
@JvmOverloads
|
|
||||||
fun sendEvent(
|
|
||||||
eventAction: String?,
|
|
||||||
eventCategory: String?,
|
|
||||||
hitType: String?,
|
|
||||||
additionalData: Map<String, Any>? = null
|
|
||||||
) {
|
|
||||||
if (BuildConfig.DEBUG) {
|
|
||||||
return
|
|
||||||
}
|
|
||||||
val data = mutableMapOf<String, Any?>(
|
|
||||||
"eventAction" to eventAction,
|
|
||||||
"eventCategory" to eventCategory,
|
|
||||||
"hitType" to hitType,
|
|
||||||
"status" to "displayed"
|
|
||||||
)
|
|
||||||
if (additionalData != null) {
|
|
||||||
for ((key, value) in additionalData) {
|
|
||||||
data.put(key, value)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if (eventAction != null) {
|
|
||||||
amplitude.track(eventAction, data)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
fun sendNavigationEvent(page: String) {
|
|
||||||
val additionalData = HashMap<String, Any>()
|
|
||||||
additionalData["page"] = page
|
|
||||||
sendEvent("navigated", EVENT_CATEGORY_NAVIGATION, EVENT_HITTYPE_PAGEVIEW, additionalData)
|
|
||||||
}
|
|
||||||
|
|
||||||
fun initialize(context: Context) {
|
|
||||||
amplitude = Amplitude(
|
|
||||||
Configuration(
|
|
||||||
context.getString(R.string.amplitude_app_id),
|
|
||||||
context
|
|
||||||
)
|
|
||||||
)
|
|
||||||
}
|
|
||||||
|
|
||||||
fun identify(sharedPrefs: SharedPreferences) {
|
|
||||||
val identify = Identify()
|
|
||||||
.setOnce("androidStore", BuildConfig.STORE)
|
|
||||||
sharedPrefs.getString("launch_screen", "")?.let {
|
|
||||||
identify.set("launch_screen", it)
|
|
||||||
}
|
|
||||||
amplitude.identify(identify)
|
|
||||||
}
|
|
||||||
|
|
||||||
fun setUserID(userID: String) {
|
|
||||||
amplitude.setUserId(userID)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
@ -0,0 +1,108 @@
|
||||||
|
package com.habitrpg.android.habitica.helpers
|
||||||
|
|
||||||
|
import android.content.Context
|
||||||
|
import android.content.SharedPreferences
|
||||||
|
import androidx.core.os.bundleOf
|
||||||
|
import com.amplitude.android.Amplitude
|
||||||
|
import com.amplitude.android.Configuration
|
||||||
|
import com.amplitude.android.events.Identify
|
||||||
|
import com.google.firebase.analytics.FirebaseAnalytics
|
||||||
|
import com.google.firebase.crashlytics.FirebaseCrashlytics
|
||||||
|
import com.habitrpg.android.habitica.R
|
||||||
|
import com.habitrpg.shared.habitica.BuildConfig
|
||||||
|
|
||||||
|
enum class AnalyticsTarget {
|
||||||
|
AMPLITUDE,
|
||||||
|
FIREBASE
|
||||||
|
}
|
||||||
|
|
||||||
|
enum class EventCategory(val key: String) {
|
||||||
|
BEHAVIOUR("behaviour"),
|
||||||
|
NAVIGATION("navigation")
|
||||||
|
}
|
||||||
|
|
||||||
|
enum class HitType(val key: String) {
|
||||||
|
EVENT("event"),
|
||||||
|
PAGEVIEW("pageview"),
|
||||||
|
CREATE_WIDGET("create"),
|
||||||
|
REMOVE_WIDGET("remove"),
|
||||||
|
UPDATE_WIDGET("update")
|
||||||
|
}
|
||||||
|
|
||||||
|
object Analytics {
|
||||||
|
private lateinit var firebase : FirebaseAnalytics
|
||||||
|
private lateinit var amplitude: Amplitude
|
||||||
|
|
||||||
|
@JvmOverloads
|
||||||
|
fun sendEvent(
|
||||||
|
eventAction: String?,
|
||||||
|
category: EventCategory?,
|
||||||
|
hitType: HitType?,
|
||||||
|
additionalData: Map<String, Any>? = null,
|
||||||
|
target: AnalyticsTarget? = null
|
||||||
|
) {
|
||||||
|
if (BuildConfig.DEBUG) {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
val data = mutableMapOf<String, Any?>(
|
||||||
|
"eventAction" to eventAction,
|
||||||
|
"eventCategory" to category?.key,
|
||||||
|
"hitType" to hitType?.key,
|
||||||
|
"status" to "displayed"
|
||||||
|
)
|
||||||
|
if (additionalData != null) {
|
||||||
|
data.putAll(additionalData)
|
||||||
|
}
|
||||||
|
if (eventAction != null) {
|
||||||
|
if (target == null || target == AnalyticsTarget.AMPLITUDE) {
|
||||||
|
amplitude.track(eventAction, data)
|
||||||
|
}
|
||||||
|
if (target == null || target == AnalyticsTarget.FIREBASE) {
|
||||||
|
firebase.logEvent(eventAction, bundleOf(*data.toList().toTypedArray()))
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
fun sendNavigationEvent(page: String) {
|
||||||
|
val additionalData = HashMap<String, Any>()
|
||||||
|
additionalData["page"] = page
|
||||||
|
sendEvent("navigated", EventCategory.NAVIGATION, HitType.PAGEVIEW, additionalData)
|
||||||
|
}
|
||||||
|
|
||||||
|
fun initialize(context: Context) {
|
||||||
|
amplitude = Amplitude(
|
||||||
|
Configuration(
|
||||||
|
context.getString(R.string.amplitude_app_id),
|
||||||
|
context
|
||||||
|
)
|
||||||
|
)
|
||||||
|
firebase = FirebaseAnalytics.getInstance(context)
|
||||||
|
}
|
||||||
|
|
||||||
|
fun identify(sharedPrefs: SharedPreferences) {
|
||||||
|
val identify = Identify()
|
||||||
|
.setOnce("androidStore", BuildConfig.STORE)
|
||||||
|
sharedPrefs.getString("launch_screen", "")?.let {
|
||||||
|
identify.set("launch_screen", it)
|
||||||
|
}
|
||||||
|
amplitude.identify(identify)
|
||||||
|
}
|
||||||
|
|
||||||
|
fun setUserID(userID: String) {
|
||||||
|
amplitude.setUserId(userID)
|
||||||
|
FirebaseCrashlytics.getInstance().setUserId(userID)
|
||||||
|
firebase.setUserId(userID)
|
||||||
|
}
|
||||||
|
|
||||||
|
fun setUserProperty(identifier: String, value: String) {
|
||||||
|
firebase.setUserProperty(identifier, value)
|
||||||
|
}
|
||||||
|
|
||||||
|
fun logError(msg: String) {
|
||||||
|
FirebaseCrashlytics.getInstance().log(msg)
|
||||||
|
}
|
||||||
|
|
||||||
|
fun logException(t: Throwable) {
|
||||||
|
FirebaseCrashlytics.getInstance().recordException(t)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -7,7 +7,9 @@ import androidx.core.content.edit
|
||||||
import com.google.firebase.messaging.FirebaseMessaging
|
import com.google.firebase.messaging.FirebaseMessaging
|
||||||
import com.google.firebase.messaging.RemoteMessage
|
import com.google.firebase.messaging.RemoteMessage
|
||||||
import com.habitrpg.android.habitica.data.ApiClient
|
import com.habitrpg.android.habitica.data.ApiClient
|
||||||
import com.habitrpg.android.habitica.helpers.AmplitudeManager
|
import com.habitrpg.android.habitica.helpers.Analytics
|
||||||
|
import com.habitrpg.android.habitica.helpers.EventCategory
|
||||||
|
import com.habitrpg.android.habitica.helpers.HitType
|
||||||
import com.habitrpg.android.habitica.models.user.User
|
import com.habitrpg.android.habitica.models.user.User
|
||||||
import com.habitrpg.common.habitica.helpers.launchCatching
|
import com.habitrpg.common.habitica.helpers.launchCatching
|
||||||
import kotlinx.coroutines.MainScope
|
import kotlinx.coroutines.MainScope
|
||||||
|
|
@ -141,10 +143,10 @@ class PushNotificationManager(
|
||||||
if (remoteMessage.data.containsKey("sendAnalytics")) {
|
if (remoteMessage.data.containsKey("sendAnalytics")) {
|
||||||
val additionalData = HashMap<String, Any>()
|
val additionalData = HashMap<String, Any>()
|
||||||
additionalData["identifier"] = remoteMessageIdentifier ?: ""
|
additionalData["identifier"] = remoteMessageIdentifier ?: ""
|
||||||
AmplitudeManager.sendEvent(
|
Analytics.sendEvent(
|
||||||
"receive notification",
|
"receive notification",
|
||||||
AmplitudeManager.EVENT_CATEGORY_BEHAVIOUR,
|
EventCategory.BEHAVIOUR,
|
||||||
AmplitudeManager.EVENT_HITTYPE_EVENT,
|
HitType.EVENT,
|
||||||
additionalData
|
additionalData
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -12,7 +12,7 @@ import androidx.core.content.ContextCompat
|
||||||
import com.habitrpg.android.habitica.R
|
import com.habitrpg.android.habitica.R
|
||||||
import com.habitrpg.android.habitica.databinding.ActivityAdventureGuideBinding
|
import com.habitrpg.android.habitica.databinding.ActivityAdventureGuideBinding
|
||||||
import com.habitrpg.android.habitica.databinding.AdventureGuideItemBinding
|
import com.habitrpg.android.habitica.databinding.AdventureGuideItemBinding
|
||||||
import com.habitrpg.android.habitica.helpers.AmplitudeManager
|
import com.habitrpg.android.habitica.helpers.Analytics
|
||||||
import com.habitrpg.android.habitica.models.user.User
|
import com.habitrpg.android.habitica.models.user.User
|
||||||
import com.habitrpg.android.habitica.ui.viewmodels.MainUserViewModel
|
import com.habitrpg.android.habitica.ui.viewmodels.MainUserViewModel
|
||||||
import com.habitrpg.common.habitica.extensions.fromHtml
|
import com.habitrpg.common.habitica.extensions.fromHtml
|
||||||
|
|
@ -62,7 +62,7 @@ class AdventureGuideActivity : BaseActivity() {
|
||||||
val descriptionText = getString(R.string.adventure_guide_description_new)
|
val descriptionText = getString(R.string.adventure_guide_description_new)
|
||||||
binding.descriptionView.setText(descriptionText.fromHtml(), TextView.BufferType.SPANNABLE)
|
binding.descriptionView.setText(descriptionText.fromHtml(), TextView.BufferType.SPANNABLE)
|
||||||
|
|
||||||
AmplitudeManager.sendNavigationEvent("adventure guide screen")
|
Analytics.sendNavigationEvent("adventure guide screen")
|
||||||
|
|
||||||
userViewModel.user.observe(this) {
|
userViewModel.user.observe(this) {
|
||||||
if (it != null) {
|
if (it != null) {
|
||||||
|
|
|
||||||
|
|
@ -37,8 +37,10 @@ import com.habitrpg.android.habitica.databinding.ActivityLoginBinding
|
||||||
import com.habitrpg.android.habitica.extensions.addCancelButton
|
import com.habitrpg.android.habitica.extensions.addCancelButton
|
||||||
import com.habitrpg.android.habitica.extensions.addOkButton
|
import com.habitrpg.android.habitica.extensions.addOkButton
|
||||||
import com.habitrpg.android.habitica.extensions.updateStatusBarColor
|
import com.habitrpg.android.habitica.extensions.updateStatusBarColor
|
||||||
import com.habitrpg.android.habitica.helpers.AmplitudeManager
|
import com.habitrpg.android.habitica.helpers.Analytics
|
||||||
import com.habitrpg.android.habitica.helpers.AppConfigManager
|
import com.habitrpg.android.habitica.helpers.AppConfigManager
|
||||||
|
import com.habitrpg.android.habitica.helpers.EventCategory
|
||||||
|
import com.habitrpg.android.habitica.helpers.HitType
|
||||||
import com.habitrpg.android.habitica.ui.helpers.dismissKeyboard
|
import com.habitrpg.android.habitica.ui.helpers.dismissKeyboard
|
||||||
import com.habitrpg.android.habitica.ui.viewmodels.AuthenticationViewModel
|
import com.habitrpg.android.habitica.ui.viewmodels.AuthenticationViewModel
|
||||||
import com.habitrpg.android.habitica.ui.views.dialogs.HabiticaAlertDialog
|
import com.habitrpg.android.habitica.ui.views.dialogs.HabiticaAlertDialog
|
||||||
|
|
@ -292,7 +294,7 @@ class LoginActivity : BaseActivity() {
|
||||||
startSetupActivity()
|
startSetupActivity()
|
||||||
} else {
|
} else {
|
||||||
startMainActivity()
|
startMainActivity()
|
||||||
AmplitudeManager.sendEvent("login", AmplitudeManager.EVENT_CATEGORY_BEHAVIOUR, AmplitudeManager.EVENT_HITTYPE_EVENT)
|
Analytics.sendEvent("login", EventCategory.BEHAVIOUR, HitType.EVENT)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -41,8 +41,10 @@ import com.habitrpg.android.habitica.extensions.hideKeyboard
|
||||||
import com.habitrpg.android.habitica.extensions.observeOnce
|
import com.habitrpg.android.habitica.extensions.observeOnce
|
||||||
import com.habitrpg.android.habitica.extensions.setScaledPadding
|
import com.habitrpg.android.habitica.extensions.setScaledPadding
|
||||||
import com.habitrpg.android.habitica.extensions.updateStatusBarColor
|
import com.habitrpg.android.habitica.extensions.updateStatusBarColor
|
||||||
import com.habitrpg.android.habitica.helpers.AmplitudeManager
|
import com.habitrpg.android.habitica.helpers.Analytics
|
||||||
import com.habitrpg.android.habitica.helpers.AppConfigManager
|
import com.habitrpg.android.habitica.helpers.AppConfigManager
|
||||||
|
import com.habitrpg.android.habitica.helpers.EventCategory
|
||||||
|
import com.habitrpg.android.habitica.helpers.HitType
|
||||||
import com.habitrpg.android.habitica.helpers.MainNavigationController
|
import com.habitrpg.android.habitica.helpers.MainNavigationController
|
||||||
import com.habitrpg.android.habitica.helpers.NotificationOpenHandler
|
import com.habitrpg.android.habitica.helpers.NotificationOpenHandler
|
||||||
import com.habitrpg.android.habitica.helpers.SoundManager
|
import com.habitrpg.android.habitica.helpers.SoundManager
|
||||||
|
|
@ -430,10 +432,10 @@ open class MainActivity : BaseActivity(), SnackbarActivity {
|
||||||
if (intent.hasExtra("sendAnalytics")) {
|
if (intent.hasExtra("sendAnalytics")) {
|
||||||
val additionalData = HashMap<String, Any>()
|
val additionalData = HashMap<String, Any>()
|
||||||
additionalData["identifier"] = identifier
|
additionalData["identifier"] = identifier
|
||||||
AmplitudeManager.sendEvent(
|
Analytics.sendEvent(
|
||||||
"open notification",
|
"open notification",
|
||||||
AmplitudeManager.EVENT_CATEGORY_BEHAVIOUR,
|
EventCategory.BEHAVIOUR,
|
||||||
AmplitudeManager.EVENT_HITTYPE_EVENT,
|
HitType.EVENT,
|
||||||
additionalData
|
additionalData
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -22,7 +22,9 @@ import com.habitrpg.android.habitica.data.ApiClient
|
||||||
import com.habitrpg.android.habitica.data.InventoryRepository
|
import com.habitrpg.android.habitica.data.InventoryRepository
|
||||||
import com.habitrpg.android.habitica.data.TaskRepository
|
import com.habitrpg.android.habitica.data.TaskRepository
|
||||||
import com.habitrpg.android.habitica.databinding.ActivitySetupBinding
|
import com.habitrpg.android.habitica.databinding.ActivitySetupBinding
|
||||||
import com.habitrpg.android.habitica.helpers.AmplitudeManager
|
import com.habitrpg.android.habitica.helpers.Analytics
|
||||||
|
import com.habitrpg.android.habitica.helpers.EventCategory
|
||||||
|
import com.habitrpg.android.habitica.helpers.HitType
|
||||||
import com.habitrpg.android.habitica.models.user.User
|
import com.habitrpg.android.habitica.models.user.User
|
||||||
import com.habitrpg.android.habitica.ui.fragments.setup.AvatarSetupFragment
|
import com.habitrpg.android.habitica.ui.fragments.setup.AvatarSetupFragment
|
||||||
import com.habitrpg.android.habitica.ui.fragments.setup.TaskSetupFragment
|
import com.habitrpg.android.habitica.ui.fragments.setup.TaskSetupFragment
|
||||||
|
|
@ -83,7 +85,7 @@ class SetupActivity : BaseActivity(), ViewPager.OnPageChangeListener {
|
||||||
}
|
}
|
||||||
val additionalData = HashMap<String, Any>()
|
val additionalData = HashMap<String, Any>()
|
||||||
additionalData["status"] = "displayed"
|
additionalData["status"] = "displayed"
|
||||||
AmplitudeManager.sendEvent("setup", AmplitudeManager.EVENT_CATEGORY_BEHAVIOUR, AmplitudeManager.EVENT_HITTYPE_EVENT, additionalData)
|
Analytics.sendEvent("setup", EventCategory.BEHAVIOUR, HitType.EVENT, additionalData)
|
||||||
|
|
||||||
val currentDeviceLanguage = Locale.getDefault().language
|
val currentDeviceLanguage = Locale.getDefault().language
|
||||||
for (language in resources.getStringArray(R.array.LanguageValues)) {
|
for (language in resources.getStringArray(R.array.LanguageValues)) {
|
||||||
|
|
@ -208,7 +210,7 @@ class SetupActivity : BaseActivity(), ViewPager.OnPageChangeListener {
|
||||||
if (completedSetup && !hasCompleted) {
|
if (completedSetup && !hasCompleted) {
|
||||||
val additionalData = HashMap<String, Any>()
|
val additionalData = HashMap<String, Any>()
|
||||||
additionalData["status"] = "completed"
|
additionalData["status"] = "completed"
|
||||||
AmplitudeManager.sendEvent("setup", AmplitudeManager.EVENT_CATEGORY_BEHAVIOUR, AmplitudeManager.EVENT_HITTYPE_EVENT, additionalData)
|
Analytics.sendEvent("setup", EventCategory.BEHAVIOUR, HitType.EVENT, additionalData)
|
||||||
hasCompleted = true
|
hasCompleted = true
|
||||||
lifecycleScope.launchCatching {
|
lifecycleScope.launchCatching {
|
||||||
userRepository.updateUser("flags.welcomed", true)
|
userRepository.updateUser("flags.welcomed", true)
|
||||||
|
|
|
||||||
|
|
@ -8,7 +8,7 @@ import androidx.lifecycle.lifecycleScope
|
||||||
import androidx.viewbinding.ViewBinding
|
import androidx.viewbinding.ViewBinding
|
||||||
import com.google.android.material.bottomsheet.BottomSheetDialogFragment
|
import com.google.android.material.bottomsheet.BottomSheetDialogFragment
|
||||||
import com.habitrpg.android.habitica.data.TutorialRepository
|
import com.habitrpg.android.habitica.data.TutorialRepository
|
||||||
import com.habitrpg.android.habitica.helpers.AmplitudeManager
|
import com.habitrpg.android.habitica.helpers.Analytics
|
||||||
import com.habitrpg.android.habitica.ui.activities.MainActivity
|
import com.habitrpg.android.habitica.ui.activities.MainActivity
|
||||||
import com.habitrpg.common.habitica.helpers.launchCatching
|
import com.habitrpg.common.habitica.helpers.launchCatching
|
||||||
import kotlinx.coroutines.delay
|
import kotlinx.coroutines.delay
|
||||||
|
|
@ -39,9 +39,7 @@ abstract class BaseDialogFragment<VB : ViewBinding> : BottomSheetDialogFragment(
|
||||||
container: ViewGroup?,
|
container: ViewGroup?,
|
||||||
savedInstanceState: Bundle?
|
savedInstanceState: Bundle?
|
||||||
): View? {
|
): View? {
|
||||||
val additionalData = HashMap<String, Any>()
|
Analytics.sendNavigationEvent(this.javaClass.simpleName)
|
||||||
additionalData["page"] = this.javaClass.simpleName
|
|
||||||
AmplitudeManager.sendEvent("navigate", AmplitudeManager.EVENT_CATEGORY_NAVIGATION, AmplitudeManager.EVENT_HITTYPE_PAGEVIEW, additionalData)
|
|
||||||
|
|
||||||
binding = createBinding(inflater, container)
|
binding = createBinding(inflater, container)
|
||||||
return binding?.root
|
return binding?.root
|
||||||
|
|
|
||||||
|
|
@ -18,7 +18,7 @@ import com.habitrpg.android.habitica.R
|
||||||
import com.habitrpg.android.habitica.data.UserRepository
|
import com.habitrpg.android.habitica.data.UserRepository
|
||||||
import com.habitrpg.android.habitica.databinding.FragmentGemPurchaseBinding
|
import com.habitrpg.android.habitica.databinding.FragmentGemPurchaseBinding
|
||||||
import com.habitrpg.android.habitica.extensions.addCancelButton
|
import com.habitrpg.android.habitica.extensions.addCancelButton
|
||||||
import com.habitrpg.android.habitica.helpers.AmplitudeManager
|
import com.habitrpg.android.habitica.helpers.Analytics
|
||||||
import com.habitrpg.android.habitica.helpers.AppConfigManager
|
import com.habitrpg.android.habitica.helpers.AppConfigManager
|
||||||
import com.habitrpg.android.habitica.helpers.PurchaseHandler
|
import com.habitrpg.android.habitica.helpers.PurchaseHandler
|
||||||
import com.habitrpg.android.habitica.helpers.PurchaseTypes
|
import com.habitrpg.android.habitica.helpers.PurchaseTypes
|
||||||
|
|
@ -34,12 +34,12 @@ import com.habitrpg.android.habitica.ui.views.promo.BirthdayBanner
|
||||||
import com.habitrpg.common.habitica.extensions.isUsingNightModeResources
|
import com.habitrpg.common.habitica.extensions.isUsingNightModeResources
|
||||||
import com.habitrpg.common.habitica.helpers.ExceptionHandler
|
import com.habitrpg.common.habitica.helpers.ExceptionHandler
|
||||||
import com.habitrpg.common.habitica.helpers.launchCatching
|
import com.habitrpg.common.habitica.helpers.launchCatching
|
||||||
|
import dagger.hilt.android.AndroidEntryPoint
|
||||||
import kotlinx.coroutines.CoroutineScope
|
import kotlinx.coroutines.CoroutineScope
|
||||||
import kotlinx.coroutines.Dispatchers
|
import kotlinx.coroutines.Dispatchers
|
||||||
import kotlinx.coroutines.launch
|
import kotlinx.coroutines.launch
|
||||||
import kotlinx.coroutines.withContext
|
import kotlinx.coroutines.withContext
|
||||||
import javax.inject.Inject
|
import javax.inject.Inject
|
||||||
import dagger.hilt.android.AndroidEntryPoint
|
|
||||||
|
|
||||||
@AndroidEntryPoint
|
@AndroidEntryPoint
|
||||||
class GemsPurchaseFragment : BaseFragment<FragmentGemPurchaseBinding>() {
|
class GemsPurchaseFragment : BaseFragment<FragmentGemPurchaseBinding>() {
|
||||||
|
|
@ -111,7 +111,7 @@ class GemsPurchaseFragment : BaseFragment<FragmentGemPurchaseBinding>() {
|
||||||
binding?.promoComposeView?.isVisible = true
|
binding?.promoComposeView?.isVisible = true
|
||||||
}
|
}
|
||||||
|
|
||||||
AmplitudeManager.sendNavigationEvent("gem screen")
|
Analytics.sendNavigationEvent("gem screen")
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun onResume() {
|
override fun onResume() {
|
||||||
|
|
|
||||||
|
|
@ -20,7 +20,7 @@ import com.habitrpg.android.habitica.data.InventoryRepository
|
||||||
import com.habitrpg.android.habitica.data.UserRepository
|
import com.habitrpg.android.habitica.data.UserRepository
|
||||||
import com.habitrpg.android.habitica.databinding.FragmentSubscriptionBinding
|
import com.habitrpg.android.habitica.databinding.FragmentSubscriptionBinding
|
||||||
import com.habitrpg.android.habitica.extensions.addCancelButton
|
import com.habitrpg.android.habitica.extensions.addCancelButton
|
||||||
import com.habitrpg.android.habitica.helpers.AmplitudeManager
|
import com.habitrpg.android.habitica.helpers.Analytics
|
||||||
import com.habitrpg.android.habitica.helpers.AppConfigManager
|
import com.habitrpg.android.habitica.helpers.AppConfigManager
|
||||||
import com.habitrpg.android.habitica.helpers.PurchaseHandler
|
import com.habitrpg.android.habitica.helpers.PurchaseHandler
|
||||||
import com.habitrpg.android.habitica.helpers.PurchaseTypes
|
import com.habitrpg.android.habitica.helpers.PurchaseTypes
|
||||||
|
|
@ -37,12 +37,12 @@ import com.habitrpg.common.habitica.extensions.layoutInflater
|
||||||
import com.habitrpg.common.habitica.extensions.loadImage
|
import com.habitrpg.common.habitica.extensions.loadImage
|
||||||
import com.habitrpg.common.habitica.helpers.ExceptionHandler
|
import com.habitrpg.common.habitica.helpers.ExceptionHandler
|
||||||
import com.habitrpg.common.habitica.helpers.launchCatching
|
import com.habitrpg.common.habitica.helpers.launchCatching
|
||||||
|
import dagger.hilt.android.AndroidEntryPoint
|
||||||
import kotlinx.coroutines.CoroutineScope
|
import kotlinx.coroutines.CoroutineScope
|
||||||
import kotlinx.coroutines.Dispatchers
|
import kotlinx.coroutines.Dispatchers
|
||||||
import kotlinx.coroutines.launch
|
import kotlinx.coroutines.launch
|
||||||
import kotlinx.coroutines.withContext
|
import kotlinx.coroutines.withContext
|
||||||
import javax.inject.Inject
|
import javax.inject.Inject
|
||||||
import dagger.hilt.android.AndroidEntryPoint
|
|
||||||
|
|
||||||
@AndroidEntryPoint
|
@AndroidEntryPoint
|
||||||
class SubscriptionFragment : BaseFragment<FragmentSubscriptionBinding>() {
|
class SubscriptionFragment : BaseFragment<FragmentSubscriptionBinding>() {
|
||||||
|
|
@ -131,7 +131,7 @@ class SubscriptionFragment : BaseFragment<FragmentSubscriptionBinding>() {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
AmplitudeManager.sendNavigationEvent("subscription screen")
|
Analytics.sendNavigationEvent("subscription screen")
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun onResume() {
|
override fun onResume() {
|
||||||
|
|
|
||||||
|
|
@ -55,7 +55,9 @@ import com.habitrpg.android.habitica.R
|
||||||
import com.habitrpg.android.habitica.data.SocialRepository
|
import com.habitrpg.android.habitica.data.SocialRepository
|
||||||
import com.habitrpg.android.habitica.data.UserRepository
|
import com.habitrpg.android.habitica.data.UserRepository
|
||||||
import com.habitrpg.android.habitica.databinding.FragmentComposeBinding
|
import com.habitrpg.android.habitica.databinding.FragmentComposeBinding
|
||||||
import com.habitrpg.android.habitica.helpers.AmplitudeManager
|
import com.habitrpg.android.habitica.helpers.Analytics
|
||||||
|
import com.habitrpg.android.habitica.helpers.EventCategory
|
||||||
|
import com.habitrpg.android.habitica.helpers.HitType
|
||||||
import com.habitrpg.android.habitica.models.invitations.InviteResponse
|
import com.habitrpg.android.habitica.models.invitations.InviteResponse
|
||||||
import com.habitrpg.android.habitica.models.members.Member
|
import com.habitrpg.android.habitica.models.members.Member
|
||||||
import com.habitrpg.android.habitica.ui.fragments.BaseFragment
|
import com.habitrpg.android.habitica.ui.fragments.BaseFragment
|
||||||
|
|
@ -139,7 +141,7 @@ class PartySeekingFragment : BaseFragment<FragmentComposeBinding>() {
|
||||||
|
|
||||||
override fun onStart() {
|
override fun onStart() {
|
||||||
super.onStart()
|
super.onStart()
|
||||||
AmplitudeManager.sendEvent("View Find Members", AmplitudeManager.EVENT_CATEGORY_NAVIGATION, AmplitudeManager.EVENT_HITTYPE_EVENT)
|
Analytics.sendEvent("View Find Members", EventCategory.NAVIGATION, HitType.EVENT)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -24,7 +24,9 @@ import com.habitrpg.android.habitica.R
|
||||||
import com.habitrpg.android.habitica.data.TagRepository
|
import com.habitrpg.android.habitica.data.TagRepository
|
||||||
import com.habitrpg.android.habitica.databinding.FragmentViewpagerBinding
|
import com.habitrpg.android.habitica.databinding.FragmentViewpagerBinding
|
||||||
import com.habitrpg.android.habitica.extensions.setTintWith
|
import com.habitrpg.android.habitica.extensions.setTintWith
|
||||||
import com.habitrpg.android.habitica.helpers.AmplitudeManager
|
import com.habitrpg.android.habitica.helpers.Analytics
|
||||||
|
import com.habitrpg.android.habitica.helpers.EventCategory
|
||||||
|
import com.habitrpg.android.habitica.helpers.HitType
|
||||||
import com.habitrpg.android.habitica.helpers.MainNavigationController
|
import com.habitrpg.android.habitica.helpers.MainNavigationController
|
||||||
import com.habitrpg.android.habitica.ui.activities.TaskFormActivity
|
import com.habitrpg.android.habitica.ui.activities.TaskFormActivity
|
||||||
import com.habitrpg.android.habitica.ui.fragments.BaseMainFragment
|
import com.habitrpg.android.habitica.ui.fragments.BaseMainFragment
|
||||||
|
|
@ -325,7 +327,7 @@ class TasksFragment : BaseMainFragment<FragmentViewpagerBinding>(), SearchView.O
|
||||||
3 -> TaskType.REWARD
|
3 -> TaskType.REWARD
|
||||||
else -> ""
|
else -> ""
|
||||||
}
|
}
|
||||||
AmplitudeManager.sendEvent("open create task form", AmplitudeManager.EVENT_CATEGORY_BEHAVIOUR, AmplitudeManager.EVENT_HITTYPE_EVENT, additionalData)
|
Analytics.sendEvent("open create task form", EventCategory.BEHAVIOUR, HitType.EVENT, additionalData)
|
||||||
|
|
||||||
val bundle = Bundle()
|
val bundle = Bundle()
|
||||||
bundle.putString(TaskFormActivity.TASK_TYPE_KEY, type.value)
|
bundle.putString(TaskFormActivity.TASK_TYPE_KEY, type.value)
|
||||||
|
|
@ -363,10 +365,10 @@ class TasksFragment : BaseMainFragment<FragmentViewpagerBinding>(), SearchView.O
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!DateUtils.isToday(viewModel.sharedPreferences.getLong("last_creation_reporting", 0))) {
|
if (!DateUtils.isToday(viewModel.sharedPreferences.getLong("last_creation_reporting", 0))) {
|
||||||
AmplitudeManager.sendEvent(
|
Analytics.sendEvent(
|
||||||
"task created",
|
"task created",
|
||||||
AmplitudeManager.EVENT_CATEGORY_BEHAVIOUR,
|
EventCategory.BEHAVIOUR,
|
||||||
AmplitudeManager.EVENT_HITTYPE_EVENT
|
HitType.EVENT
|
||||||
)
|
)
|
||||||
viewModel.sharedPreferences.edit {
|
viewModel.sharedPreferences.edit {
|
||||||
putLong("last_creation_reporting", Date().time)
|
putLong("last_creation_reporting", Date().time)
|
||||||
|
|
|
||||||
|
|
@ -11,7 +11,9 @@ import com.habitrpg.android.habitica.data.ContentRepository
|
||||||
import com.habitrpg.android.habitica.data.InventoryRepository
|
import com.habitrpg.android.habitica.data.InventoryRepository
|
||||||
import com.habitrpg.android.habitica.data.TaskRepository
|
import com.habitrpg.android.habitica.data.TaskRepository
|
||||||
import com.habitrpg.android.habitica.data.UserRepository
|
import com.habitrpg.android.habitica.data.UserRepository
|
||||||
import com.habitrpg.android.habitica.helpers.AmplitudeManager
|
import com.habitrpg.android.habitica.helpers.Analytics
|
||||||
|
import com.habitrpg.android.habitica.helpers.EventCategory
|
||||||
|
import com.habitrpg.android.habitica.helpers.HitType
|
||||||
import com.habitrpg.android.habitica.helpers.TaskAlarmManager
|
import com.habitrpg.android.habitica.helpers.TaskAlarmManager
|
||||||
import com.habitrpg.android.habitica.helpers.notifications.PushNotificationManager
|
import com.habitrpg.android.habitica.helpers.notifications.PushNotificationManager
|
||||||
import com.habitrpg.android.habitica.models.TutorialStep
|
import com.habitrpg.android.habitica.models.TutorialStep
|
||||||
|
|
@ -146,10 +148,10 @@ class MainActivityViewModel @Inject constructor(
|
||||||
additionalData["eventLabel"] = step.identifier + "-android"
|
additionalData["eventLabel"] = step.identifier + "-android"
|
||||||
additionalData["eventValue"] = step.identifier ?: ""
|
additionalData["eventValue"] = step.identifier ?: ""
|
||||||
additionalData["complete"] = complete
|
additionalData["complete"] = complete
|
||||||
AmplitudeManager.sendEvent(
|
Analytics.sendEvent(
|
||||||
"tutorial",
|
"tutorial",
|
||||||
AmplitudeManager.EVENT_CATEGORY_BEHAVIOUR,
|
EventCategory.BEHAVIOUR,
|
||||||
AmplitudeManager.EVENT_HITTYPE_EVENT,
|
HitType.EVENT,
|
||||||
additionalData
|
additionalData
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -10,9 +10,11 @@ import com.habitrpg.android.habitica.R
|
||||||
import com.habitrpg.android.habitica.data.TagRepository
|
import com.habitrpg.android.habitica.data.TagRepository
|
||||||
import com.habitrpg.android.habitica.data.TaskRepository
|
import com.habitrpg.android.habitica.data.TaskRepository
|
||||||
import com.habitrpg.android.habitica.data.UserRepository
|
import com.habitrpg.android.habitica.data.UserRepository
|
||||||
import com.habitrpg.android.habitica.helpers.AmplitudeManager
|
import com.habitrpg.android.habitica.helpers.Analytics
|
||||||
import com.habitrpg.android.habitica.helpers.AppConfigManager
|
import com.habitrpg.android.habitica.helpers.AppConfigManager
|
||||||
|
import com.habitrpg.android.habitica.helpers.EventCategory
|
||||||
import com.habitrpg.android.habitica.helpers.GroupPlanInfoProvider
|
import com.habitrpg.android.habitica.helpers.GroupPlanInfoProvider
|
||||||
|
import com.habitrpg.android.habitica.helpers.HitType
|
||||||
import com.habitrpg.android.habitica.models.TeamPlan
|
import com.habitrpg.android.habitica.models.TeamPlan
|
||||||
import com.habitrpg.android.habitica.models.tasks.Task
|
import com.habitrpg.android.habitica.models.tasks.Task
|
||||||
import com.habitrpg.common.habitica.helpers.ExceptionHandler
|
import com.habitrpg.common.habitica.helpers.ExceptionHandler
|
||||||
|
|
@ -116,10 +118,10 @@ class TasksViewModel @Inject constructor(
|
||||||
) { result ->
|
) { result ->
|
||||||
onResult(result, task.value.toInt())
|
onResult(result, task.value.toInt())
|
||||||
if (!DateUtils.isToday(sharedPreferences.getLong("last_task_reporting", 0))) {
|
if (!DateUtils.isToday(sharedPreferences.getLong("last_task_reporting", 0))) {
|
||||||
AmplitudeManager.sendEvent(
|
Analytics.sendEvent(
|
||||||
"task scored",
|
"task scored",
|
||||||
AmplitudeManager.EVENT_CATEGORY_BEHAVIOUR,
|
EventCategory.BEHAVIOUR,
|
||||||
AmplitudeManager.EVENT_HITTYPE_EVENT
|
HitType.EVENT
|
||||||
)
|
)
|
||||||
sharedPreferences.edit {
|
sharedPreferences.edit {
|
||||||
putLong("last_task_reporting", Date().time)
|
putLong("last_task_reporting", Date().time)
|
||||||
|
|
|
||||||
|
|
@ -13,7 +13,9 @@ import androidx.lifecycle.lifecycleScope
|
||||||
import com.habitrpg.android.habitica.R
|
import com.habitrpg.android.habitica.R
|
||||||
import com.habitrpg.android.habitica.data.TaskRepository
|
import com.habitrpg.android.habitica.data.TaskRepository
|
||||||
import com.habitrpg.android.habitica.data.UserRepository
|
import com.habitrpg.android.habitica.data.UserRepository
|
||||||
import com.habitrpg.android.habitica.helpers.AmplitudeManager
|
import com.habitrpg.android.habitica.helpers.Analytics
|
||||||
|
import com.habitrpg.android.habitica.helpers.EventCategory
|
||||||
|
import com.habitrpg.android.habitica.helpers.HitType
|
||||||
import com.habitrpg.android.habitica.models.tasks.ChecklistItem
|
import com.habitrpg.android.habitica.models.tasks.ChecklistItem
|
||||||
import com.habitrpg.android.habitica.models.tasks.Task
|
import com.habitrpg.android.habitica.models.tasks.Task
|
||||||
import com.habitrpg.android.habitica.ui.views.dialogs.HabiticaAlertDialog
|
import com.habitrpg.android.habitica.ui.views.dialogs.HabiticaAlertDialog
|
||||||
|
|
@ -254,10 +256,10 @@ class YesterdailyDialog private constructor(
|
||||||
|
|
||||||
val additionalData = HashMap<String, Any>()
|
val additionalData = HashMap<String, Any>()
|
||||||
additionalData["task count"] = sortedTasks?.size ?: 0
|
additionalData["task count"] = sortedTasks?.size ?: 0
|
||||||
AmplitudeManager.sendEvent(
|
Analytics.sendEvent(
|
||||||
"show cron",
|
"show cron",
|
||||||
AmplitudeManager.EVENT_CATEGORY_BEHAVIOUR,
|
EventCategory.BEHAVIOUR,
|
||||||
AmplitudeManager.EVENT_HITTYPE_EVENT,
|
HitType.EVENT,
|
||||||
additionalData
|
additionalData
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -7,7 +7,9 @@ import android.os.Bundle
|
||||||
import android.widget.RemoteViews
|
import android.widget.RemoteViews
|
||||||
import android.widget.Toast
|
import android.widget.Toast
|
||||||
import com.habitrpg.android.habitica.data.UserRepository
|
import com.habitrpg.android.habitica.data.UserRepository
|
||||||
import com.habitrpg.android.habitica.helpers.AmplitudeManager
|
import com.habitrpg.android.habitica.helpers.Analytics
|
||||||
|
import com.habitrpg.android.habitica.helpers.EventCategory
|
||||||
|
import com.habitrpg.android.habitica.helpers.HitType
|
||||||
import com.habitrpg.android.habitica.interactors.NotifyUserUseCase
|
import com.habitrpg.android.habitica.interactors.NotifyUserUseCase
|
||||||
import com.habitrpg.shared.habitica.models.responses.TaskScoringResult
|
import com.habitrpg.shared.habitica.models.responses.TaskScoringResult
|
||||||
import javax.inject.Inject
|
import javax.inject.Inject
|
||||||
|
|
@ -89,13 +91,13 @@ abstract class BaseWidgetProvider : AppWidgetProvider() {
|
||||||
super.onEnabled(context)
|
super.onEnabled(context)
|
||||||
val additionalData = HashMap<String, Any>()
|
val additionalData = HashMap<String, Any>()
|
||||||
additionalData["identifier"] = this.javaClass.simpleName
|
additionalData["identifier"] = this.javaClass.simpleName
|
||||||
AmplitudeManager.sendEvent("widgets", AmplitudeManager.EVENT_CATEGORY_BEHAVIOUR, AmplitudeManager.EVENT_HITTYPE_CREATE_WIDGET, additionalData)
|
Analytics.sendEvent("widgets", EventCategory.BEHAVIOUR, HitType.CREATE_WIDGET, additionalData)
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun onDeleted(context: Context, appWidgetIds: IntArray) {
|
override fun onDeleted(context: Context, appWidgetIds: IntArray) {
|
||||||
val additionalData = HashMap<String, Any>()
|
val additionalData = HashMap<String, Any>()
|
||||||
additionalData["identifier"] = this.javaClass.simpleName
|
additionalData["identifier"] = this.javaClass.simpleName
|
||||||
AmplitudeManager.sendEvent("widgets", AmplitudeManager.EVENT_CATEGORY_BEHAVIOUR, AmplitudeManager.EVENT_HITTYPE_REMOVE_WIDGET, additionalData)
|
Analytics.sendEvent("widgets", EventCategory.BEHAVIOUR, HitType.REMOVE_WIDGET, additionalData)
|
||||||
super.onDeleted(context, appWidgetIds)
|
super.onDeleted(context, appWidgetIds)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -4,7 +4,6 @@ import android.content.Context
|
||||||
import android.os.Bundle
|
import android.os.Bundle
|
||||||
import com.google.firebase.analytics.FirebaseAnalytics
|
import com.google.firebase.analytics.FirebaseAnalytics
|
||||||
import com.google.firebase.crashlytics.FirebaseCrashlytics
|
import com.google.firebase.crashlytics.FirebaseCrashlytics
|
||||||
import com.habitrpg.android.habitica.helpers.AmplitudeManager
|
|
||||||
import com.habitrpg.common.habitica.helpers.AnalyticsManager
|
import com.habitrpg.common.habitica.helpers.AnalyticsManager
|
||||||
|
|
||||||
class AnalyticsManagerImpl(context: Context) : AnalyticsManager {
|
class AnalyticsManagerImpl(context: Context) : AnalyticsManager {
|
||||||
|
|
@ -17,7 +16,6 @@ class AnalyticsManagerImpl(context: Context) : AnalyticsManager {
|
||||||
|
|
||||||
override fun setUserIdentifier(identifier: String) {
|
override fun setUserIdentifier(identifier: String) {
|
||||||
FirebaseCrashlytics.getInstance().setUserId(identifier)
|
FirebaseCrashlytics.getInstance().setUserId(identifier)
|
||||||
AmplitudeManager.amplitude.setUserId(identifier)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun setUserProperty(identifier: String, value: String) {
|
override fun setUserProperty(identifier: String, value: String) {
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue