diff --git a/changelog.d/6783.misc b/changelog.d/6783.misc
new file mode 100644
index 00000000000..d1095c1203a
--- /dev/null
+++ b/changelog.d/6783.misc
@@ -0,0 +1 @@
+Decouples the variant logic from the vector module
diff --git a/vector/build.gradle b/vector/build.gradle
index 0edaf5424ee..1244a84bfda 100644
--- a/vector/build.gradle
+++ b/vector/build.gradle
@@ -307,7 +307,6 @@ android {
isDefault = true
versionName "${versionMajor}.${versionMinor}.${versionPatch}${getGplayVersionSuffix()}"
- resValue "bool", "isGplay", "true"
buildConfigField "String", "SHORT_FLAVOR_DESCRIPTION", "\"G\""
buildConfigField "String", "FLAVOR_DESCRIPTION", "\"GooglePlay\""
}
@@ -317,7 +316,6 @@ android {
versionName "${versionMajor}.${versionMinor}.${versionPatch}${getFdroidVersionSuffix()}"
- resValue "bool", "isGplay", "false"
buildConfigField "String", "SHORT_FLAVOR_DESCRIPTION", "\"F\""
buildConfigField "String", "FLAVOR_DESCRIPTION", "\"FDroid\""
}
diff --git a/vector/src/debug/AndroidManifest.xml b/vector/src/debug/AndroidManifest.xml
index 84fa2584b95..4ec47d49208 100644
--- a/vector/src/debug/AndroidManifest.xml
+++ b/vector/src/debug/AndroidManifest.xml
@@ -9,6 +9,7 @@
+
-
diff --git a/vector/src/main/java/im/vector/app/VectorApplication.kt b/vector/src/main/java/im/vector/app/VectorApplication.kt
index b1bd0fc3083..53222ab9620 100644
--- a/vector/src/main/java/im/vector/app/VectorApplication.kt
+++ b/vector/src/main/java/im/vector/app/VectorApplication.kt
@@ -41,7 +41,9 @@ import com.vanniktech.emoji.EmojiManager
import com.vanniktech.emoji.google.GoogleEmojiProvider
import dagger.hilt.android.HiltAndroidApp
import im.vector.app.config.Config
+import im.vector.app.core.debug.FlipperProxy
import im.vector.app.core.di.ActiveSessionHolder
+import im.vector.app.core.pushers.FcmHelper
import im.vector.app.core.resources.BuildMeta
import im.vector.app.features.analytics.VectorAnalytics
import im.vector.app.features.call.webrtc.WebRtcCallManager
@@ -59,8 +61,6 @@ import im.vector.app.features.settings.VectorLocale
import im.vector.app.features.settings.VectorPreferences
import im.vector.app.features.themes.ThemeUtils
import im.vector.app.features.version.VersionProvider
-import im.vector.app.flipper.FlipperProxy
-import im.vector.app.push.fcm.FcmHelper
import org.jitsi.meet.sdk.log.JitsiMeetDefaultLogHandler
import org.matrix.android.sdk.api.Matrix
import org.matrix.android.sdk.api.auth.AuthenticationService
diff --git a/vector/src/fdroid/java/im/vector/app/nightly/NightlyProxy.kt b/vector/src/main/java/im/vector/app/core/debug/DebugNavigator.kt
similarity index 82%
rename from vector/src/fdroid/java/im/vector/app/nightly/NightlyProxy.kt
rename to vector/src/main/java/im/vector/app/core/debug/DebugNavigator.kt
index eecf3a24f26..16c8dac55cd 100644
--- a/vector/src/fdroid/java/im/vector/app/nightly/NightlyProxy.kt
+++ b/vector/src/main/java/im/vector/app/core/debug/DebugNavigator.kt
@@ -14,10 +14,10 @@
* limitations under the License.
*/
-package im.vector.app.nightly
+package im.vector.app.core.debug
-import javax.inject.Inject
+import android.content.Context
-class NightlyProxy @Inject constructor() {
- fun onHomeResumed() = Unit
+interface DebugNavigator {
+ fun openDebugMenu(context: Context)
}
diff --git a/vector/src/fdroid/java/im/vector/app/FlavorCode.kt b/vector/src/main/java/im/vector/app/core/debug/DebugReceiver.kt
similarity index 77%
rename from vector/src/fdroid/java/im/vector/app/FlavorCode.kt
rename to vector/src/main/java/im/vector/app/core/debug/DebugReceiver.kt
index 7d8ef22b449..7cccba3d375 100644
--- a/vector/src/fdroid/java/im/vector/app/FlavorCode.kt
+++ b/vector/src/main/java/im/vector/app/core/debug/DebugReceiver.kt
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 New Vector Ltd
+ * Copyright (c) 2022 New Vector Ltd
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -14,9 +14,11 @@
* limitations under the License.
*/
-package im.vector.app
+package im.vector.app.core.debug
import android.content.Context
-// No op
-fun openOssLicensesMenuActivity(@Suppress("UNUSED_PARAMETER") context: Context) = Unit
+interface DebugReceiver {
+ fun register(context: Context)
+ fun unregister(context: Context)
+}
diff --git a/vector/src/release/java/im/vector/app/flipper/FlipperProxy.kt b/vector/src/main/java/im/vector/app/core/debug/FlipperProxy.kt
similarity index 73%
rename from vector/src/release/java/im/vector/app/flipper/FlipperProxy.kt
rename to vector/src/main/java/im/vector/app/core/debug/FlipperProxy.kt
index 03b1977a45b..a05da239f54 100644
--- a/vector/src/release/java/im/vector/app/flipper/FlipperProxy.kt
+++ b/vector/src/main/java/im/vector/app/core/debug/FlipperProxy.kt
@@ -14,18 +14,12 @@
* limitations under the License.
*/
-package im.vector.app.flipper
+package im.vector.app.core.debug
import okhttp3.Interceptor
import org.matrix.android.sdk.api.Matrix
-import javax.inject.Inject
-/**
- * No op version.
- */
-@Suppress("UNUSED_PARAMETER")
-class FlipperProxy @Inject constructor() {
- fun init(matrix: Matrix) {}
-
- fun getNetworkInterceptor(): Interceptor? = null
+interface FlipperProxy {
+ fun init(matrix: Matrix)
+ fun networkInterceptor(): Interceptor?
}
diff --git a/vector/src/main/java/im/vector/app/core/di/SingletonModule.kt b/vector/src/main/java/im/vector/app/core/di/SingletonModule.kt
index 6959f17586b..a060ebe7317 100644
--- a/vector/src/main/java/im/vector/app/core/di/SingletonModule.kt
+++ b/vector/src/main/java/im/vector/app/core/di/SingletonModule.kt
@@ -34,6 +34,7 @@ import im.vector.app.EmojiSpanify
import im.vector.app.SpaceStateHandler
import im.vector.app.SpaceStateHandlerImpl
import im.vector.app.config.Config
+import im.vector.app.core.debug.FlipperProxy
import im.vector.app.core.dispatchers.CoroutineDispatchers
import im.vector.app.core.error.DefaultErrorFormatter
import im.vector.app.core.error.ErrorFormatter
@@ -57,7 +58,6 @@ import im.vector.app.features.settings.FontScalePreferencesImpl
import im.vector.app.features.settings.VectorPreferences
import im.vector.app.features.ui.SharedPreferencesUiStateRepository
import im.vector.app.features.ui.UiStateRepository
-import im.vector.app.flipper.FlipperProxy
import kotlinx.coroutines.CoroutineScope
import kotlinx.coroutines.DelicateCoroutinesApi
import kotlinx.coroutines.Dispatchers
@@ -144,7 +144,7 @@ object VectorStaticModule {
roomDisplayNameFallbackProvider = vectorRoomDisplayNameFallbackProvider,
threadMessagesEnabledDefault = vectorPreferences.areThreadMessagesEnabled(),
networkInterceptors = listOfNotNull(
- flipperProxy.getNetworkInterceptor(),
+ flipperProxy.networkInterceptor(),
)
)
}
diff --git a/vector/src/main/java/im/vector/app/core/platform/VectorBaseActivity.kt b/vector/src/main/java/im/vector/app/core/platform/VectorBaseActivity.kt
index 8a09b6bd46a..24a65e1071f 100644
--- a/vector/src/main/java/im/vector/app/core/platform/VectorBaseActivity.kt
+++ b/vector/src/main/java/im/vector/app/core/platform/VectorBaseActivity.kt
@@ -55,6 +55,7 @@ import com.google.android.material.dialog.MaterialAlertDialogBuilder
import com.google.android.material.snackbar.Snackbar
import dagger.hilt.android.EntryPointAccessors
import im.vector.app.R
+import im.vector.app.core.debug.DebugReceiver
import im.vector.app.core.di.ActiveSessionHolder
import im.vector.app.core.di.ActivityEntryPoint
import im.vector.app.core.dialogs.DialogLocker
@@ -91,7 +92,6 @@ import im.vector.app.features.settings.FontScalePreferencesImpl
import im.vector.app.features.settings.VectorPreferences
import im.vector.app.features.themes.ActivityOtherThemes
import im.vector.app.features.themes.ThemeUtils
-import im.vector.app.receivers.DebugReceiver
import kotlinx.coroutines.flow.launchIn
import kotlinx.coroutines.flow.onEach
import org.matrix.android.sdk.api.extensions.orFalse
@@ -161,6 +161,9 @@ abstract class VectorBaseActivity : AppCompatActivity(), Maver
@Inject lateinit var buildMeta: BuildMeta
@Inject lateinit var fontScalePreferences: FontScalePreferences
+ // For debug only
+ @Inject lateinit var debugReceiver: DebugReceiver
+
@Inject
lateinit var vectorFeatures: VectorFeatures
@@ -176,9 +179,6 @@ abstract class VectorBaseActivity : AppCompatActivity(), Maver
private var savedInstanceState: Bundle? = null
- // For debug only
- private var debugReceiver: DebugReceiver? = null
-
private val restorables = ArrayList()
override fun attachBaseContext(base: Context) {
@@ -418,13 +418,7 @@ abstract class VectorBaseActivity : AppCompatActivity(), Maver
if (this !is BugReportActivity && vectorPreferences.useRageshake()) {
rageShake.start()
}
- DebugReceiver
- .getIntentFilter(this)
- .takeIf { buildMeta.isDebug }
- ?.let {
- debugReceiver = DebugReceiver()
- registerReceiver(debugReceiver, it)
- }
+ debugReceiver.register(this)
}
private val postResumeScheduledActions = mutableListOf<() -> Unit>()
@@ -454,11 +448,7 @@ abstract class VectorBaseActivity : AppCompatActivity(), Maver
Timber.i("onPause Activity ${javaClass.simpleName}")
rageShake.stop()
-
- debugReceiver?.let {
- unregisterReceiver(debugReceiver)
- debugReceiver = null
- }
+ debugReceiver.unregister(this)
}
override fun onWindowFocusChanged(hasFocus: Boolean) {
diff --git a/vector/src/main/java/im/vector/app/core/pushers/FcmHelper.kt b/vector/src/main/java/im/vector/app/core/pushers/FcmHelper.kt
new file mode 100644
index 00000000000..7b2c5e39595
--- /dev/null
+++ b/vector/src/main/java/im/vector/app/core/pushers/FcmHelper.kt
@@ -0,0 +1,51 @@
+/*
+ * Copyright (c) 2022 New Vector Ltd
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package im.vector.app.core.pushers
+
+import android.app.Activity
+import im.vector.app.core.di.ActiveSessionHolder
+
+interface FcmHelper {
+ fun isFirebaseAvailable(): Boolean
+
+ /**
+ * Retrieves the FCM registration token.
+ *
+ * @return the FCM token or null if not received from FCM.
+ */
+ fun getFcmToken(): String?
+
+ /**
+ * Store FCM token to the SharedPrefs.
+ *
+ * @param token the token to store.
+ */
+ fun storeFcmToken(token: String?)
+
+ /**
+ * onNewToken may not be called on application upgrade, so ensure my shared pref is set.
+ *
+ * @param activity the first launch Activity.
+ * @param pushersManager the instance to register the pusher on.
+ * @param registerPusher whether the pusher should be registered.
+ */
+ fun ensureFcmTokenIsRetrieved(activity: Activity, pushersManager: PushersManager, registerPusher: Boolean)
+
+ fun onEnterForeground(activeSessionHolder: ActiveSessionHolder)
+
+ fun onEnterBackground(activeSessionHolder: ActiveSessionHolder)
+}
diff --git a/vector/src/main/java/im/vector/app/core/pushers/UnifiedPushHelper.kt b/vector/src/main/java/im/vector/app/core/pushers/UnifiedPushHelper.kt
index 724d3c7aa67..1f44ab36863 100644
--- a/vector/src/main/java/im/vector/app/core/pushers/UnifiedPushHelper.kt
+++ b/vector/src/main/java/im/vector/app/core/pushers/UnifiedPushHelper.kt
@@ -28,7 +28,6 @@ import im.vector.app.core.utils.getApplicationLabel
import im.vector.app.features.VectorFeatures
import im.vector.app.features.settings.BackgroundSyncMode
import im.vector.app.features.settings.VectorPreferences
-import im.vector.app.push.fcm.FcmHelper
import kotlinx.coroutines.launch
import org.matrix.android.sdk.api.Matrix
import org.matrix.android.sdk.api.cache.CacheStrategy
diff --git a/vector/src/main/java/im/vector/app/features/home/HomeActivity.kt b/vector/src/main/java/im/vector/app/features/home/HomeActivity.kt
index 12cdaecdf91..fe57b9f735c 100644
--- a/vector/src/main/java/im/vector/app/features/home/HomeActivity.kt
+++ b/vector/src/main/java/im/vector/app/features/home/HomeActivity.kt
@@ -44,6 +44,7 @@ import im.vector.app.core.extensions.replaceFragment
import im.vector.app.core.extensions.validateBackPressed
import im.vector.app.core.platform.VectorBaseActivity
import im.vector.app.core.platform.VectorMenuProvider
+import im.vector.app.core.pushers.FcmHelper
import im.vector.app.core.pushers.PushersManager
import im.vector.app.core.pushers.UnifiedPushHelper
import im.vector.app.core.utils.startSharePlainTextIntent
@@ -79,8 +80,6 @@ import im.vector.app.features.spaces.invite.SpaceInviteBottomSheet
import im.vector.app.features.spaces.share.ShareSpaceBottomSheet
import im.vector.app.features.themes.ThemeUtils
import im.vector.app.features.workers.signout.ServerBackupStatusViewModel
-import im.vector.app.nightly.NightlyProxy
-import im.vector.app.push.fcm.FcmHelper
import kotlinx.coroutines.flow.launchIn
import kotlinx.coroutines.flow.onEach
import kotlinx.coroutines.launch
diff --git a/vector/src/release/java/im/vector/app/features/debug/DebugMenuActivity.kt b/vector/src/main/java/im/vector/app/features/home/NightlyProxy.kt
similarity index 73%
rename from vector/src/release/java/im/vector/app/features/debug/DebugMenuActivity.kt
rename to vector/src/main/java/im/vector/app/features/home/NightlyProxy.kt
index c5db033a18a..b25add2ac93 100644
--- a/vector/src/release/java/im/vector/app/features/debug/DebugMenuActivity.kt
+++ b/vector/src/main/java/im/vector/app/features/home/NightlyProxy.kt
@@ -1,5 +1,5 @@
/*
- * Copyright 2019 New Vector Ltd
+ * Copyright (c) 2022 New Vector Ltd
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -14,9 +14,8 @@
* limitations under the License.
*/
-package im.vector.app.features.debug
+package im.vector.app.features.home
-import androidx.appcompat.app.AppCompatActivity
-
-// This activity is not accessible
-class DebugMenuActivity : AppCompatActivity()
+interface NightlyProxy {
+ fun onHomeResumed()
+}
diff --git a/vector/src/main/java/im/vector/app/features/navigation/DefaultNavigator.kt b/vector/src/main/java/im/vector/app/features/navigation/DefaultNavigator.kt
index 38db6422876..e724084501c 100644
--- a/vector/src/main/java/im/vector/app/features/navigation/DefaultNavigator.kt
+++ b/vector/src/main/java/im/vector/app/features/navigation/DefaultNavigator.kt
@@ -34,6 +34,7 @@ import com.google.android.material.dialog.MaterialAlertDialogBuilder
import im.vector.app.R
import im.vector.app.SpaceStateHandler
import im.vector.app.config.OnboardingVariant
+import im.vector.app.core.debug.DebugNavigator
import im.vector.app.core.di.ActiveSessionHolder
import im.vector.app.core.error.fatalError
import im.vector.app.features.VectorFeatures
@@ -51,7 +52,6 @@ import im.vector.app.features.crypto.recover.BootstrapBottomSheet
import im.vector.app.features.crypto.recover.SetupMode
import im.vector.app.features.crypto.verification.SupportedVerificationMethodsProvider
import im.vector.app.features.crypto.verification.VerificationBottomSheet
-import im.vector.app.features.debug.DebugMenuActivity
import im.vector.app.features.devtools.RoomDevToolActivity
import im.vector.app.features.home.room.detail.RoomDetailActivity
import im.vector.app.features.home.room.detail.arguments.TimelineArgs
@@ -123,7 +123,8 @@ class DefaultNavigator @Inject constructor(
private val spaceStateHandler: SpaceStateHandler,
private val supportedVerificationMethodsProvider: SupportedVerificationMethodsProvider,
private val features: VectorFeatures,
- private val analyticsTracker: AnalyticsTracker
+ private val analyticsTracker: AnalyticsTracker,
+ private val debugNavigator: DebugNavigator,
) : Navigator {
override fun openLogin(context: Context, loginConfig: LoginConfig?, flags: Int) {
@@ -367,7 +368,7 @@ class DefaultNavigator @Inject constructor(
}
override fun openDebug(context: Context) {
- context.startActivity(Intent(context, DebugMenuActivity::class.java))
+ debugNavigator.openDebugMenu(context)
}
override fun openKeysBackupSetup(context: Context, showManualExport: Boolean) {
diff --git a/vector/src/main/java/im/vector/app/features/push/NotificationTroubleshootTestManagerFactory.kt b/vector/src/main/java/im/vector/app/features/push/NotificationTroubleshootTestManagerFactory.kt
new file mode 100644
index 00000000000..6a3ce04c1a3
--- /dev/null
+++ b/vector/src/main/java/im/vector/app/features/push/NotificationTroubleshootTestManagerFactory.kt
@@ -0,0 +1,24 @@
+/*
+ * Copyright (c) 2022 New Vector Ltd
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package im.vector.app.features.push
+
+import androidx.fragment.app.Fragment
+import im.vector.app.features.settings.troubleshoot.NotificationTroubleshootTestManager
+
+interface NotificationTroubleshootTestManagerFactory {
+ fun create(fragment: Fragment): NotificationTroubleshootTestManager
+}
diff --git a/vector/src/gplay/java/im/vector/app/FlavorCode.kt b/vector/src/main/java/im/vector/app/features/settings/legals/FlavorLegals.kt
similarity index 68%
rename from vector/src/gplay/java/im/vector/app/FlavorCode.kt
rename to vector/src/main/java/im/vector/app/features/settings/legals/FlavorLegals.kt
index 040296d755b..9b2a0817001 100644
--- a/vector/src/gplay/java/im/vector/app/FlavorCode.kt
+++ b/vector/src/main/java/im/vector/app/features/settings/legals/FlavorLegals.kt
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 New Vector Ltd
+ * Copyright (c) 2022 New Vector Ltd
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -14,10 +14,11 @@
* limitations under the License.
*/
-package im.vector.app
+package im.vector.app.features.settings.legals
import android.content.Context
-import android.content.Intent
-import com.google.android.gms.oss.licenses.OssLicensesMenuActivity
-fun openOssLicensesMenuActivity(context: Context) = context.startActivity(Intent(context, OssLicensesMenuActivity::class.java))
+interface FlavorLegals {
+ fun hasThirdPartyNotices(): Boolean
+ fun navigateToThirdPartyNotices(context: Context)
+}
diff --git a/vector/src/main/java/im/vector/app/features/settings/legals/LegalsController.kt b/vector/src/main/java/im/vector/app/features/settings/legals/LegalsController.kt
index f88b73f36c3..a1d01024daa 100644
--- a/vector/src/main/java/im/vector/app/features/settings/legals/LegalsController.kt
+++ b/vector/src/main/java/im/vector/app/features/settings/legals/LegalsController.kt
@@ -38,7 +38,8 @@ class LegalsController @Inject constructor(
private val stringProvider: StringProvider,
private val resources: Resources,
private val elementLegals: ElementLegals,
- private val errorFormatter: ErrorFormatter
+ private val errorFormatter: ErrorFormatter,
+ private val flavorLegals: FlavorLegals,
) : TypedEpoxyController() {
var listener: Listener? = null
@@ -134,7 +135,7 @@ class LegalsController @Inject constructor(
clickListener { host.listener?.openThirdPartyNotice() }
}
// Only on Gplay
- if (resources.getBoolean(R.bool.isGplay)) {
+ if (flavorLegals.hasThirdPartyNotices()) {
discoveryPolicyItem {
id("eltpn2")
name(host.stringProvider.getString(R.string.settings_other_third_party_notices))
diff --git a/vector/src/main/java/im/vector/app/features/settings/legals/LegalsFragment.kt b/vector/src/main/java/im/vector/app/features/settings/legals/LegalsFragment.kt
index 9a4090ad1b2..aef1c69baa1 100644
--- a/vector/src/main/java/im/vector/app/features/settings/legals/LegalsFragment.kt
+++ b/vector/src/main/java/im/vector/app/features/settings/legals/LegalsFragment.kt
@@ -33,11 +33,11 @@ import im.vector.app.databinding.FragmentGenericRecyclerBinding
import im.vector.app.features.analytics.plan.MobileScreen
import im.vector.app.features.discovery.ServerPolicy
import im.vector.app.features.settings.VectorSettingsUrls
-import im.vector.app.openOssLicensesMenuActivity
import javax.inject.Inject
class LegalsFragment @Inject constructor(
- private val controller: LegalsController
+ private val controller: LegalsController,
+ private val flavorLegals: FlavorLegals,
) : VectorBaseFragment(),
LegalsController.Listener {
@@ -100,8 +100,7 @@ class LegalsFragment @Inject constructor(
override fun openThirdPartyNoticeGplay() {
if (firstThrottler.canHandle() is FirstThrottler.CanHandlerResult.Yes) {
- // See https://developers.google.com/android/guides/opensource
- openOssLicensesMenuActivity(requireActivity())
+ flavorLegals.navigateToThirdPartyNotices(requireContext())
}
}
}
diff --git a/vector/src/main/java/im/vector/app/features/settings/notifications/VectorSettingsNotificationsTroubleshootFragment.kt b/vector/src/main/java/im/vector/app/features/settings/notifications/VectorSettingsNotificationsTroubleshootFragment.kt
index 8a3407b4284..e75824195e2 100644
--- a/vector/src/main/java/im/vector/app/features/settings/notifications/VectorSettingsNotificationsTroubleshootFragment.kt
+++ b/vector/src/main/java/im/vector/app/features/settings/notifications/VectorSettingsNotificationsTroubleshootFragment.kt
@@ -35,11 +35,11 @@ import im.vector.app.core.extensions.registerStartForActivityResult
import im.vector.app.core.platform.VectorBaseFragment
import im.vector.app.databinding.FragmentSettingsNotificationsTroubleshootBinding
import im.vector.app.features.notifications.NotificationActionIds
+import im.vector.app.features.push.NotificationTroubleshootTestManagerFactory
import im.vector.app.features.rageshake.BugReporter
import im.vector.app.features.settings.VectorSettingsFragmentInteractionListener
import im.vector.app.features.settings.troubleshoot.NotificationTroubleshootTestManager
import im.vector.app.features.settings.troubleshoot.TroubleshootTest
-import im.vector.app.push.fcm.NotificationTroubleshootTestManagerFactory
import org.matrix.android.sdk.api.extensions.orFalse
import org.matrix.android.sdk.api.extensions.tryOrNull
import javax.inject.Inject
diff --git a/vector/src/main/java/im/vector/app/features/settings/troubleshoot/TestAvailableUnifiedPushDistributors.kt b/vector/src/main/java/im/vector/app/features/settings/troubleshoot/TestAvailableUnifiedPushDistributors.kt
index acc01429243..89e7d8c204b 100644
--- a/vector/src/main/java/im/vector/app/features/settings/troubleshoot/TestAvailableUnifiedPushDistributors.kt
+++ b/vector/src/main/java/im/vector/app/features/settings/troubleshoot/TestAvailableUnifiedPushDistributors.kt
@@ -19,9 +19,9 @@ package im.vector.app.features.settings.troubleshoot
import android.content.Intent
import androidx.activity.result.ActivityResultLauncher
import im.vector.app.R
+import im.vector.app.core.pushers.FcmHelper
import im.vector.app.core.pushers.UnifiedPushHelper
import im.vector.app.core.resources.StringProvider
-import im.vector.app.push.fcm.FcmHelper
import javax.inject.Inject
class TestAvailableUnifiedPushDistributors @Inject constructor(
diff --git a/vector/src/release/java/im/vector/app/core/di/DebugModule.kt b/vector/src/release/java/im/vector/app/core/di/DebugModule.kt
new file mode 100644
index 00000000000..bedbe97864d
--- /dev/null
+++ b/vector/src/release/java/im/vector/app/core/di/DebugModule.kt
@@ -0,0 +1,60 @@
+/*
+ * Copyright (c) 2022 New Vector Ltd
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package im.vector.app.core.di
+
+import android.content.Context
+import dagger.Module
+import dagger.Provides
+import dagger.hilt.InstallIn
+import dagger.hilt.components.SingletonComponent
+import im.vector.app.core.debug.DebugNavigator
+import im.vector.app.core.debug.DebugReceiver
+import im.vector.app.core.debug.FlipperProxy
+import okhttp3.Interceptor
+import org.matrix.android.sdk.api.Matrix
+
+@InstallIn(SingletonComponent::class)
+@Module
+object DebugModule {
+
+ @Provides
+ fun providesDebugNavigator() = object : DebugNavigator {
+ override fun openDebugMenu(context: Context) {
+ // no op
+ }
+ }
+
+ @Provides
+ fun providesDebugReceiver() = object : DebugReceiver {
+ override fun register(context: Context) {
+ // no op
+ }
+
+ override fun unregister(context: Context) {
+ // no op
+ }
+ }
+
+ @Provides
+ fun providesFlipperProxy() = object : FlipperProxy {
+ override fun init(matrix: Matrix) {
+ // no op
+ }
+
+ override fun networkInterceptor(): Interceptor? = null
+ }
+}