diff --git a/build.gradle.kts b/build.gradle.kts index 08dcc61..c0ca521 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -12,7 +12,7 @@ plugins { } group = "com.myunidays" -version = "0.0.2" +version = "0.0.3" val frameworkName = "segmenkt" val ktor_version = "1.6.6" diff --git a/segmenkt.podspec b/segmenkt.podspec index 8a8ccc1..fb68f3f 100644 --- a/segmenkt.podspec +++ b/segmenkt.podspec @@ -1,6 +1,6 @@ Pod::Spec.new do |spec| spec.name = 'segmenkt' - spec.version = '0.0.2' + spec.version = '0.0.3' spec.homepage = 'Link to a Kotlin/Native module homepage' spec.source = { :git => "Not Published", :tag => "Cocoapods/#{spec.name}/#{spec.version}" } spec.authors = '' diff --git a/src/androidMain/kotlin/com/myunidays/segmenkt/Analytics.kt b/src/androidMain/kotlin/com/myunidays/segmenkt/Analytics.kt index 35c561a..8cd5122 100644 --- a/src/androidMain/kotlin/com/myunidays/segmenkt/Analytics.kt +++ b/src/androidMain/kotlin/com/myunidays/segmenkt/Analytics.kt @@ -1,6 +1,7 @@ package com.myunidays.segmenkt import android.content.Context +import com.segment.analytics.Options import com.segment.analytics.Properties import com.segment.analytics.Traits import java.util.concurrent.TimeUnit @@ -29,19 +30,32 @@ actual class Analytics internal constructor(val android: com.segment.analytics.A Log() } - actual fun alias(userId: String) = android.alias(userId) + actual fun alias(userId: String, options: Map?) = + android.alias( + userId, + Options().apply { + options?.forEach { property -> + (property.key as? String)?.let { putContext(it, property.value) } + } + } + ).also { Log.d("Segment: Alias $userId $options") } - actual fun track(name: String, properties: Map?) = + actual fun track(name: String, properties: Map?, options: Map?) = android.track( name, Properties().apply { properties?.forEach { property -> (property.key as? String)?.let { putValue(it, property.value) } } + }, + Options().apply { + options?.forEach { property -> + (property.key as? String)?.let { putContext(it, property.value) } + } } - ).also { Log.d("Segment: Track $name: $properties") } + ).also { Log.d("Segment: Track $name: $properties $options") } - actual fun identify(userId: String, traits: Map?) = + actual fun identify(userId: String, traits: Map?, options: Map?) = android.identify( userId, Traits().apply { @@ -49,32 +63,46 @@ actual class Analytics internal constructor(val android: com.segment.analytics.A (trait.key as? String)?.let { putValue(it, trait.value) } } }, - null - ) - .also { Log.d("Segment: Identify $userId: $traits") } + Options().apply { + options?.forEach { property -> + (property.key as? String)?.let { putContext(it, property.value) } + } + } + ).also { Log.d("Segment: Identify $userId: $traits $options") } actual fun screen( screenTitle: String, - properties: Map? + properties: Map?, + options: Map? ) = android.screen( + null, screenTitle, Properties().apply { properties?.forEach { property -> (property.key as? String)?.let { putValue(it, property.value) } } + }, + Options().apply { + options?.forEach { property -> + (property.key as? String)?.let { putContext(it, property.value) } + } } - ).also { Log.d("Segment: Screen $screenTitle: $properties") } + ).also { Log.d("Segment: Screen $screenTitle: $properties $options") } - actual fun group(groupId: String, traits: Map?) = + actual fun group(groupId: String, traits: Map?, options: Map?) = android.group( groupId, Traits().apply { traits?.forEach { trait -> (trait.key as? String)?.let { putValue(it, trait.value) } } + }, + Options().apply { + options?.forEach { property -> + (property.key as? String)?.let { putContext(it, property.value) } + } } - ) - .also { Log.d("Segment: Group $groupId: $traits") } + ).also { Log.d("Segment: Group $groupId: $traits") } actual fun reset() { android.reset() diff --git a/src/commonMain/kotlin/com.myunidays.segmenkt/Analytics.kt b/src/commonMain/kotlin/com.myunidays.segmenkt/Analytics.kt index ffa5a8c..c33ee12 100644 --- a/src/commonMain/kotlin/com.myunidays.segmenkt/Analytics.kt +++ b/src/commonMain/kotlin/com.myunidays.segmenkt/Analytics.kt @@ -7,11 +7,11 @@ expect class Analytics { fun shared(context: Any? = null): Analytics } - fun track(name: String, properties: Map? = null) - fun identify(userId: String, traits: Map? = null) - fun alias(userId: String) - fun screen(screenTitle: String, properties: Map? = null) - fun group(groupId: String, traits: Map? = null) + fun track(name: String, properties: Map? = null, options: Map? = null) + fun identify(userId: String, traits: Map? = null, options: Map? = null) + fun alias(userId: String, options: Map? = null) + fun screen(screenTitle: String, properties: Map? = null, options: Map? = null) + fun group(groupId: String, traits: Map? = null, options: Map? = null) fun reset() } diff --git a/src/iosMain/kotlin/com.myunidays.segmenkt/Analytics.kt b/src/iosMain/kotlin/com.myunidays.segmenkt/Analytics.kt index 4af73fe..dcb6d06 100644 --- a/src/iosMain/kotlin/com.myunidays.segmenkt/Analytics.kt +++ b/src/iosMain/kotlin/com.myunidays.segmenkt/Analytics.kt @@ -21,22 +21,24 @@ actual class Analytics internal constructor(val ios: cocoapods.Analytics.SEGAnal Log() } - actual fun alias(userId: String) = ios.alias(userId) + actual fun alias(userId: String, options: Map?) = ios.alias(userId, options?.let { mapOf("context" to it) }) + .also { Log.d("Segment: Alias $userId: $options") } - actual fun track(name: String, properties: Map?) = ios.track(name, properties) - .also { Log.d("Segment: Track $name: $properties") } + actual fun track(name: String, properties: Map?, options: Map?) = ios.track(name, properties, options?.let { mapOf("context" to it) }) + .also { Log.d("Segment: Track $name: $properties $options") } - actual fun identify(userId: String, traits: Map?) = ios.identify(userId, traits) - .also { Log.d("Segment: Identify $userId: $traits") } + actual fun identify(userId: String, traits: Map?, options: Map?) = ios.identify(userId, traits, options?.let { mapOf("context" to it) }) + .also { Log.d("Segment: Identify $userId: $traits $options") } actual fun screen( screenTitle: String, - properties: Map? - ) = ios.screen(screenTitle, properties) - .also { Log.d("Segment: Screen $screenTitle: $properties") } + properties: Map?, + options: Map? + ) = ios.screen(screenTitle, properties, options?.let { mapOf("context" to it) }) + .also { Log.d("Segment: Screen $screenTitle: $properties $options") } - actual fun group(groupId: String, traits: Map?) = ios.group(groupId, traits) - .also { Log.d("Segment: Group $groupId: $traits") } + actual fun group(groupId: String, traits: Map?, options: Map?) = ios.group(groupId, traits, options?.let { mapOf("context" to it) }) + .also { Log.d("Segment: Group $groupId: $traits $options") } actual fun reset() { ios.reset().also { Log.d("Segment: Reset") }