moving debug menu access to only the debug sourceset and providing an injectable interface to decouple from the direct access

This commit is contained in:
Adam Brown 2022-08-08 17:02:08 +01:00
parent e02cf61f2f
commit 19c8b2a630
6 changed files with 36 additions and 10 deletions

View File

@ -9,6 +9,7 @@
<activity android:name=".features.debug.settings.DebugPrivateSettingsActivity" /> <activity android:name=".features.debug.settings.DebugPrivateSettingsActivity" />
<activity android:name=".features.debug.sas.DebugSasEmojiActivity" /> <activity android:name=".features.debug.sas.DebugSasEmojiActivity" />
<activity android:name=".features.debug.features.DebugFeaturesSettingsActivity" /> <activity android:name=".features.debug.features.DebugFeaturesSettingsActivity" />
<activity android:name=".features.debug.DebugMenuActivity" />
<activity <activity
android:name="com.facebook.flipper.android.diagnostics.FlipperDiagnosticActivity" android:name="com.facebook.flipper.android.diagnostics.FlipperDiagnosticActivity"

View File

@ -16,17 +16,32 @@
package im.vector.app.features.debug.di package im.vector.app.features.debug.di
import android.content.Context
import android.content.Intent
import dagger.Binds import dagger.Binds
import dagger.Module import dagger.Module
import dagger.Provides
import dagger.hilt.InstallIn import dagger.hilt.InstallIn
import dagger.hilt.components.SingletonComponent import dagger.hilt.components.SingletonComponent
import im.vector.app.core.platform.DebugReceiver import im.vector.app.core.platform.DebugReceiver
import im.vector.app.features.debug.DebugMenuActivity
import im.vector.app.features.navigation.DebugNavigator
import im.vector.app.receivers.VectorDebugReceiver import im.vector.app.receivers.VectorDebugReceiver
@InstallIn(SingletonComponent::class) @InstallIn(SingletonComponent::class)
@Module @Module
abstract class DebugModule { abstract class DebugModule {
companion object {
@Provides
fun providesDebugNavigator() = object : DebugNavigator {
override fun openDebugMenu(context: Context) {
context.startActivity(Intent(context, DebugMenuActivity::class.java))
}
}
}
@Binds @Binds
abstract fun bindsDebugReceiver(receiver: VectorDebugReceiver): DebugReceiver abstract fun bindsDebugReceiver(receiver: VectorDebugReceiver): DebugReceiver
} }

View File

@ -187,7 +187,6 @@
android:name="android.support.PARENT_ACTIVITY" android:name="android.support.PARENT_ACTIVITY"
android:value=".features.home.HomeActivity" /> android:value=".features.home.HomeActivity" />
</activity> </activity>
<activity android:name=".features.debug.DebugMenuActivity" />
<activity android:name=".features.createdirect.CreateDirectRoomActivity" /> <activity android:name=".features.createdirect.CreateDirectRoomActivity" />
<activity android:name=".features.invite.InviteUsersToRoomActivity" /> <activity android:name=".features.invite.InviteUsersToRoomActivity" />
<activity android:name=".features.webview.VectorWebViewActivity" /> <activity android:name=".features.webview.VectorWebViewActivity" />

View File

@ -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"); * Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License. * you may not use this file except in compliance with the License.
@ -14,9 +14,10 @@
* limitations under the License. * limitations under the License.
*/ */
package im.vector.app.features.debug package im.vector.app.features.navigation
import androidx.appcompat.app.AppCompatActivity import android.content.Context
// This activity is not accessible interface DebugNavigator {
class DebugMenuActivity : AppCompatActivity() fun openDebugMenu(context: Context)
}

View File

@ -51,7 +51,6 @@ import im.vector.app.features.crypto.recover.BootstrapBottomSheet
import im.vector.app.features.crypto.recover.SetupMode import im.vector.app.features.crypto.recover.SetupMode
import im.vector.app.features.crypto.verification.SupportedVerificationMethodsProvider import im.vector.app.features.crypto.verification.SupportedVerificationMethodsProvider
import im.vector.app.features.crypto.verification.VerificationBottomSheet 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.devtools.RoomDevToolActivity
import im.vector.app.features.home.room.detail.RoomDetailActivity import im.vector.app.features.home.room.detail.RoomDetailActivity
import im.vector.app.features.home.room.detail.arguments.TimelineArgs import im.vector.app.features.home.room.detail.arguments.TimelineArgs
@ -123,7 +122,8 @@ class DefaultNavigator @Inject constructor(
private val spaceStateHandler: SpaceStateHandler, private val spaceStateHandler: SpaceStateHandler,
private val supportedVerificationMethodsProvider: SupportedVerificationMethodsProvider, private val supportedVerificationMethodsProvider: SupportedVerificationMethodsProvider,
private val features: VectorFeatures, private val features: VectorFeatures,
private val analyticsTracker: AnalyticsTracker private val analyticsTracker: AnalyticsTracker,
private val debugNavigator: DebugNavigator,
) : Navigator { ) : Navigator {
override fun openLogin(context: Context, loginConfig: LoginConfig?, flags: Int) { override fun openLogin(context: Context, loginConfig: LoginConfig?, flags: Int) {
@ -367,7 +367,7 @@ class DefaultNavigator @Inject constructor(
} }
override fun openDebug(context: Context) { override fun openDebug(context: Context) {
context.startActivity(Intent(context, DebugMenuActivity::class.java)) debugNavigator.openDebugMenu(context)
} }
override fun openKeysBackupSetup(context: Context, showManualExport: Boolean) { override fun openKeysBackupSetup(context: Context, showManualExport: Boolean) {
@ -615,3 +615,4 @@ class DefaultNavigator @Inject constructor(
context.startActivity(this) context.startActivity(this)
} }
} }

View File

@ -21,12 +21,21 @@ import dagger.Module
import dagger.hilt.InstallIn import dagger.hilt.InstallIn
import dagger.hilt.components.SingletonComponent import dagger.hilt.components.SingletonComponent
import im.vector.app.core.platform.DebugReceiver import im.vector.app.core.platform.DebugReceiver
import im.vector.app.features.navigation.DebugNavigator
@InstallIn(SingletonComponent::class) @InstallIn(SingletonComponent::class)
@Module @Module
object DebugModule { object DebugModule {
@Provides @Provides
fun providesDebugReceiver() = object: DebugReceiver { fun providesDebugNavigator() = object : DebugNavigator {
override fun openDebugMenu(context: Context) {
// no op
}
}
@Provides
fun providesDebugReceiver() = object : DebugReceiver {
override fun register(context: Context) { override fun register(context: Context) {
// no op // no op
} }