11package com.iterable.integration.tests.activities
22
33import android.os.Bundle
4- import android.util.Log
54import android.widget.Button
65import android.widget.Switch
76import android.widget.TextView
87import android.widget.Toast
98import androidx.appcompat.app.AlertDialog
109import androidx.appcompat.app.AppCompatActivity
1110import com.iterable.iterableapi.IterableApi
12- import com.iterable.iterableapi.IterableEmbeddedMessage
1311import com.iterable.integration.tests.R
1412import com.iterable.iterableapi.ui.embedded.IterableEmbeddedView
1513import com.iterable.iterableapi.ui.embedded.IterableEmbeddedViewType
1614import org.json.JSONObject
1715
1816class EmbeddedMessageTestActivity : AppCompatActivity () {
1917
20- companion object {
21- private const val TAG = " EmbeddedMessageTest"
22- }
23-
2418 private lateinit var statusTextView: TextView
2519 private lateinit var checkIsPremiumButton: Button
2620 private lateinit var isPremiumSwitch: Switch
2721 private lateinit var syncMessagesButton: Button
2822
29- // Track current isPremium state locally (since SDK doesn't store it)
30- private var currentIsPremium = false
31-
3223 override fun onCreate (savedInstanceState : Bundle ? ) {
3324 super .onCreate(savedInstanceState)
3425 setContentView(R .layout.activity_embedded_message_test)
3526
36- Log .d(TAG , " Embedded Message Test Activity started" )
37-
3827 initializeViews()
3928 setupClickListeners()
40- updateStatus(" Activity initialized - Ready to test embedded messages" )
29+ updateStatus(" Ready to test embedded messages" )
4130 }
4231
4332 private fun initializeViews () {
4433 statusTextView = findViewById(R .id.status_text)
4534 checkIsPremiumButton = findViewById(R .id.btnCheckIsPremium)
4635 isPremiumSwitch = findViewById(R .id.switchIsPremium)
4736 syncMessagesButton = findViewById(R .id.btnSyncMessages)
48-
49- // Initialize switch to false
50- isPremiumSwitch.isChecked = currentIsPremium
5137 }
5238
5339 private fun setupClickListeners () {
@@ -65,60 +51,40 @@ class EmbeddedMessageTestActivity : AppCompatActivity() {
6551 }
6652
6753 private fun checkIsPremiumStatus () {
68- updateStatus(" Checking isPremium status..." )
69- Log .d(TAG , " Checking isPremium status" )
70-
71- // Note: SDK doesn't store user data fields locally, so we show an info dialog
7254 AlertDialog .Builder (this )
7355 .setTitle(" isPremium Status" )
7456 .setMessage(" User data fields are stored on the server, not in the SDK.\n\n " +
75- " To check isPremium status, you can :\n " +
57+ " To check isPremium status:\n " +
7658 " 1. Check server logs/dashboard\n " +
7759 " 2. Call server API to get user profile\n " +
7860 " 3. Check logcat for updateUser calls" )
7961 .setPositiveButton(" OK" , null )
8062 .show()
81-
82- Toast .makeText(this , " Check logcat or server dashboard for user data fields" , Toast .LENGTH_LONG ).show()
83- updateStatus(" Status check: See dialog for details" )
8463 }
8564
8665 private fun updateUserIsPremium (isPremium : Boolean ) {
87- currentIsPremium = isPremium
8866 val statusText = if (isPremium) " true" else " false"
89-
9067 updateStatus(" Updating user (isPremium = $statusText )..." )
91- Log .d(TAG , " Updating user with isPremium = $statusText " )
9268
9369 val dataFields = JSONObject ().apply {
9470 put(" isPremium" , isPremium)
9571 }
9672
97- // Disable switch during update
9873 isPremiumSwitch.isEnabled = false
99-
100- // Note: updateUser doesn't have callbacks in the current SDK API
101- // But we can track success/failure by monitoring logs or adding listeners
10274 IterableApi .getInstance().updateUser(dataFields)
10375
104- // Show toast
105- Toast .makeText(this , " updateUser called (isPremium = $statusText )\n Wait 5 seconds then sync messages to verify" , Toast .LENGTH_LONG ).show()
106- Log .d(TAG , " ✅ updateUser called with isPremium = $statusText " )
76+ Toast .makeText(this , " updateUser called (isPremium = $statusText )\n Wait 5 seconds then sync messages" , Toast .LENGTH_LONG ).show()
10777
108- // Re-enable switch after delay
10978 isPremiumSwitch.postDelayed({
11079 isPremiumSwitch.isEnabled = true
111- updateStatus(" User update request sent (isPremium = $statusText ) - Sync messages to verify" )
80+ updateStatus(" User updated (isPremium = $statusText ) - Sync messages to verify" )
11281 }, 1000 )
11382 }
11483
11584 private fun syncEmbeddedMessages () {
11685 updateStatus(" Syncing embedded messages..." )
117- Log .d(TAG , " Syncing embedded messages" )
118-
11986 IterableApi .getInstance().embeddedManager.syncMessages()
12087
121- // Wait a bit for sync to complete, then show status and display messages
12288 Thread {
12389 Thread .sleep(2000 )
12490
@@ -129,62 +95,48 @@ class EmbeddedMessageTestActivity : AppCompatActivity() {
12995 }
13096
13197 val statusMessage = if (messageCount > 0 ) {
132- " ✅ Sync complete: Found $messageCount message(s) in ${placementIds.size} placement(s)"
98+ " ✅ Found $messageCount message(s) in ${placementIds.size} placement(s)"
13399 } else {
134- " ⚠️ Sync complete: No messages found. Check user eligibility and campaign configuration"
100+ " ⚠️ No messages found. Check user eligibility and campaign configuration"
135101 }
136102
137103 updateStatus(statusMessage)
138104 Toast .makeText(this , statusMessage, Toast .LENGTH_LONG ).show()
139- Log .d(TAG , statusMessage)
140105
141- // Display messages if found
142106 if (messageCount > 0 ) {
143107 displayEmbeddedMessages(placementIds)
144108 } else {
145- // Clear any existing fragments
146109 clearEmbeddedMessages()
147110 }
148111 }
149112 }.start()
150113 }
151114
152115 private fun displayEmbeddedMessages (placementIds : List <Long >) {
153- Log .d(TAG , " Displaying embedded messages for ${placementIds.size} placement(s)" )
116+ val firstPlacementId = placementIds.firstOrNull() ? : return
117+ val messages = IterableApi .getInstance().embeddedManager.getMessages(firstPlacementId) ? : return
154118
155- // For now, display the first message from the first placement
156- // In a real scenario, you might want to display all messages or have a placement selector
157- val firstPlacementId = placementIds.firstOrNull()
158- if (firstPlacementId != null ) {
159- val messages = IterableApi .getInstance().embeddedManager.getMessages(firstPlacementId)
160- if (messages != null && messages.isNotEmpty()) {
161- val firstMessage = messages.first()
162- Log .d(TAG , " Displaying message: ${firstMessage.metadata.messageId} from placement: $firstPlacementId " )
163-
164- // Create and add fragment
165- val fragment = IterableEmbeddedView (IterableEmbeddedViewType .BANNER , firstMessage, null )
166- supportFragmentManager.beginTransaction()
167- .replace(R .id.embedded_message_container, fragment)
168- .commitNowAllowingStateLoss()
169-
170- updateStatus(" ✅ Message displayed: ${firstMessage.metadata.messageId} " )
171- Log .d(TAG , " ✅ Embedded message fragment added" )
172- }
119+ if (messages.isNotEmpty()) {
120+ val firstMessage = messages.first()
121+ val fragment = IterableEmbeddedView (IterableEmbeddedViewType .BANNER , firstMessage, null )
122+ supportFragmentManager.beginTransaction()
123+ .replace(R .id.embedded_message_container, fragment)
124+ .commitNowAllowingStateLoss()
125+
126+ updateStatus(" ✅ Message displayed: ${firstMessage.metadata.messageId} " )
173127 }
174128 }
175129
176130 private fun clearEmbeddedMessages () {
177131 val fragment = supportFragmentManager.findFragmentById(R .id.embedded_message_container)
178- if ( fragment != null ) {
132+ fragment?. let {
179133 supportFragmentManager.beginTransaction()
180- .remove(fragment )
134+ .remove(it )
181135 .commitNowAllowingStateLoss()
182- Log .d(TAG , " Cleared embedded message fragment" )
183136 }
184137 }
185138
186139 private fun updateStatus (status : String ) {
187140 statusTextView.text = " Status: $status "
188- Log .d(TAG , " Status: $status " )
189141 }
190142}
0 commit comments