begin analytics refactoring

This commit is contained in:
Phillip Thelen 2023-07-31 12:53:59 +02:00
parent ef54a2ce63
commit e330577bae
19 changed files with 179 additions and 130 deletions

View file

@ -25,7 +25,7 @@ import com.google.firebase.remoteconfig.FirebaseRemoteConfig
import com.google.firebase.remoteconfig.FirebaseRemoteConfigSettings
import com.habitrpg.android.habitica.data.ApiClient
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.modules.AuthenticationHandler
import com.habitrpg.android.habitica.ui.activities.BaseActivity
@ -65,11 +65,11 @@ abstract class HabiticaBaseApplication : Application(), Application.ActivityLife
super.onCreate()
if (!BuildConfig.DEBUG) {
try {
AmplitudeManager.initialize(this)
Analytics.initialize(this)
} catch (ignored: Resources.NotFoundException) {
}
AmplitudeManager.identify(sharedPrefs)
AmplitudeManager.setUserID(lazyApiHelper.hostConfig.userID)
Analytics.identify(sharedPrefs)
Analytics.setUserID(lazyApiHelper.hostConfig.userID)
}
registerActivityLifecycleCallbacks(this)
setupRealm()

View file

@ -8,7 +8,7 @@ import com.habitrpg.android.habitica.R
import com.habitrpg.android.habitica.api.ApiService
import com.habitrpg.android.habitica.api.GSonFactoryCreator
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.models.Achievement
import com.habitrpg.android.habitica.models.ContentResult
@ -333,7 +333,7 @@ class ApiClientImpl(
this.hostConfig.userID = userID ?: ""
this.hostConfig.apiKey = apiToken ?: ""
analyticsManager.setUserIdentifier(this.hostConfig.userID)
AmplitudeManager.setUserID(hostConfig.userID)
Analytics.setUserID(hostConfig.userID)
}
override suspend fun getStatus(): Status? = process { apiService.getStatus() }

View file

@ -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)
}
}

View file

@ -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)
}
}

View file

@ -7,7 +7,9 @@ import androidx.core.content.edit
import com.google.firebase.messaging.FirebaseMessaging
import com.google.firebase.messaging.RemoteMessage
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.common.habitica.helpers.launchCatching
import kotlinx.coroutines.MainScope
@ -141,10 +143,10 @@ class PushNotificationManager(
if (remoteMessage.data.containsKey("sendAnalytics")) {
val additionalData = HashMap<String, Any>()
additionalData["identifier"] = remoteMessageIdentifier ?: ""
AmplitudeManager.sendEvent(
Analytics.sendEvent(
"receive notification",
AmplitudeManager.EVENT_CATEGORY_BEHAVIOUR,
AmplitudeManager.EVENT_HITTYPE_EVENT,
EventCategory.BEHAVIOUR,
HitType.EVENT,
additionalData
)
}

View file

@ -12,7 +12,7 @@ import androidx.core.content.ContextCompat
import com.habitrpg.android.habitica.R
import com.habitrpg.android.habitica.databinding.ActivityAdventureGuideBinding
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.ui.viewmodels.MainUserViewModel
import com.habitrpg.common.habitica.extensions.fromHtml
@ -62,7 +62,7 @@ class AdventureGuideActivity : BaseActivity() {
val descriptionText = getString(R.string.adventure_guide_description_new)
binding.descriptionView.setText(descriptionText.fromHtml(), TextView.BufferType.SPANNABLE)
AmplitudeManager.sendNavigationEvent("adventure guide screen")
Analytics.sendNavigationEvent("adventure guide screen")
userViewModel.user.observe(this) {
if (it != null) {

View file

@ -37,8 +37,10 @@ import com.habitrpg.android.habitica.databinding.ActivityLoginBinding
import com.habitrpg.android.habitica.extensions.addCancelButton
import com.habitrpg.android.habitica.extensions.addOkButton
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.EventCategory
import com.habitrpg.android.habitica.helpers.HitType
import com.habitrpg.android.habitica.ui.helpers.dismissKeyboard
import com.habitrpg.android.habitica.ui.viewmodels.AuthenticationViewModel
import com.habitrpg.android.habitica.ui.views.dialogs.HabiticaAlertDialog
@ -292,7 +294,7 @@ class LoginActivity : BaseActivity() {
startSetupActivity()
} else {
startMainActivity()
AmplitudeManager.sendEvent("login", AmplitudeManager.EVENT_CATEGORY_BEHAVIOUR, AmplitudeManager.EVENT_HITTYPE_EVENT)
Analytics.sendEvent("login", EventCategory.BEHAVIOUR, HitType.EVENT)
}
}
}

View file

@ -41,8 +41,10 @@ import com.habitrpg.android.habitica.extensions.hideKeyboard
import com.habitrpg.android.habitica.extensions.observeOnce
import com.habitrpg.android.habitica.extensions.setScaledPadding
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.EventCategory
import com.habitrpg.android.habitica.helpers.HitType
import com.habitrpg.android.habitica.helpers.MainNavigationController
import com.habitrpg.android.habitica.helpers.NotificationOpenHandler
import com.habitrpg.android.habitica.helpers.SoundManager
@ -430,10 +432,10 @@ open class MainActivity : BaseActivity(), SnackbarActivity {
if (intent.hasExtra("sendAnalytics")) {
val additionalData = HashMap<String, Any>()
additionalData["identifier"] = identifier
AmplitudeManager.sendEvent(
Analytics.sendEvent(
"open notification",
AmplitudeManager.EVENT_CATEGORY_BEHAVIOUR,
AmplitudeManager.EVENT_HITTYPE_EVENT,
EventCategory.BEHAVIOUR,
HitType.EVENT,
additionalData
)
}

View file

@ -22,7 +22,9 @@ import com.habitrpg.android.habitica.data.ApiClient
import com.habitrpg.android.habitica.data.InventoryRepository
import com.habitrpg.android.habitica.data.TaskRepository
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.ui.fragments.setup.AvatarSetupFragment
import com.habitrpg.android.habitica.ui.fragments.setup.TaskSetupFragment
@ -83,7 +85,7 @@ class SetupActivity : BaseActivity(), ViewPager.OnPageChangeListener {
}
val additionalData = HashMap<String, Any>()
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
for (language in resources.getStringArray(R.array.LanguageValues)) {
@ -208,7 +210,7 @@ class SetupActivity : BaseActivity(), ViewPager.OnPageChangeListener {
if (completedSetup && !hasCompleted) {
val additionalData = HashMap<String, Any>()
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
lifecycleScope.launchCatching {
userRepository.updateUser("flags.welcomed", true)

View file

@ -8,7 +8,7 @@ import androidx.lifecycle.lifecycleScope
import androidx.viewbinding.ViewBinding
import com.google.android.material.bottomsheet.BottomSheetDialogFragment
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.common.habitica.helpers.launchCatching
import kotlinx.coroutines.delay
@ -39,9 +39,7 @@ abstract class BaseDialogFragment<VB : ViewBinding> : BottomSheetDialogFragment(
container: ViewGroup?,
savedInstanceState: Bundle?
): View? {
val additionalData = HashMap<String, Any>()
additionalData["page"] = this.javaClass.simpleName
AmplitudeManager.sendEvent("navigate", AmplitudeManager.EVENT_CATEGORY_NAVIGATION, AmplitudeManager.EVENT_HITTYPE_PAGEVIEW, additionalData)
Analytics.sendNavigationEvent(this.javaClass.simpleName)
binding = createBinding(inflater, container)
return binding?.root

View file

@ -18,7 +18,7 @@ import com.habitrpg.android.habitica.R
import com.habitrpg.android.habitica.data.UserRepository
import com.habitrpg.android.habitica.databinding.FragmentGemPurchaseBinding
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.PurchaseHandler
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.helpers.ExceptionHandler
import com.habitrpg.common.habitica.helpers.launchCatching
import dagger.hilt.android.AndroidEntryPoint
import kotlinx.coroutines.CoroutineScope
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.launch
import kotlinx.coroutines.withContext
import javax.inject.Inject
import dagger.hilt.android.AndroidEntryPoint
@AndroidEntryPoint
class GemsPurchaseFragment : BaseFragment<FragmentGemPurchaseBinding>() {
@ -111,7 +111,7 @@ class GemsPurchaseFragment : BaseFragment<FragmentGemPurchaseBinding>() {
binding?.promoComposeView?.isVisible = true
}
AmplitudeManager.sendNavigationEvent("gem screen")
Analytics.sendNavigationEvent("gem screen")
}
override fun onResume() {

View file

@ -20,7 +20,7 @@ import com.habitrpg.android.habitica.data.InventoryRepository
import com.habitrpg.android.habitica.data.UserRepository
import com.habitrpg.android.habitica.databinding.FragmentSubscriptionBinding
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.PurchaseHandler
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.helpers.ExceptionHandler
import com.habitrpg.common.habitica.helpers.launchCatching
import dagger.hilt.android.AndroidEntryPoint
import kotlinx.coroutines.CoroutineScope
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.launch
import kotlinx.coroutines.withContext
import javax.inject.Inject
import dagger.hilt.android.AndroidEntryPoint
@AndroidEntryPoint
class SubscriptionFragment : BaseFragment<FragmentSubscriptionBinding>() {
@ -131,7 +131,7 @@ class SubscriptionFragment : BaseFragment<FragmentSubscriptionBinding>() {
}
}
AmplitudeManager.sendNavigationEvent("subscription screen")
Analytics.sendNavigationEvent("subscription screen")
}
override fun onResume() {

View file

@ -55,7 +55,9 @@ import com.habitrpg.android.habitica.R
import com.habitrpg.android.habitica.data.SocialRepository
import com.habitrpg.android.habitica.data.UserRepository
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.members.Member
import com.habitrpg.android.habitica.ui.fragments.BaseFragment
@ -139,7 +141,7 @@ class PartySeekingFragment : BaseFragment<FragmentComposeBinding>() {
override fun 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)
}
}

View file

@ -24,7 +24,9 @@ import com.habitrpg.android.habitica.R
import com.habitrpg.android.habitica.data.TagRepository
import com.habitrpg.android.habitica.databinding.FragmentViewpagerBinding
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.ui.activities.TaskFormActivity
import com.habitrpg.android.habitica.ui.fragments.BaseMainFragment
@ -325,7 +327,7 @@ class TasksFragment : BaseMainFragment<FragmentViewpagerBinding>(), SearchView.O
3 -> TaskType.REWARD
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()
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))) {
AmplitudeManager.sendEvent(
Analytics.sendEvent(
"task created",
AmplitudeManager.EVENT_CATEGORY_BEHAVIOUR,
AmplitudeManager.EVENT_HITTYPE_EVENT
EventCategory.BEHAVIOUR,
HitType.EVENT
)
viewModel.sharedPreferences.edit {
putLong("last_creation_reporting", Date().time)

View file

@ -11,7 +11,9 @@ import com.habitrpg.android.habitica.data.ContentRepository
import com.habitrpg.android.habitica.data.InventoryRepository
import com.habitrpg.android.habitica.data.TaskRepository
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.notifications.PushNotificationManager
import com.habitrpg.android.habitica.models.TutorialStep
@ -146,10 +148,10 @@ class MainActivityViewModel @Inject constructor(
additionalData["eventLabel"] = step.identifier + "-android"
additionalData["eventValue"] = step.identifier ?: ""
additionalData["complete"] = complete
AmplitudeManager.sendEvent(
Analytics.sendEvent(
"tutorial",
AmplitudeManager.EVENT_CATEGORY_BEHAVIOUR,
AmplitudeManager.EVENT_HITTYPE_EVENT,
EventCategory.BEHAVIOUR,
HitType.EVENT,
additionalData
)
}

View file

@ -10,9 +10,11 @@ import com.habitrpg.android.habitica.R
import com.habitrpg.android.habitica.data.TagRepository
import com.habitrpg.android.habitica.data.TaskRepository
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.EventCategory
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.tasks.Task
import com.habitrpg.common.habitica.helpers.ExceptionHandler
@ -116,10 +118,10 @@ class TasksViewModel @Inject constructor(
) { result ->
onResult(result, task.value.toInt())
if (!DateUtils.isToday(sharedPreferences.getLong("last_task_reporting", 0))) {
AmplitudeManager.sendEvent(
Analytics.sendEvent(
"task scored",
AmplitudeManager.EVENT_CATEGORY_BEHAVIOUR,
AmplitudeManager.EVENT_HITTYPE_EVENT
EventCategory.BEHAVIOUR,
HitType.EVENT
)
sharedPreferences.edit {
putLong("last_task_reporting", Date().time)

View file

@ -13,7 +13,9 @@ import androidx.lifecycle.lifecycleScope
import com.habitrpg.android.habitica.R
import com.habitrpg.android.habitica.data.TaskRepository
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.Task
import com.habitrpg.android.habitica.ui.views.dialogs.HabiticaAlertDialog
@ -254,10 +256,10 @@ class YesterdailyDialog private constructor(
val additionalData = HashMap<String, Any>()
additionalData["task count"] = sortedTasks?.size ?: 0
AmplitudeManager.sendEvent(
Analytics.sendEvent(
"show cron",
AmplitudeManager.EVENT_CATEGORY_BEHAVIOUR,
AmplitudeManager.EVENT_HITTYPE_EVENT,
EventCategory.BEHAVIOUR,
HitType.EVENT,
additionalData
)

View file

@ -7,7 +7,9 @@ import android.os.Bundle
import android.widget.RemoteViews
import android.widget.Toast
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.shared.habitica.models.responses.TaskScoringResult
import javax.inject.Inject
@ -89,13 +91,13 @@ abstract class BaseWidgetProvider : AppWidgetProvider() {
super.onEnabled(context)
val additionalData = HashMap<String, Any>()
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) {
val additionalData = HashMap<String, Any>()
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)
}
}

View file

@ -4,7 +4,6 @@ import android.content.Context
import android.os.Bundle
import com.google.firebase.analytics.FirebaseAnalytics
import com.google.firebase.crashlytics.FirebaseCrashlytics
import com.habitrpg.android.habitica.helpers.AmplitudeManager
import com.habitrpg.common.habitica.helpers.AnalyticsManager
class AnalyticsManagerImpl(context: Context) : AnalyticsManager {
@ -17,7 +16,6 @@ class AnalyticsManagerImpl(context: Context) : AnalyticsManager {
override fun setUserIdentifier(identifier: String) {
FirebaseCrashlytics.getInstance().setUserId(identifier)
AmplitudeManager.amplitude.setUserId(identifier)
}
override fun setUserProperty(identifier: String, value: String) {