From 011e12ade5e3488cb8c5e09c38c5f2510ba0fa2e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E2=80=9CAkshay?= <“ayyanchira.akshay@gmail.com”> Date: Mon, 12 Jan 2026 08:25:35 -0800 Subject: [PATCH] completion handler approach --- .../iterableapi/IterableEmbeddedManager.kt | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/iterableapi/src/main/java/com/iterable/iterableapi/IterableEmbeddedManager.kt b/iterableapi/src/main/java/com/iterable/iterableapi/IterableEmbeddedManager.kt index 8b53171bc..d56566664 100644 --- a/iterableapi/src/main/java/com/iterable/iterableapi/IterableEmbeddedManager.kt +++ b/iterableapi/src/main/java/com/iterable/iterableapi/IterableEmbeddedManager.kt @@ -86,6 +86,11 @@ public class IterableEmbeddedManager : IterableActivityMonitor.AppStateCallback //Network call to get the embedded messages fun syncMessages(placementIds: Array) { + syncMessages(placementIds, null) + } + + //Network call to get the embedded messages with completion handler + fun syncMessages(placementIds: Array, completionHandler: (() -> Unit)?) { if (iterableApi.config.enableEmbeddedMessaging) { IterableLogger.v(TAG, "Syncing messages...") @@ -143,6 +148,9 @@ public class IterableEmbeddedManager : IterableActivityMonitor.AppStateCallback } catch (e: JSONException) { IterableLogger.e(TAG, e.toString()) + } finally { + // Call completion handler after all processing is done + completionHandler?.invoke() } }, object : IterableHelper.FailureHandler { override fun onFailure(reason: String, data: JSONObject?) { @@ -153,13 +161,17 @@ public class IterableEmbeddedManager : IterableActivityMonitor.AppStateCallback ) { IterableLogger.e(TAG, "Subscription is inactive. Stopping sync") broadcastSubscriptionInactive() - return } else { //TODO: Instead of generic condition, have the retry only in certain situation IterableLogger.e(TAG, "Error while fetching embedded messages: $reason") } + // Call completion handler after all error handling is done + completionHandler?.invoke() } }) + } else { + // If embedded messaging is disabled, still call completion handler + completionHandler?.invoke() } }