Skip to content

Instantly share code, notes, and snippets.

@saqib-github-commits
Created January 18, 2024 19:27
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save saqib-github-commits/16c9a4855fb5aaaea620150deef747c5 to your computer and use it in GitHub Desktop.
Save saqib-github-commits/16c9a4855fb5aaaea620150deef747c5 to your computer and use it in GitHub Desktop.
// AnalyticsLogger interface
interface AnalyticsLogger {
fun logEvent(name: String, params: List<AnalyticsParam>)
}
data class AnalyticsParam(val name: String, val value: String)
// extension method to log screen visit event
fun AnalyticsLogger.logScreenVisited(screenName: String) {
logEvent("screenViewed", listOf(
AnalyticsParam("screen_name", screenName)
))
}
// DummyAnalyticsLogger
// Its created to provide default value to the CompositionLocal
class DummyAnalyticsLogger: AnalyticsLogger {
override fun logEvent(name: String, params: List<AnalyticsParam>) = Unit
}
// Actual Implementation for logging analytics, It will be bind using Hilt
class AnalyticsLoggerImpl @Inject constructor(
) : AnalyticsLogger {
override fun logEvent(name: String, params: List<AnalyticsParam>) {
// actual implementation via firebase or newrelic or any other
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment