1
0
Fork 0

Don't use the not-really-public EventMetricType

master
Michael Droettboom 2019-04-02 08:31:30 -04:00 committed by Emily Kager
parent f9c791c93b
commit fd7dcf36cf
1 changed files with 19 additions and 8 deletions

View File

@ -4,7 +4,6 @@
package org.mozilla.fenix.components.metrics
import android.content.Context
import mozilla.components.service.glean.metrics.EventMetricType
import mozilla.components.service.glean.Glean
import mozilla.components.support.utils.Browsers
import org.mozilla.fenix.BuildConfig
@ -13,8 +12,8 @@ import org.mozilla.fenix.GleanMetrics.Metrics
import org.mozilla.fenix.GleanMetrics.Events
private class EventWrapper<T : Enum<T>>(
private val event: EventMetricType<T>,
private val keyMapper: ((String) -> T)? = null
private val recorder: ((Map<T, String>?) -> Unit),
private val keyMapper: ((String) -> T)?
) {
private val String.asCamelCase: String
get() = this.split("_").reduceIndexed { index, acc, s ->
@ -29,16 +28,28 @@ private class EventWrapper<T : Enum<T>>(
null
}
this.event.record(extras)
this.recorder(extras)
}
}
private val Event.wrapper
get() = when (this) {
is Event.OpenedApp -> EventWrapper(Events.appOpened) { Events.appOpenedKeys.valueOf(it) }
is Event.SearchBarTapped -> EventWrapper(Events.searchBarTapped) { Events.searchBarTappedKeys.valueOf(it) }
is Event.EnteredUrl -> EventWrapper(Events.enteredUrl) { Events.enteredUrlKeys.valueOf(it) }
is Event.PerformedSearch -> EventWrapper(Events.performedSearch) { Events.performedSearchKeys.valueOf(it) }
is Event.OpenedApp -> EventWrapper(
{ Events.appOpened.record(it) },
{ Events.appOpenedKeys.valueOf(it) }
)
is Event.SearchBarTapped -> EventWrapper(
{ Events.searchBarTapped.record(it) },
{ Events.searchBarTappedKeys.valueOf(it) }
)
is Event.EnteredUrl -> EventWrapper(
{ Events.enteredUrl.record(it) },
{ Events.enteredUrlKeys.valueOf(it) }
)
is Event.PerformedSearch -> EventWrapper(
{ Events.performedSearch.record(it) },
{ Events.performedSearchKeys.valueOf(it) }
)
else -> null
}