From 6ca5e11371e65b27d16effd6582cce4c1aa4d64a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Rafa=C5=82=20Borcz?= Date: Sun, 6 Dec 2020 19:31:35 +0100 Subject: [PATCH] Fix HMS analytics and crashlytics (#1042) --- .../io/github/wulkanowy/utils/AnalyticsHelper.kt | 4 ++++ .../io/github/wulkanowy/utils/AnalyticsHelper.kt | 9 +++++---- .../io/github/wulkanowy/utils/CrashLogUtils.kt | 4 ++-- .../wulkanowy/ui/base/BaseDialogFragment.kt | 15 +++++++++++++++ .../wulkanowy/ui/modules/main/MainActivity.kt | 14 ++++++++------ .../wulkanowy/ui/modules/main/MainPresenter.kt | 3 +-- .../github/wulkanowy/ui/modules/main/MainView.kt | 2 -- .../io/github/wulkanowy/utils/AnalyticsHelper.kt | 4 ++++ 8 files changed, 39 insertions(+), 16 deletions(-) diff --git a/app/src/fdroid/java/io/github/wulkanowy/utils/AnalyticsHelper.kt b/app/src/fdroid/java/io/github/wulkanowy/utils/AnalyticsHelper.kt index 0cd9a52e..3bf7e169 100644 --- a/app/src/fdroid/java/io/github/wulkanowy/utils/AnalyticsHelper.kt +++ b/app/src/fdroid/java/io/github/wulkanowy/utils/AnalyticsHelper.kt @@ -15,4 +15,8 @@ class AnalyticsHelper @Inject constructor() { fun setCurrentScreen(activity: Activity, name: String?) { // do nothing } + + fun popCurrentScreen(name: String?) { + // do nothing + } } diff --git a/app/src/hms/java/io/github/wulkanowy/utils/AnalyticsHelper.kt b/app/src/hms/java/io/github/wulkanowy/utils/AnalyticsHelper.kt index b3cecf24..5d33825f 100644 --- a/app/src/hms/java/io/github/wulkanowy/utils/AnalyticsHelper.kt +++ b/app/src/hms/java/io/github/wulkanowy/utils/AnalyticsHelper.kt @@ -30,9 +30,10 @@ class AnalyticsHelper @Inject constructor( } fun setCurrentScreen(activity: Activity, name: String?) { - analytics.onEvent("screen_view", Bundle().apply { - putString("screen_name", name) - putString("screen_class", activity::class.simpleName) - }) + analytics.pageStart(name, activity::class.simpleName) + } + + fun popCurrentScreen(name: String?) { + analytics.pageEnd(name) } } diff --git a/app/src/hms/java/io/github/wulkanowy/utils/CrashLogUtils.kt b/app/src/hms/java/io/github/wulkanowy/utils/CrashLogUtils.kt index 8adf2b29..60588f63 100644 --- a/app/src/hms/java/io/github/wulkanowy/utils/CrashLogUtils.kt +++ b/app/src/hms/java/io/github/wulkanowy/utils/CrashLogUtils.kt @@ -44,9 +44,9 @@ class CrashLogExceptionTree : FormatterPriorityTree(Log.ERROR) { connectCrash.setCustomKey("message", message) if (t != null) { - connectCrash.log(priority, t.stackTraceToString()) + connectCrash.recordException(t) } else { - connectCrash.log(priority, StackTraceRecorder(format(priority, tag, message)).stackTraceToString()) + connectCrash.recordException(StackTraceRecorder(format(priority, tag, message))) } } } diff --git a/app/src/main/java/io/github/wulkanowy/ui/base/BaseDialogFragment.kt b/app/src/main/java/io/github/wulkanowy/ui/base/BaseDialogFragment.kt index 18cd58b4..1c31976e 100644 --- a/app/src/main/java/io/github/wulkanowy/ui/base/BaseDialogFragment.kt +++ b/app/src/main/java/io/github/wulkanowy/ui/base/BaseDialogFragment.kt @@ -3,10 +3,15 @@ package io.github.wulkanowy.ui.base import android.widget.Toast import androidx.fragment.app.DialogFragment import androidx.viewbinding.ViewBinding +import io.github.wulkanowy.utils.AnalyticsHelper import io.github.wulkanowy.utils.lifecycleAwareVariable +import javax.inject.Inject abstract class BaseDialogFragment : DialogFragment(), BaseView { + @Inject + lateinit var analyticsHelper: AnalyticsHelper + protected var binding: VB by lifecycleAwareVariable() override fun showError(text: String, error: Throwable) { @@ -28,4 +33,14 @@ abstract class BaseDialogFragment : DialogFragment(), BaseView override fun showErrorDetailsDialog(error: Throwable) { ErrorDialog.newInstance(error).show(childFragmentManager, error.toString()) } + + override fun onResume() { + super.onResume() + analyticsHelper.setCurrentScreen(requireActivity(), this::class.simpleName) + } + + override fun onPause() { + super.onPause() + analyticsHelper.popCurrentScreen(this::class.simpleName) + } } diff --git a/app/src/main/java/io/github/wulkanowy/ui/modules/main/MainActivity.kt b/app/src/main/java/io/github/wulkanowy/ui/modules/main/MainActivity.kt index 245f3b16..25b41aab 100644 --- a/app/src/main/java/io/github/wulkanowy/ui/modules/main/MainActivity.kt +++ b/app/src/main/java/io/github/wulkanowy/ui/modules/main/MainActivity.kt @@ -38,8 +38,8 @@ import io.github.wulkanowy.ui.modules.message.MessageFragment import io.github.wulkanowy.ui.modules.more.MoreFragment import io.github.wulkanowy.ui.modules.note.NoteFragment import io.github.wulkanowy.ui.modules.timetable.TimetableFragment -import io.github.wulkanowy.utils.AppInfo import io.github.wulkanowy.utils.AnalyticsHelper +import io.github.wulkanowy.utils.AppInfo import io.github.wulkanowy.utils.UpdateHelper import io.github.wulkanowy.utils.dpToPx import io.github.wulkanowy.utils.getThemeAttrColor @@ -182,7 +182,10 @@ class MainActivity : BaseActivity(), MainVie } with(navController) { - setOnViewChangeListener(presenter::onViewChange) + setOnViewChangeListener { section, name -> + analytics.setCurrentScreen(this@MainActivity, name) + presenter.onViewChange(section) + } fragmentHideStrategy = HIDE rootFragments = listOf( GradeFragment.newInstance(), @@ -194,10 +197,6 @@ class MainActivity : BaseActivity(), MainVie } } - override fun setCurrentScreen(name: String?) { - analytics.setCurrentScreen(this, name) - } - override fun onOptionsItemSelected(item: MenuItem): Boolean { return if (item.itemId == R.id.mainMenuAccount) presenter.onAccountManagerSelected() else false @@ -208,6 +207,7 @@ class MainActivity : BaseActivity(), MainVie } override fun switchMenuView(position: Int) { + analytics.popCurrentScreen(navController.currentFrag!!::class.simpleName) navController.switchTab(position) } @@ -245,10 +245,12 @@ class MainActivity : BaseActivity(), MainVie } fun pushView(fragment: Fragment) { + analytics.popCurrentScreen(navController.currentFrag!!::class.simpleName) navController.pushFragment(fragment) } override fun popView(depth: Int) { + analytics.popCurrentScreen(navController.currentFrag!!::class.simpleName) navController.safelyPopFragments(depth) } diff --git a/app/src/main/java/io/github/wulkanowy/ui/modules/main/MainPresenter.kt b/app/src/main/java/io/github/wulkanowy/ui/modules/main/MainPresenter.kt index 7ea8197e..cc525c29 100644 --- a/app/src/main/java/io/github/wulkanowy/ui/modules/main/MainPresenter.kt +++ b/app/src/main/java/io/github/wulkanowy/ui/modules/main/MainPresenter.kt @@ -35,9 +35,8 @@ class MainPresenter @Inject constructor( analytics.logEvent("app_open", "destination" to initMenu?.name) } - fun onViewChange(section: MainView.Section?, name: String?) { + fun onViewChange(section: MainView.Section?) { view?.apply { - setCurrentScreen(name) showActionBarElevation(section != GRADE && section != MESSAGE && section != SCHOOL) currentViewTitle?.let { setViewTitle(it) } currentViewSubtitle?.let { setViewSubTitle(it.ifBlank { null }) } diff --git a/app/src/main/java/io/github/wulkanowy/ui/modules/main/MainView.kt b/app/src/main/java/io/github/wulkanowy/ui/modules/main/MainView.kt index 7e583147..97b556e3 100644 --- a/app/src/main/java/io/github/wulkanowy/ui/modules/main/MainView.kt +++ b/app/src/main/java/io/github/wulkanowy/ui/modules/main/MainView.kt @@ -24,8 +24,6 @@ interface MainView : BaseView { fun showAccountPicker() - fun setCurrentScreen(name: String?) - fun showActionBarElevation(show: Boolean) fun notifyMenuViewReselected() diff --git a/app/src/play/java/io/github/wulkanowy/utils/AnalyticsHelper.kt b/app/src/play/java/io/github/wulkanowy/utils/AnalyticsHelper.kt index 8897f180..ba29e1cb 100644 --- a/app/src/play/java/io/github/wulkanowy/utils/AnalyticsHelper.kt +++ b/app/src/play/java/io/github/wulkanowy/utils/AnalyticsHelper.kt @@ -35,4 +35,8 @@ class AnalyticsHelper @Inject constructor( putString(FirebaseAnalytics.Param.SCREEN_CLASS, activity::class.simpleName) }) } + + @Suppress("UNUSED_PARAMETER") + fun popCurrentScreen(name: String?) { + } }