/
MatomoAnalytics.kt
54 lines (46 loc) 路 2 KB
/
MatomoAnalytics.kt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
package openfoodfacts.github.scrachx.openfood.analytics
import androidx.fragment.app.FragmentManager
import androidx.preference.PreferenceManager
import openfoodfacts.github.scrachx.openfood.BuildConfig
import openfoodfacts.github.scrachx.openfood.R
import openfoodfacts.github.scrachx.openfood.app.OFFApplication
import openfoodfacts.github.scrachx.openfood.features.analyticsusage.AnalyticsUsageDialogFragment
import org.matomo.sdk.Matomo
import org.matomo.sdk.TrackerBuilder
import org.matomo.sdk.extra.TrackHelper
object MatomoAnalytics {
//TODO: change matomo url and id from properties
private val tracker = TrackerBuilder
.createDefault(BuildConfig.MATOMO_URL, 1)
.build(Matomo.getInstance(OFFApplication._instance))
.apply {
isOptOut = PreferenceManager.getDefaultSharedPreferences(OFFApplication._instance)
.getBoolean(OFFApplication._instance.getString(R.string.pref_analytics_reporting_key), false)
}
.also {
TrackHelper.track().download().with(it)
}
fun trackView(view: AnalyticsView) {
TrackHelper.track()
.screen(view.path)
.with(tracker)
}
fun trackEvent(event: AnalyticsEvent) {
TrackHelper.track()
.event(event.category, event.action)
.name(event.name)
.value(event.value)
.with(tracker)
}
fun showAnalyticsBottomSheetIfNeeded(childFragmentManager: FragmentManager) {
if (PreferenceManager.getDefaultSharedPreferences(OFFApplication._instance).contains(OFFApplication._instance.getString(R.string.pref_analytics_reporting_key))) {
//key already exists, do not show
return
}
val bottomSheet = AnalyticsUsageDialogFragment()
bottomSheet.show(childFragmentManager, AnalyticsUsageDialogFragment.TAG)
}
fun onAnalyticsEnabledToggled(enabled: Boolean) {
tracker.isOptOut = !enabled
}
}