Skip to content

Commit 6263e4a

Browse files
committed
Simplify data model
1 parent 7b2ffdd commit 6263e4a

4 files changed

Lines changed: 17 additions & 42 deletions

File tree

ad-blocking/ad-blocking-impl/src/main/java/com/duckduckgo/adblocking/impl/AdBlockingExtensionJsInjectorPlugin.kt

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -47,7 +47,7 @@ class AdBlockingExtensionJsInjectorPlugin @Inject constructor(
4747

4848
private val payload: StateFlow<String?> = repository
4949
.scriptletsFlow()
50-
.map { data -> data?.let(::buildScript) }
50+
.map(::buildScript)
5151
.stateIn(appScope, SharingStarted.Eagerly, initialValue = null)
5252

5353
@UiThread
@@ -81,8 +81,8 @@ class AdBlockingExtensionJsInjectorPlugin @Inject constructor(
8181

8282
override fun onPageFinished(webView: WebView, url: String?, site: Site?) = Unit
8383

84-
private fun buildScript(data: AdBlockingScriptletData): String? =
85-
data.scriptlets
84+
private fun buildScript(scriptlets: List<Scriptlet>): String? =
85+
scriptlets
8686
.takeUnless { it.isEmpty() }
8787
?.sortedBy { it.name }
8888
?.joinToString(separator = "\n") { it.content }

ad-blocking/ad-blocking-impl/src/main/java/com/duckduckgo/adblocking/impl/AdBlockingExtensionRepository.kt

Lines changed: 3 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@ import javax.inject.Inject
2828
interface AdBlockingExtensionRepository {
2929
suspend fun getStoredVersion(): String?
3030
suspend fun storeScriptlets(version: String, scriptlets: Map<String, ByteArray>)
31-
fun scriptletsFlow(): Flow<AdBlockingScriptletData?>
31+
fun scriptletsFlow(): Flow<List<Scriptlet>>
3232
}
3333

3434
@SingleInstanceIn(AppScope::class)
@@ -47,16 +47,8 @@ class RealAdBlockingExtensionRepository @Inject constructor(
4747
)
4848
}
4949

50-
override fun scriptletsFlow(): Flow<AdBlockingScriptletData?> =
50+
override fun scriptletsFlow(): Flow<List<Scriptlet>> =
5151
dao.scriptletsFlow().map { rows ->
52-
if (rows.isEmpty()) {
53-
null
54-
} else {
55-
AdBlockingScriptletData(
56-
scriptlets = rows.map { row ->
57-
AdBlockingScriptletData.Scriptlet(name = row.name, content = String(row.content))
58-
},
59-
)
60-
}
52+
rows.map { row -> Scriptlet(name = row.name, content = String(row.content)) }
6153
}
6254
}

ad-blocking/ad-blocking-impl/src/main/java/com/duckduckgo/adblocking/impl/AdBlockingScriptletData.kt renamed to ad-blocking/ad-blocking-impl/src/main/java/com/duckduckgo/adblocking/impl/Scriptlet.kt

Lines changed: 4 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -16,11 +16,7 @@
1616

1717
package com.duckduckgo.adblocking.impl
1818

19-
data class AdBlockingScriptletData(
20-
val scriptlets: List<Scriptlet>,
21-
) {
22-
data class Scriptlet(
23-
val name: String,
24-
val content: String,
25-
)
26-
}
19+
data class Scriptlet(
20+
val name: String,
21+
val content: String,
22+
)

ad-blocking/ad-blocking-impl/src/test/java/com/duckduckgo/adblocking/impl/AdBlockingExtensionJsInjectorPluginTest.kt

Lines changed: 7 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,7 @@ class AdBlockingExtensionJsInjectorPluginTest {
4343

4444
private var discoverableEnabled = true
4545
private var operationalEnabled = true
46-
private val scriptletsFlow = MutableStateFlow<AdBlockingScriptletData?>(null)
46+
private val scriptletsFlow = MutableStateFlow<List<Scriptlet>>(emptyList())
4747

4848
private val isDiscoverableToggle: Toggle = mock {
4949
on { isEnabled() } doAnswer { discoverableEnabled }
@@ -61,14 +61,10 @@ class AdBlockingExtensionJsInjectorPluginTest {
6161
private val webView: WebView = mock()
6262
private val testScope = CoroutineScope(UnconfinedTestDispatcher())
6363

64-
private val singleScriptlet = AdBlockingScriptletData(
65-
scriptlets = listOf(AdBlockingScriptletData.Scriptlet(name = "a.js", content = "console.log('a')")),
66-
)
67-
private val twoScriptlets = AdBlockingScriptletData(
68-
scriptlets = listOf(
69-
AdBlockingScriptletData.Scriptlet(name = "b.js", content = "console.log('b')"),
70-
AdBlockingScriptletData.Scriptlet(name = "a.js", content = "console.log('a')"),
71-
),
64+
private val singleScriptlet = listOf(Scriptlet(name = "a.js", content = "console.log('a')"))
65+
private val twoScriptlets = listOf(
66+
Scriptlet(name = "b.js", content = "console.log('b')"),
67+
Scriptlet(name = "a.js", content = "console.log('a')"),
7268
)
7369

7470
private val plugin by lazy {
@@ -173,16 +169,9 @@ class AdBlockingExtensionJsInjectorPluginTest {
173169
verify(webView, never()).evaluateJavascript(any(), isNull())
174170
}
175171

176-
@Test
177-
fun whenScriptletDataIsNullThenScriptIsNotInjected() {
178-
plugin.onPageStarted(webView, url = "https://youtube.com/page", isDesktopMode = null)
179-
180-
verify(webView, never()).evaluateJavascript(any(), isNull())
181-
}
182-
183172
@Test
184173
fun whenScriptletsListIsEmptyThenScriptIsNotInjected() {
185-
scriptletsFlow.value = AdBlockingScriptletData(scriptlets = emptyList())
174+
scriptletsFlow.value = emptyList()
186175

187176
plugin.onPageStarted(webView, url = "https://youtube.com/page", isDesktopMode = null)
188177

@@ -203,9 +192,7 @@ class AdBlockingExtensionJsInjectorPluginTest {
203192
scriptletsFlow.value = singleScriptlet
204193
plugin.onPageStarted(webView, url = "https://youtube.com/page", isDesktopMode = null)
205194

206-
scriptletsFlow.value = AdBlockingScriptletData(
207-
scriptlets = listOf(AdBlockingScriptletData.Scriptlet(name = "a.js", content = "console.log('updated')")),
208-
)
195+
scriptletsFlow.value = listOf(Scriptlet(name = "a.js", content = "console.log('updated')"))
209196
plugin.onPageStarted(webView, url = "https://youtube.com/page", isDesktopMode = null)
210197

211198
verify(webView).evaluateJavascript(

0 commit comments

Comments
 (0)