mirror of
https://github.com/sudoxnym/habitica-android.git
synced 2026-05-21 05:09:00 +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.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()
|
||||
|
|
|
|||
|
|
@ -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() }
|
||||
|
|
|
|||
|
|
@ -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.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
|
||||
)
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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) {
|
||||
|
|
|
|||
|
|
@ -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)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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
|
||||
)
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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)
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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() {
|
||||
|
|
|
|||
|
|
@ -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() {
|
||||
|
|
|
|||
|
|
@ -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)
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -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)
|
||||
|
|
|
|||
|
|
@ -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
|
||||
)
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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)
|
||||
|
|
|
|||
|
|
@ -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
|
||||
)
|
||||
|
||||
|
|
|
|||
|
|
@ -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)
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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) {
|
||||
|
|
|
|||
Loading…
Reference in a new issue