From 810b93e2669b0b55ad4bd61b44230956fd4a7bac Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Yusuf=20To=CC=88r?= Date: Tue, 24 Oct 2023 17:31:47 +0800 Subject: [PATCH] Adds templating of params and attributes on paywall open Also fixes tests and upgrades to alpha 10 --- superwall/build.gradle.kts | 2 +- .../config/ConfigManagerInstrumentedTest.kt | 29 +++++++++++-------- .../sdk/network/device/DeviceHelper.kt | 7 ++--- .../sdk/paywall/vc/PaywallViewController.kt | 5 ++++ .../sdk/paywall/vc/web_view/SWWebView.kt | 2 +- 5 files changed, 26 insertions(+), 19 deletions(-) diff --git a/superwall/build.gradle.kts b/superwall/build.gradle.kts index 94e6c7f3..9485ee28 100644 --- a/superwall/build.gradle.kts +++ b/superwall/build.gradle.kts @@ -20,7 +20,7 @@ plugins { } -version = "1.0.0-alpha09" +version = "1.0.0-alpha10" android { compileSdk = 33 diff --git a/superwall/src/androidTest/java/com/superwall/sdk/config/ConfigManagerInstrumentedTest.kt b/superwall/src/androidTest/java/com/superwall/sdk/config/ConfigManagerInstrumentedTest.kt index 0ac787ae..5117f2f8 100644 --- a/superwall/src/androidTest/java/com/superwall/sdk/config/ConfigManagerInstrumentedTest.kt +++ b/superwall/src/androidTest/java/com/superwall/sdk/config/ConfigManagerInstrumentedTest.kt @@ -13,6 +13,7 @@ import com.superwall.sdk.models.triggers.TriggerRule import com.superwall.sdk.models.triggers.VariantOption import com.superwall.sdk.network.Network import com.superwall.sdk.network.NetworkMock +import com.superwall.sdk.paywall.manager.PaywallManager import com.superwall.sdk.storage.Storage import com.superwall.sdk.storage.StorageMock import kotlinx.coroutines.delay @@ -26,9 +27,13 @@ import org.junit.Test class ConfigManagerUnderTest( private val storage: Storage, private val network: Network, + private val paywallManager: PaywallManager, + private val factory: Factory, ) : ConfigManager( storage = storage, network = network, + paywallManager = paywallManager, + factory = factory ) { suspend fun setConfig(config: Config) { @@ -51,7 +56,7 @@ class ConfigManagerTests { paywallId = "jkl" ) val assignment = ConfirmableAssignment(experimentId = experimentId, variant = variant) - val dependencyContainer = DependencyContainer(context) + val dependencyContainer = DependencyContainer(context, null, null) val network = NetworkMock(factory = dependencyContainer) val storage = StorageMock(context = context) val configManager = ConfigManager( @@ -59,8 +64,8 @@ class ConfigManagerTests { // storeKitManager = dependencyContainer.storeKitManager, storage = storage, network = network, -// paywallManagerger = dependencyContainer.paywallManager, -// factory = dependencyContainer + paywallManager = dependencyContainer.paywallManager, + factory = dependencyContainer ) configManager.confirmAssignment(assignment) @@ -76,7 +81,7 @@ class ConfigManagerTests { // get context val context = InstrumentationRegistry.getInstrumentation().targetContext - val dependencyContainer = DependencyContainer(context) + val dependencyContainer = DependencyContainer(context, null, null) val network = NetworkMock(factory = dependencyContainer) val storage = StorageMock(context = context) val configManager = ConfigManager( @@ -84,8 +89,8 @@ class ConfigManagerTests { // storeKitManager = dependencyContainer.storeKitManager, storage = storage, network = network, -// paywallManager = dependencyContainer.paywallManager, -// factory = dependencyContainer + paywallManager = dependencyContainer.paywallManager, + factory = dependencyContainer ) val job = launch { @@ -109,15 +114,15 @@ class ConfigManagerTests { // get context val context = InstrumentationRegistry.getInstrumentation().targetContext - val dependencyContainer = DependencyContainer(context) + val dependencyContainer = DependencyContainer(context, null, null) val network = NetworkMock(factory = dependencyContainer) val storage = StorageMock(context = context) val configManager = ConfigManagerUnderTest( // storeKitManager = dependencyContainer.storeKitManager, storage = storage, network = network, -// paywallManager = dependencyContainer.paywallManager, -// factory = dependencyContainer + paywallManager = dependencyContainer.paywallManager, + factory = dependencyContainer ) configManager.setConfig( Config.stub().apply { this.triggers = emptySet() } @@ -135,15 +140,15 @@ class ConfigManagerTests { // get context val context = InstrumentationRegistry.getInstrumentation().targetContext - val dependencyContainer = DependencyContainer(context) + val dependencyContainer = DependencyContainer(context, null, null) val network = NetworkMock(factory = dependencyContainer) val storage = StorageMock(context = context) val configManager = ConfigManagerUnderTest( // storeKitManager = dependencyContainer.storeKitManager, storage = storage, network = network, -// paywallManager = dependencyContainer.paywallManager, -// factory = dependencyContainer + paywallManager = dependencyContainer.paywallManager, + factory = dependencyContainer ) val variantId = "variantId" diff --git a/superwall/src/main/java/com/superwall/sdk/network/device/DeviceHelper.kt b/superwall/src/main/java/com/superwall/sdk/network/device/DeviceHelper.kt index 60bed524..903b2d0d 100644 --- a/superwall/src/main/java/com/superwall/sdk/network/device/DeviceHelper.kt +++ b/superwall/src/main/java/com/superwall/sdk/network/device/DeviceHelper.kt @@ -18,13 +18,11 @@ import com.superwall.sdk.BuildConfig import com.superwall.sdk.Superwall import com.superwall.sdk.dependencies.IdentityInfoFactory import com.superwall.sdk.dependencies.LocaleIdentifierFactory -import com.superwall.sdk.misc.VersionHelper import com.superwall.sdk.models.events.EventData import com.superwall.sdk.paywall.vc.web_view.templating.models.DeviceTemplate import com.superwall.sdk.storage.Storage import java.text.SimpleDateFormat import java.util.* -import com.superwall.sdk.misc.sdkVersion import com.superwall.sdk.storage.LastPaywallView import com.superwall.sdk.storage.TotalPaywallViews import java.time.Duration @@ -356,7 +354,7 @@ class DeviceHelper( return output } - suspend fun getTemplateDevice(): Map { + private suspend fun getTemplateDevice(): Map { val identityInfo = factory.makeIdentityInfo() val aliases = listOf(identityInfo.aliasId) @@ -400,7 +398,6 @@ class DeviceHelper( appBuildStringNumber = appBuildString.toInt() ) - val map = deviceTemplate.toDictionary() - return map + return deviceTemplate.toDictionary() } } diff --git a/superwall/src/main/java/com/superwall/sdk/paywall/vc/PaywallViewController.kt b/superwall/src/main/java/com/superwall/sdk/paywall/vc/PaywallViewController.kt index a575c0ec..31e44853 100644 --- a/superwall/src/main/java/com/superwall/sdk/paywall/vc/PaywallViewController.kt +++ b/superwall/src/main/java/com/superwall/sdk/paywall/vc/PaywallViewController.kt @@ -57,6 +57,7 @@ import com.superwall.sdk.paywall.vc.Survey.SurveyPresentationResult import com.superwall.sdk.paywall.vc.delegate.PaywallLoadingState import com.superwall.sdk.paywall.vc.delegate.PaywallViewControllerDelegateAdapter import com.superwall.sdk.paywall.vc.delegate.PaywallViewControllerEventDelegate +import com.superwall.sdk.paywall.vc.web_view.PaywallMessage import com.superwall.sdk.paywall.vc.web_view.SWWebView import com.superwall.sdk.paywall.vc.web_view.SWWebViewDelegate import com.superwall.sdk.paywall.vc.web_view.messaging.PaywallMessageHandlerDelegate @@ -264,6 +265,10 @@ class PaywallViewController( Superwall.instance.dependencyContainer.delegateAdapter.willPresentPaywall(info) + if (loadingState is PaywallLoadingState.Ready) { + webView.messageHandler.handle(PaywallMessage.TemplateParamsAndUserAttributes) + } + presentationWillPrepare = false } diff --git a/superwall/src/main/java/com/superwall/sdk/paywall/vc/web_view/SWWebView.kt b/superwall/src/main/java/com/superwall/sdk/paywall/vc/web_view/SWWebView.kt index 09d4ee7b..6406ea7f 100644 --- a/superwall/src/main/java/com/superwall/sdk/paywall/vc/web_view/SWWebView.kt +++ b/superwall/src/main/java/com/superwall/sdk/paywall/vc/web_view/SWWebView.kt @@ -35,7 +35,7 @@ interface SWWebViewDelegate : _SWWebViewDelegate, PaywallMessageHandlerDelegate class SWWebView( context: Context, private val sessionEventsManager: SessionEventsManager, - private val messageHandler: PaywallMessageHandler + val messageHandler: PaywallMessageHandler ) : WebView(context) { var delegate: SWWebViewDelegate? = null