diff --git a/packages/sparkling-sdk/android/sparkling/src/main/java/com/tiktok/sparkling/hybridkit/lynx/SparklingResourceFetcherConfigurator.kt b/packages/sparkling-sdk/android/sparkling/src/main/java/com/tiktok/sparkling/hybridkit/lynx/SparklingResourceFetcherConfigurator.kt index 83e9503f..dc18371f 100644 --- a/packages/sparkling-sdk/android/sparkling/src/main/java/com/tiktok/sparkling/hybridkit/lynx/SparklingResourceFetcherConfigurator.kt +++ b/packages/sparkling-sdk/android/sparkling/src/main/java/com/tiktok/sparkling/hybridkit/lynx/SparklingResourceFetcherConfigurator.kt @@ -26,9 +26,15 @@ internal object SparklingResourceFetcherConfigurator { lifeCycle: IHybridKitLifeCycle?, kitViewProvider: () -> SimpleLynxKitView?, ) { + val hasTypedFetcher = + config?.genericResourceFetcher != null || + config?.mediaResourceFetcher != null || + config?.templateResourceFetcher != null + if (hasTypedFetcher) { + viewBuilder.setEnableGenericResourceFetcher(LynxBooleanOption.TRUE) + } config?.genericResourceFetcher?.let { viewBuilder.setGenericResourceFetcher(it) - viewBuilder.setEnableGenericResourceFetcher(LynxBooleanOption.TRUE) } config?.mediaResourceFetcher?.let { viewBuilder.setMediaResourceFetcher(it) diff --git a/packages/sparkling-sdk/android/sparkling/src/test/java/com/tiktok/sparkling/hybridkit/lynx/SparklingResourceFetcherConfiguratorTest.kt b/packages/sparkling-sdk/android/sparkling/src/test/java/com/tiktok/sparkling/hybridkit/lynx/SparklingResourceFetcherConfiguratorTest.kt index 065b541b..1dbca32a 100644 --- a/packages/sparkling-sdk/android/sparkling/src/test/java/com/tiktok/sparkling/hybridkit/lynx/SparklingResourceFetcherConfiguratorTest.kt +++ b/packages/sparkling-sdk/android/sparkling/src/test/java/com/tiktok/sparkling/hybridkit/lynx/SparklingResourceFetcherConfiguratorTest.kt @@ -105,6 +105,60 @@ class SparklingResourceFetcherConfiguratorTest { verify(exactly = 0) { viewBuilder.setTemplateProvider(any()) } } + @Test + fun applyEnablesResourcePipelineForTemplateOnlyFetcher() { + val viewBuilder = mockk(relaxed = true) + val templateFetcher = mockk() + val config = + SparklingResourceFetcherConfig + .builder() + .setTemplateResourceFetcher(templateFetcher) + .build() + + SparklingResourceFetcherConfigurator.apply( + viewBuilder, + config, + mockk(), + null, + ) { null } + + verify(exactly = 1) { + viewBuilder.setEnableGenericResourceFetcher(LynxBooleanOption.TRUE) + } + verify(exactly = 1) { + viewBuilder.setTemplateResourceFetcher(any()) + } + verify(exactly = 0) { viewBuilder.setGenericResourceFetcher(any()) } + verify(exactly = 0) { viewBuilder.setMediaResourceFetcher(any()) } + } + + @Test + fun applyEnablesResourcePipelineForMediaOnlyFetcher() { + val viewBuilder = mockk(relaxed = true) + val mediaFetcher = mockk() + val config = + SparklingResourceFetcherConfig + .builder() + .setMediaResourceFetcher(mediaFetcher) + .build() + + SparklingResourceFetcherConfigurator.apply( + viewBuilder, + config, + mockk(), + null, + ) { null } + + verify(exactly = 1) { + viewBuilder.setEnableGenericResourceFetcher(LynxBooleanOption.TRUE) + } + verify(exactly = 1) { viewBuilder.setMediaResourceFetcher(mediaFetcher) } + verify(exactly = 0) { viewBuilder.setGenericResourceFetcher(any()) } + verify(exactly = 1) { + viewBuilder.setTemplateProvider(any()) + } + } + @Test fun applyKeepsDefaultTemplateProviderPathWhenTypedTemplateIsUnset() { val viewBuilder = mockk(relaxed = true)