diff --git a/cmplibrary/src/main/java/com/sourcepoint/cmplibrary/SpConsentLibMobileCore.kt b/cmplibrary/src/main/java/com/sourcepoint/cmplibrary/SpConsentLibMobileCore.kt index f61001b2a..d135e8d1f 100644 --- a/cmplibrary/src/main/java/com/sourcepoint/cmplibrary/SpConsentLibMobileCore.kt +++ b/cmplibrary/src/main/java/com/sourcepoint/cmplibrary/SpConsentLibMobileCore.kt @@ -76,13 +76,15 @@ class SpConsentLibMobileCore( private val userData: SPUserData get() = coordinator.userData private val spConsents: SPConsents get() = SPConsents(userData) - private val messageUI: SPMessageUI by lazy { - SPConsentWebView.create( + private var messageUI: SPMessageUI? = null + fun getOrCreateMessageUI(): SPMessageUI { + messageUI = messageUI ?: SPConsentWebView.create( context = context, messageUIClient = this@SpConsentLibMobileCore, propertyId = propertyId, onBackPressed = dismissMessageOnBackPress ) + return messageUI!! } override fun loadMessage() = loadMessage(authId = null, pubData = null, cmpViewId = null) @@ -125,10 +127,11 @@ class SpConsentLibMobileCore( private fun renderNextMessageIfAny() = if (pendingActions == 0 && messagesToDisplay.isEmpty()) { + messageUI = null spClient.onSpFinished(spConsents) } else if (messagesToDisplay.isNotEmpty()) { val messageToRender = messagesToDisplay.removeFirst() - messageUI.load( + getOrCreateMessageUI().load( message = messageToRender.message, messageType = MessageType.fromMessageSubCategory(messageToRender.metaData.subCategoryId), url = messageToRender.url, @@ -263,7 +266,7 @@ class SpConsentLibMobileCore( } pendingActions++ - messageUI.load( + getOrCreateMessageUI().load( messageType = messageType, url = buildPMUrl( campaignType = campaignType, @@ -293,7 +296,7 @@ class SpConsentLibMobileCore( } override fun dismissMessage() { - messageUI.dismiss() + getOrCreateMessageUI().dismiss() } @Deprecated(message = "This method is deprecated and has no effect.") @@ -335,6 +338,7 @@ class SpConsentLibMobileCore( spClient.onConsentReady(SPConsents(userData)) pendingActions-- if (pendingActions == 0) { + messageUI = null spClient.onSpFinished(spConsents) } }.onFailure { @@ -348,7 +352,7 @@ class SpConsentLibMobileCore( finished(view) } ActionType.PM_DISMISS -> { - if (messageUI.isFirstLayer) { + if (getOrCreateMessageUI().isFirstLayer) { pendingActions-- finished(view) } @@ -386,7 +390,7 @@ class SpConsentLibMobileCore( } override fun finished(view: View) { - messageUI.isPresenting = false + getOrCreateMessageUI().isPresenting = false runOnMain { spClient.onUIFinished(view) } renderNextMessageIfAny() }