Skip to content

Commit 08ec878

Browse files
authored
Implement SubscriptionsJSHelper in subscriptions-dummy (#6103)
Task/Issue URL: https://app.asana.com/1/137249556945/project/1201807753394693/task/1210295149732040?focus=true ### Description Add SubscriptionsJSHelper to subscriptions-dummy module in order to fix F-droid build ### Steps to test this PR - [ ] Check Build F-Droid apk CI check is green ### No UI changes
1 parent 23b34fb commit 08ec878

File tree

8 files changed

+74
-14
lines changed

8 files changed

+74
-14
lines changed

app/src/androidTest/java/com/duckduckgo/app/browser/BrowserTabViewModelTest.kt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -276,9 +276,9 @@ import com.duckduckgo.site.permissions.api.SitePermissionsManager
276276
import com.duckduckgo.site.permissions.api.SitePermissionsManager.LocationPermissionRequest
277277
import com.duckduckgo.site.permissions.api.SitePermissionsManager.SitePermissionQueryResponse
278278
import com.duckduckgo.site.permissions.api.SitePermissionsManager.SitePermissions
279+
import com.duckduckgo.subscriptions.api.SUBSCRIPTIONS_FEATURE_NAME
279280
import com.duckduckgo.subscriptions.api.Subscriptions
280-
import com.duckduckgo.subscriptions.impl.messaging.RealSubscriptionsJSHelper.Companion.SUBSCRIPTIONS_FEATURE_NAME
281-
import com.duckduckgo.subscriptions.impl.messaging.SubscriptionsJSHelper
281+
import com.duckduckgo.subscriptions.api.SubscriptionsJSHelper
282282
import com.duckduckgo.sync.api.favicons.FaviconsFetchingPrompt
283283
import com.duckduckgo.voice.api.VoiceSearchAvailability
284284
import com.duckduckgo.voice.api.VoiceSearchAvailabilityPixelLogger

app/src/main/java/com/duckduckgo/app/browser/BrowserTabViewModel.kt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -341,9 +341,9 @@ import com.duckduckgo.site.permissions.api.SitePermissionsManager
341341
import com.duckduckgo.site.permissions.api.SitePermissionsManager.LocationPermissionRequest
342342
import com.duckduckgo.site.permissions.api.SitePermissionsManager.SitePermissionQueryResponse
343343
import com.duckduckgo.site.permissions.api.SitePermissionsManager.SitePermissions
344+
import com.duckduckgo.subscriptions.api.SUBSCRIPTIONS_FEATURE_NAME
344345
import com.duckduckgo.subscriptions.api.Subscriptions
345-
import com.duckduckgo.subscriptions.impl.messaging.RealSubscriptionsJSHelper.Companion.SUBSCRIPTIONS_FEATURE_NAME
346-
import com.duckduckgo.subscriptions.impl.messaging.SubscriptionsJSHelper
346+
import com.duckduckgo.subscriptions.api.SubscriptionsJSHelper
347347
import com.duckduckgo.sync.api.favicons.FaviconsFetchingPrompt
348348
import dagger.Lazy
349349
import io.reactivex.schedulers.Schedulers

build.gradle

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -140,6 +140,7 @@ subprojects {
140140
&& dependencyPath.endsWith("api")
141141
&& dependencyPath != ":feature-toggles-api"
142142
&& dependencyPath != ":navigation-api"
143+
&& dependencyPath != ":js-messaging-api"
143144
) {
144145
if (projectPath.endsWith(":feature-toggles-api") &&
145146
(dependencyPath == ":experiments-api"

subscriptions/subscriptions-api/build.gradle

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@ apply from: "$rootProject.projectDir/gradle/android-library.gradle"
2323

2424
dependencies {
2525
implementation project(path: ':navigation-api')
26+
implementation project(':js-messaging-api')
2627
implementation KotlinX.coroutines.core
2728
}
2829

Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
/*
2+
* Copyright (c) 2025 DuckDuckGo
3+
*
4+
* Licensed under the Apache License, Version 2.0 (the "License");
5+
* you may not use this file except in compliance with the License.
6+
* You may obtain a copy of the License at
7+
*
8+
* http://www.apache.org/licenses/LICENSE-2.0
9+
*
10+
* Unless required by applicable law or agreed to in writing, software
11+
* distributed under the License is distributed on an "AS IS" BASIS,
12+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13+
* See the License for the specific language governing permissions and
14+
* limitations under the License.
15+
*/
16+
17+
package com.duckduckgo.subscriptions.api
18+
19+
import com.duckduckgo.js.messaging.api.JsCallbackData
20+
import org.json.JSONObject
21+
22+
interface SubscriptionsJSHelper {
23+
suspend fun processJsCallbackMessage(
24+
featureName: String,
25+
method: String,
26+
id: String?,
27+
data: JSONObject?,
28+
): JsCallbackData?
29+
}
30+
31+
const val SUBSCRIPTIONS_FEATURE_NAME = "subscriptions"

subscriptions/subscriptions-dummy-impl/build.gradle

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@ dependencies {
2727
implementation project(':anvil-annotations')
2828
implementation project(':di')
2929
implementation project(':subscriptions-api')
30+
implementation project(':js-messaging-api')
3031

3132
implementation KotlinX.coroutines.android
3233
implementation Google.dagger
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
/*
2+
* Copyright (c) 2025 DuckDuckGo
3+
*
4+
* Licensed under the Apache License, Version 2.0 (the "License");
5+
* you may not use this file except in compliance with the License.
6+
* You may obtain a copy of the License at
7+
*
8+
* http://www.apache.org/licenses/LICENSE-2.0
9+
*
10+
* Unless required by applicable law or agreed to in writing, software
11+
* distributed under the License is distributed on an "AS IS" BASIS,
12+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13+
* See the License for the specific language governing permissions and
14+
* limitations under the License.
15+
*/
16+
package com.duckduckgo.subscriptions.impl
17+
18+
import com.duckduckgo.di.scopes.AppScope
19+
import com.duckduckgo.js.messaging.api.JsCallbackData
20+
import com.duckduckgo.subscriptions.api.SubscriptionsJSHelper
21+
import com.squareup.anvil.annotations.ContributesBinding
22+
import javax.inject.Inject
23+
import org.json.JSONObject
24+
25+
@ContributesBinding(AppScope::class)
26+
class SubscriptionsJSHelperDummy @Inject constructor() : SubscriptionsJSHelper {
27+
override suspend fun processJsCallbackMessage(
28+
featureName: String,
29+
method: String,
30+
id: String?,
31+
data: JSONObject?,
32+
): JsCallbackData? {
33+
return null
34+
}
35+
}

subscriptions/subscriptions-impl/src/main/java/com/duckduckgo/subscriptions/impl/messaging/SubscriptionsJSHelper.kt

Lines changed: 1 addition & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -18,21 +18,13 @@ package com.duckduckgo.subscriptions.impl.messaging
1818

1919
import com.duckduckgo.di.scopes.AppScope
2020
import com.duckduckgo.js.messaging.api.JsCallbackData
21+
import com.duckduckgo.subscriptions.api.SubscriptionsJSHelper
2122
import com.duckduckgo.subscriptions.impl.SubscriptionsManager
2223
import com.squareup.anvil.annotations.ContributesBinding
2324
import javax.inject.Inject
2425
import org.json.JSONArray
2526
import org.json.JSONObject
2627

27-
interface SubscriptionsJSHelper {
28-
suspend fun processJsCallbackMessage(
29-
featureName: String,
30-
method: String,
31-
id: String?,
32-
data: JSONObject?,
33-
): JsCallbackData?
34-
}
35-
3628
@ContributesBinding(AppScope::class)
3729
class RealSubscriptionsJSHelper @Inject constructor(
3830
private val subscriptionsManager: SubscriptionsManager,
@@ -77,7 +69,6 @@ class RealSubscriptionsJSHelper @Inject constructor(
7769
}
7870

7971
companion object {
80-
const val SUBSCRIPTIONS_FEATURE_NAME = "subscriptions"
8172
private const val METHOD_HANDSHAKE = "handshake"
8273
private const val METHOD_SUBSCRIPTION_DETAILS = "subscriptionDetails"
8374
private const val AVAILABLE_MESSAGES = "availableMessages"

0 commit comments

Comments
 (0)