Skip to content

Commit 3861ba1

Browse files
author
Bas Buijsen
committed
support more types for logging events
1 parent 65ab6cc commit 3861ba1

File tree

5 files changed

+42
-18
lines changed

5 files changed

+42
-18
lines changed

firebase-analytics/src/androidMain/kotlin/dev/gitlive/firebase/analytics/analytics.kt

Lines changed: 18 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,21 @@
11
package dev.gitlive.firebase.analytics
22

33
import android.os.Bundle
4+
import android.os.IBinder
5+
import android.os.Parcelable
6+
import android.util.Size
7+
import android.util.SizeF
48
import com.google.firebase.analytics.analytics
59
import com.google.firebase.analytics.setConsent
610
import dev.gitlive.firebase.Firebase
711
import kotlinx.coroutines.tasks.await
12+
import java.io.Serializable
813

914
actual val Firebase.analytics: FirebaseAnalytics
1015
get() = FirebaseAnalytics(com.google.firebase.Firebase.analytics)
1116

1217
actual class FirebaseAnalytics(val android: com.google.firebase.analytics.FirebaseAnalytics) {
13-
actual fun logEvent(name: String, parameters: Map<String, String>?) {
18+
actual fun logEvent(name: String, parameters: Map<String, Any>?) {
1419
android.logEvent(name, parameters?.toBundle())
1520
}
1621
actual fun setUserProperty(name: String, value: String) {
@@ -79,6 +84,15 @@ actual class FirebaseAnalytics(val android: com.google.firebase.analytics.Fireba
7984

8085
actual class FirebaseAnalyticsException(message: String): Exception(message)
8186

82-
fun Map<String, String>.toBundle() = Bundle().apply {
83-
forEach { (key, value) -> putString(key, value) }
84-
}
87+
fun Map<String, Any>.toBundle() = Bundle().apply {
88+
forEach { (key, value) ->
89+
when(value::class) {
90+
String::class -> putString(key, value as String)
91+
Int::class -> putInt(key, value as Int)
92+
Long::class -> putLong(key, value as Long)
93+
Double::class -> putDouble(key, value as Double)
94+
Boolean::class -> putBoolean(key, value as Boolean)
95+
}
96+
97+
}
98+
}

firebase-analytics/src/commonMain/kotlin/dev/gitlive/firebase/analytics/analytics.kt

Lines changed: 18 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ import dev.gitlive.firebase.Firebase
55
expect val Firebase.analytics: FirebaseAnalytics
66

77
expect class FirebaseAnalytics {
8-
fun logEvent(name: String, parameters: Map<String, String>? = null)
8+
fun logEvent(name: String, parameters: Map<String, Any>? = null)
99
fun setUserProperty(name: String, value: String)
1010
fun setUserId(id: String)
1111
fun setAnalyticsCollectionEnabled(enabled: Boolean)
@@ -43,11 +43,27 @@ fun FirebaseAnalytics.logEvent(name: String, builder: FirebaseAnalyticsParameter
4343
expect class FirebaseAnalyticsException
4444

4545
data class FirebaseAnalyticsParameters(
46-
val parameters: MutableMap<String, String> = mutableMapOf()
46+
val parameters: MutableMap<String, Any> = mutableMapOf()
4747
) {
4848
fun param(key: String, value: String) {
4949
parameters[key] = value
5050
}
51+
52+
fun param(key: String, value: Double) {
53+
parameters[key] = value
54+
}
55+
56+
fun param(key: String, value: Long) {
57+
parameters[key] = value
58+
}
59+
60+
fun param(key: String, value: Int) {
61+
parameters[key] = value
62+
}
63+
64+
fun param(key: String, value: Boolean) {
65+
parameters[key] = value
66+
}
5167
}
5268

5369
data class FirebaseAnalyticsConsentBuilder(

firebase-analytics/src/iosMain/kotlin/dev/gitlive/firebase/analytics/analytics.kt

Lines changed: 4 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -12,10 +12,8 @@ actual val Firebase.analytics: FirebaseAnalytics
1212
get() = FirebaseAnalytics(FIRAnalytics)
1313

1414
actual class FirebaseAnalytics(val ios: FIRAnalytics.Companion) {
15-
actual fun logEvent(name: String, parameters: Map<String, String>?) {
16-
val mappedParameters: Map<Any?, String>? = parameters?.map {
17-
it.key to it.value
18-
}?.toMap()
15+
actual fun logEvent(name: String, parameters: Map<String, Any>?) {
16+
val mappedParameters: Map<Any?, Any>? = parameters?.map { it.key to it.value }?.toMap()
1917
ios.logEventWithName(name, mappedParameters)
2018
}
2119
actual fun setUserProperty(name: String, value: String) {
@@ -39,16 +37,12 @@ actual class FirebaseAnalytics(val ios: FIRAnalytics.Companion) {
3937
actual suspend fun getSessionId(): Long? = ios.awaitResult { sessionIDWithCompletion(it) }
4038

4139
actual fun setDefaultEventParameters(parameters: Map<String, String>) {
42-
val mappedParameters: Map<Any?, String> = parameters.map {
43-
it.key to it.value
44-
}.toMap()
40+
val mappedParameters: Map<Any?, String> = parameters.map { it.key to it.value }.toMap()
4541
ios.setDefaultEventParameters(mappedParameters)
4642
}
4743

4844
actual fun setConsent(consentSettings: Map<ConsentType, ConsentStatus>) {
49-
val mappedConsentSettings: Map<Any?, *> = consentSettings.map {
50-
it.key.name to it.value.name
51-
}.toMap()
45+
val mappedConsentSettings: Map<Any?, *> = consentSettings.map { it.key.name to it.value.name }.toMap()
5246
ios.setConsent(mappedConsentSettings)
5347
}
5448

firebase-analytics/src/jsMain/kotlin/dev/gitlive/firebase/analytics/analytics.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ actual val Firebase.analytics: FirebaseAnalytics
1111
actual class FirebaseAnalytics(val js: dev.gitlive.firebase.analytics.externals.FirebaseAnalytics) {
1212
actual fun logEvent(
1313
name: String,
14-
parameters: Map<String, String>?
14+
parameters: Map<String, Any>?
1515
) {
1616
dev.gitlive.firebase.analytics.externals.logEvent(js, name, parameters)
1717
}

firebase-analytics/src/jsMain/kotlin/dev/gitlive/firebase/analytics/externals/analytics.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ import kotlin.js.Promise
66

77
external fun getAnalytics(app: FirebaseApp? = definedExternally): FirebaseAnalytics
88

9-
external fun logEvent(app: FirebaseAnalytics, name: String, parameters: Map<String, String>?)
9+
external fun logEvent(app: FirebaseAnalytics, name: String, parameters: Map<String, Any>?)
1010
external fun setUserProperty(app: FirebaseAnalytics, name: String, value: String)
1111
external fun setUserId(app: FirebaseAnalytics, id: String)
1212
external fun resetAnalyticsData(app: FirebaseAnalytics)

0 commit comments

Comments
 (0)