diff --git a/src/main/kotlin/com/mparticle/kits/RoktKit.kt b/src/main/kotlin/com/mparticle/kits/RoktKit.kt index 79e710e..8040b2c 100644 --- a/src/main/kotlin/com/mparticle/kits/RoktKit.kt +++ b/src/main/kotlin/com/mparticle/kits/RoktKit.kt @@ -16,6 +16,7 @@ import com.mparticle.kits.KitIntegration.IdentityListener import com.mparticle.kits.KitIntegration.RoktListener import com.mparticle.rokt.RoktEmbeddedView import com.rokt.roktsdk.Rokt +import com.rokt.roktsdk.RoktWidgetDimensionCallBack import com.rokt.roktsdk.Widget import java.lang.ref.WeakReference import java.math.BigDecimal @@ -127,12 +128,30 @@ class RoktKit : KitIntegration(), CommerceListener, IdentityListener, RoktListen fontTypefaces: MutableMap>?, filterUser: FilteredMParticleUser? ) { - // Converting the placeholders to a Map> by filtering and casting each entry val placeholders: Map>? = placeHolders?.mapNotNull { entry -> - val weakRef = entry.value - val widget = weakRef.get() as? Widget // Safe cast to Widget - widget?.let { entry.key to weakRef as WeakReference } // Only include if it's a Widget + val widget = Widget(entry.value.get()?.context as Context) + entry.value.get()?.removeAllViews() + entry.value.get()?.addView(widget) + entry.value.get()?.dimensionCallBack?.let { + widget.registerDimensionListener(object: RoktWidgetDimensionCallBack { + override fun onHeightChanged(height: Int) { + it.onHeightChanged(height) + } + + override fun onMarginChanged( + start: Int, + top: Int, + end: Int, + bottom: Int + ) { + it.onMarginChanged(start, top, end, bottom) + } + + }) + } + entry.key to WeakReference(widget) }?.toMap() + this.mpRoktEventCallback = mpRoktEventCallback val finalAttributes: HashMap = HashMap() filterUser?.userAttributes?.let { userAttrs -> @@ -141,11 +160,10 @@ class RoktKit : KitIntegration(), CommerceListener, IdentityListener, RoktListen } } - filterUser?.id?.let { mpid -> - finalAttributes.put(MPID, mpid.toString()) - } ?: run { - Logger.warning("RoktKit: No user ID available for placement") - } + filterUser?.id?.toString()?.let { mpid -> + finalAttributes[MPID] = mpid + } ?: Logger.warning("RoktKit: No user ID available for placement") + addIdentityAttributes(finalAttributes, filterUser) Rokt.execute(