Skip to content

Commit 459d012

Browse files
committed
update logic for track event example
1 parent 2c20523 commit 459d012

5 files changed

Lines changed: 48 additions & 23 deletions

File tree

Examples/OneSignalDemoV2/app/src/main/java/com/onesignal/sdktest/data/repository/OneSignalRepository.kt

Lines changed: 2 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -142,13 +142,8 @@ class OneSignalRepository {
142142
}
143143

144144
// Track Event
145-
fun trackEvent(name: String, value: String?) {
146-
Log.d(TAG, "Tracking event: $name with value: $value")
147-
val properties: Map<String, Any?>? = if (!value.isNullOrEmpty()) {
148-
mapOf("value" to value)
149-
} else {
150-
null
151-
}
145+
fun trackEvent(name: String, properties: Map<String, Any?>?) {
146+
Log.d(TAG, "Tracking event: $name with properties: $properties")
152147
OneSignal.User.trackEvent(name, properties)
153148
}
154149

Examples/OneSignalDemoV2/app/src/main/java/com/onesignal/sdktest/ui/main/MainActivity.kt

Lines changed: 38 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@ import android.widget.LinearLayout
1717
import android.widget.Spinner
1818
import android.widget.TextView
1919
import android.widget.Toast
20+
import org.json.JSONObject
2021
import androidx.activity.viewModels
2122
import androidx.appcompat.app.AlertDialog
2223
import androidx.appcompat.app.AppCompatActivity
@@ -614,24 +615,50 @@ class MainActivity : AppCompatActivity() {
614615
private fun showTrackEventDialog() {
615616
val dialogView = layoutInflater.inflate(R.layout.dialog_add_pair, null)
616617
val etName = dialogView.findViewById<EditText>(R.id.et_key)
617-
val etValue = dialogView.findViewById<EditText>(R.id.et_value)
618+
val etProperties = dialogView.findViewById<EditText>(R.id.et_value)
618619

619-
// Update hints for track event context
620-
etName.hint = getString(R.string.event_name)
621-
etValue.hint = getString(R.string.event_value)
620+
dialogView.findViewById<TextView>(R.id.tv_key_label).text = getString(R.string.event_name)
621+
dialogView.findViewById<TextView>(R.id.tv_value_label).text = getString(R.string.event_properties)
622+
etProperties.hint = getString(R.string.event_properties_placeholder)
622623

623-
AlertDialog.Builder(this, R.style.AlertDialogTheme)
624+
val dialog = AlertDialog.Builder(this, R.style.AlertDialogTheme)
624625
.setTitle(R.string.track_event)
625626
.setView(dialogView)
626-
.setPositiveButton(R.string.send) { _, _ ->
627+
.setPositiveButton(R.string.send, null)
628+
.setNegativeButton(R.string.cancel, null)
629+
.create()
630+
631+
dialog.setOnShowListener {
632+
dialog.getButton(AlertDialog.BUTTON_POSITIVE).setOnClickListener {
627633
val name = etName.text.toString().trim()
628-
val value = etValue.text.toString().trim()
629-
if (name.isNotEmpty()) {
630-
viewModel.trackEvent(name, value.ifEmpty { null })
634+
val propsText = etProperties.text.toString().trim()
635+
636+
if (name.isEmpty()) {
637+
etName.error = "Required"
638+
return@setOnClickListener
631639
}
640+
641+
var properties: Map<String, Any?>? = null
642+
if (propsText.isNotEmpty()) {
643+
try {
644+
val json = JSONObject(propsText)
645+
val map = mutableMapOf<String, Any?>()
646+
for (key in json.keys()) {
647+
map[key] = json.get(key)
648+
}
649+
properties = map
650+
} catch (e: Exception) {
651+
etProperties.error = "Invalid JSON"
652+
return@setOnClickListener
653+
}
654+
}
655+
656+
viewModel.trackEvent(name, properties)
657+
dialog.dismiss()
632658
}
633-
.setNegativeButton(R.string.cancel, null)
634-
.show()
659+
}
660+
661+
dialog.show()
635662
}
636663

637664
private fun showCustomNotificationDialog() {

Examples/OneSignalDemoV2/app/src/main/java/com/onesignal/sdktest/ui/main/MainViewModel.kt

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -568,12 +568,12 @@ class MainViewModel(application: Application) : AndroidViewModel(application), I
568568
}
569569

570570
// Track Event
571-
fun trackEvent(name: String, value: String?) {
571+
fun trackEvent(name: String, properties: Map<String, Any?>?) {
572572
viewModelScope.launch(Dispatchers.IO) {
573-
repository.trackEvent(name, value)
573+
repository.trackEvent(name, properties)
574574
withContext(Dispatchers.Main) {
575-
val message = if (!value.isNullOrEmpty()) {
576-
"Event tracked: $name = $value"
575+
val message = if (!properties.isNullOrEmpty()) {
576+
"Event tracked: $name with properties"
577577
} else {
578578
"Event tracked: $name"
579579
}

Examples/OneSignalDemoV2/app/src/main/res/layout/dialog_add_pair.xml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
android:padding="16dp">
77

88
<TextView
9+
android:id="@+id/tv_key_label"
910
android:layout_width="wrap_content"
1011
android:layout_height="wrap_content"
1112
android:text="@string/key"
@@ -25,6 +26,7 @@
2526
android:hint=""/>
2627

2728
<TextView
29+
android:id="@+id/tv_value_label"
2830
android:layout_width="wrap_content"
2931
android:layout_height="wrap_content"
3032
android:text="@string/value"

Examples/OneSignalDemoV2/app/src/main/res/values/strings.xml

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -86,7 +86,8 @@
8686
<string name="track_event">Track Event</string>
8787
<string name="track_event_button">TRACK EVENT</string>
8888
<string name="event_name">Event Name</string>
89-
<string name="event_value">Event Value (optional)</string>
89+
<string name="event_properties">Properties (optional)</string>
90+
<string name="event_properties_placeholder">{\"ABC\":123}</string>
9091

9192
<!-- Location -->
9293
<string name="location">Location</string>

0 commit comments

Comments
 (0)