From cc4aae0f4a2dab8546826708b698be21c11b4f6d Mon Sep 17 00:00:00 2001 From: Adam Brown Date: Fri, 1 Jul 2022 09:05:04 +0100 Subject: [PATCH] replacing DEBUG build config flag with injectable property --- .../src/main/java/im/vector/app/VectorApplication.kt | 8 +++++--- .../im/vector/app/core/di/ConfigurationModule.kt | 5 +++-- .../java/im/vector/app/core/di/SingletonModule.kt | 7 ++++++- .../vector/app/core/platform/VectorBaseActivity.kt | 12 +++++------- .../java/im/vector/app/core/resources/BuildMeta.kt | 6 +++--- .../app/features/analytics/impl/PostHogFactory.kt | 9 +++++++-- .../vector/app/features/home/HomeDrawerFragment.kt | 7 ++++--- .../im/vector/app/features/home/ShortcutCreator.kt | 7 +++++-- .../features/home/room/detail/TimelineViewModel.kt | 4 +++- .../home/room/detail/composer/AudioMessageHelper.kt | 4 +++- .../room/detail/timeline/url/PreviewUrlRetriever.kt | 7 ++++--- .../app/features/login/LoginServerUrlFormFragment.kt | 8 +++++--- .../vector/app/features/login/LoginSplashFragment.kt | 6 ++++-- .../features/login2/LoginServerUrlFormFragment2.kt | 8 +++++--- .../LoginSplashSignUpSignInSelectionFragment2.kt | 6 ++++-- .../app/features/notifications/NotificationUtils.kt | 2 ++ .../ftueauth/FtueAuthServerUrlFormFragment.kt | 7 +++++-- .../ftueauth/FtueAuthSplashCarouselFragment.kt | 6 ++++-- .../onboarding/ftueauth/FtueAuthSplashFragment.kt | 6 ++++-- .../im/vector/app/features/settings/VectorLocale.kt | 7 +++++-- .../app/features/settings/VectorPreferences.kt | 4 +++- .../settings/VectorSettingsHelpAboutFragment.kt | 6 ++++-- 22 files changed, 93 insertions(+), 49 deletions(-) diff --git a/vector/src/main/java/im/vector/app/VectorApplication.kt b/vector/src/main/java/im/vector/app/VectorApplication.kt index d3dfbf8c4f..8044ea96f7 100644 --- a/vector/src/main/java/im/vector/app/VectorApplication.kt +++ b/vector/src/main/java/im/vector/app/VectorApplication.kt @@ -41,6 +41,7 @@ import com.vanniktech.emoji.EmojiManager import com.vanniktech.emoji.google.GoogleEmojiProvider import dagger.hilt.android.HiltAndroidApp import im.vector.app.core.di.ActiveSessionHolder +import im.vector.app.core.resources.BuildMeta import im.vector.app.features.analytics.VectorAnalytics import im.vector.app.features.call.webrtc.WebRtcCallManager import im.vector.app.features.configuration.VectorConfiguration @@ -99,6 +100,7 @@ class VectorApplication : @Inject lateinit var flipperProxy: FlipperProxy @Inject lateinit var matrix: Matrix @Inject lateinit var fcmHelper: FcmHelper + @Inject lateinit var buildMeta: BuildMeta // font thread handler private var fontThreadHandler: Handler? = null @@ -127,12 +129,12 @@ class VectorApplication : .filterIsInstance(JitsiMeetDefaultLogHandler::class.java) .forEach { Timber.uproot(it) } - if (BuildConfig.DEBUG) { + if (buildMeta.isDebug) { Timber.plant(Timber.DebugTree()) } Timber.plant(vectorFileLogger) - if (BuildConfig.DEBUG) { + if (buildMeta.isDebug) { Stetho.initializeWithDefaults(this) } logInfo() @@ -148,7 +150,7 @@ class VectorApplication : R.array.com_google_android_gms_fonts_certs ) FontsContractCompat.requestFont(this, fontRequest, emojiCompatFontProvider, getFontThreadHandler()) - VectorLocale.init(this) + VectorLocale.init(this, buildMeta) ThemeUtils.init(this) vectorConfiguration.applyToApplicationContext() diff --git a/vector/src/main/java/im/vector/app/core/di/ConfigurationModule.kt b/vector/src/main/java/im/vector/app/core/di/ConfigurationModule.kt index 296f0be070..10c91a5dd1 100644 --- a/vector/src/main/java/im/vector/app/core/di/ConfigurationModule.kt +++ b/vector/src/main/java/im/vector/app/core/di/ConfigurationModule.kt @@ -24,6 +24,7 @@ import im.vector.app.BuildConfig import im.vector.app.config.Analytics import im.vector.app.config.Config import im.vector.app.config.KeySharingStrategy +import im.vector.app.core.resources.BuildMeta import im.vector.app.features.analytics.AnalyticsConfig import im.vector.app.features.call.webrtc.VoipConfig import im.vector.app.features.crypto.keysrequest.OutboundSessionKeySharingStrategy @@ -36,8 +37,8 @@ import im.vector.app.features.raw.wellknown.CryptoConfig object ConfigurationModule { @Provides - fun providesAnalyticsConfig(): AnalyticsConfig { - val config: Analytics = when (BuildConfig.DEBUG) { + fun providesAnalyticsConfig(buildMeta: BuildMeta): AnalyticsConfig { + val config: Analytics = when (buildMeta.isDebug) { true -> Config.DEBUG_ANALYTICS_CONFIG false -> Config.RELEASE_ANALYTICS_CONFIG } 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 bfa37057e2..3ba9eb0f5b 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 @@ -23,6 +23,7 @@ import android.content.SharedPreferences import android.content.res.Resources import androidx.preference.PreferenceManager import com.google.i18n.phonenumbers.PhoneNumberUtil +import android.os.Build import dagger.Binds import dagger.Module import dagger.Provides @@ -236,7 +237,11 @@ object VectorStaticModule { @Provides @Singleton - fun providesBuildMeta() = BuildMeta() + fun providesBuildMeta() = BuildMeta( + isDebug = BuildConfig.DEBUG, + sdkInt = Build.VERSION.SDK_INT, + applicationId = BuildConfig.APPLICATION_ID, + ) @Provides @Singleton 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 5ca5b62d1e..5bbe65d599 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 @@ -53,7 +53,6 @@ import com.google.android.material.appbar.MaterialToolbar import com.google.android.material.dialog.MaterialAlertDialogBuilder import com.google.android.material.snackbar.Snackbar import dagger.hilt.android.EntryPointAccessors -import im.vector.app.BuildConfig import im.vector.app.R import im.vector.app.core.di.ActiveSessionHolder import im.vector.app.core.di.ActivityEntryPoint @@ -67,6 +66,7 @@ import im.vector.app.core.extensions.restart import im.vector.app.core.extensions.setTextOrHide import im.vector.app.core.extensions.singletonEntryPoint import im.vector.app.core.extensions.toMvRxBundle +import im.vector.app.core.resources.BuildMeta import im.vector.app.core.utils.AndroidSystemSettingsProvider import im.vector.app.core.utils.ToolbarConfig import im.vector.app.core.utils.toast @@ -155,11 +155,9 @@ abstract class VectorBaseActivity : AppCompatActivity(), Maver protected lateinit var bugReporter: BugReporter private lateinit var pinLocker: PinLocker - @Inject - lateinit var rageShake: RageShake - - @Inject - lateinit var fontScalePreferences: FontScalePreferences + @Inject lateinit var rageShake: RageShake + @Inject lateinit var buildMeta: BuildMeta + @Inject lateinit var fontScalePreferences: FontScalePreferences lateinit var navigator: Navigator private set @@ -409,7 +407,7 @@ abstract class VectorBaseActivity : AppCompatActivity(), Maver } DebugReceiver .getIntentFilter(this) - .takeIf { BuildConfig.DEBUG } + .takeIf { buildMeta.isDebug } ?.let { debugReceiver = DebugReceiver() registerReceiver(debugReceiver, it) diff --git a/vector/src/main/java/im/vector/app/core/resources/BuildMeta.kt b/vector/src/main/java/im/vector/app/core/resources/BuildMeta.kt index 14d97e4c8f..beed091b58 100644 --- a/vector/src/main/java/im/vector/app/core/resources/BuildMeta.kt +++ b/vector/src/main/java/im/vector/app/core/resources/BuildMeta.kt @@ -16,8 +16,8 @@ package im.vector.app.core.resources -import android.os.Build - data class BuildMeta( - val sdkInt: Int = Build.VERSION.SDK_INT + val isDebug: Boolean, + val sdkInt: Int, + val applicationId: String, ) diff --git a/vector/src/main/java/im/vector/app/features/analytics/impl/PostHogFactory.kt b/vector/src/main/java/im/vector/app/features/analytics/impl/PostHogFactory.kt index b86c2cf75a..6ff10cfb7f 100644 --- a/vector/src/main/java/im/vector/app/features/analytics/impl/PostHogFactory.kt +++ b/vector/src/main/java/im/vector/app/features/analytics/impl/PostHogFactory.kt @@ -19,10 +19,15 @@ package im.vector.app.features.analytics.impl import android.content.Context import com.posthog.android.PostHog import im.vector.app.BuildConfig +import im.vector.app.core.resources.BuildMeta import im.vector.app.features.analytics.AnalyticsConfig import javax.inject.Inject -class PostHogFactory @Inject constructor(private val context: Context, private val analyticsConfig: AnalyticsConfig) { +class PostHogFactory @Inject constructor( + private val context: Context, + private val analyticsConfig: AnalyticsConfig, + private val buildMeta: BuildMeta, +) { fun createPosthog(): PostHog { return PostHog.Builder(context, analyticsConfig.postHogApiKey, analyticsConfig.postHogHost) @@ -43,7 +48,7 @@ class PostHogFactory @Inject constructor(private val context: Context, private v } private fun getLogLevel(): PostHog.LogLevel { - return if (BuildConfig.DEBUG) { + return if (buildMeta.isDebug) { PostHog.LogLevel.DEBUG } else { PostHog.LogLevel.INFO diff --git a/vector/src/main/java/im/vector/app/features/home/HomeDrawerFragment.kt b/vector/src/main/java/im/vector/app/features/home/HomeDrawerFragment.kt index 9ce950ba31..8c2f6c45ff 100644 --- a/vector/src/main/java/im/vector/app/features/home/HomeDrawerFragment.kt +++ b/vector/src/main/java/im/vector/app/features/home/HomeDrawerFragment.kt @@ -23,11 +23,11 @@ import android.view.ViewGroup import androidx.core.app.ActivityOptionsCompat import androidx.core.view.ViewCompat import androidx.core.view.isVisible -import im.vector.app.BuildConfig import im.vector.app.R import im.vector.app.core.extensions.observeK import im.vector.app.core.extensions.replaceChildFragment import im.vector.app.core.platform.VectorBaseFragment +import im.vector.app.core.resources.BuildMeta import im.vector.app.core.utils.startSharePlainTextIntent import im.vector.app.databinding.FragmentHomeDrawerBinding import im.vector.app.features.analytics.plan.MobileScreen @@ -43,7 +43,8 @@ import javax.inject.Inject class HomeDrawerFragment @Inject constructor( private val session: Session, private val vectorPreferences: VectorPreferences, - private val avatarRenderer: AvatarRenderer + private val avatarRenderer: AvatarRenderer, + private val buildMeta: BuildMeta, ) : VectorBaseFragment() { private lateinit var sharedActionViewModel: HomeSharedActionViewModel @@ -112,7 +113,7 @@ class HomeDrawerFragment @Inject constructor( } // Debug menu - views.homeDrawerHeaderDebugView.isVisible = BuildConfig.DEBUG && vectorPreferences.developerMode() + views.homeDrawerHeaderDebugView.isVisible = buildMeta.isDebug && vectorPreferences.developerMode() views.homeDrawerHeaderDebugView.debouncedClicks { sharedActionViewModel.post(HomeActivitySharedAction.CloseDrawer) navigator.openDebug(requireActivity()) diff --git a/vector/src/main/java/im/vector/app/features/home/ShortcutCreator.kt b/vector/src/main/java/im/vector/app/features/home/ShortcutCreator.kt index a51b8eff63..bcf3c5a5cb 100644 --- a/vector/src/main/java/im/vector/app/features/home/ShortcutCreator.kt +++ b/vector/src/main/java/im/vector/app/features/home/ShortcutCreator.kt @@ -26,6 +26,7 @@ import androidx.core.content.pm.ShortcutManagerCompat import androidx.core.graphics.drawable.IconCompat import im.vector.app.BuildConfig import im.vector.app.core.glide.GlideApp +import im.vector.app.core.resources.BuildMeta import im.vector.app.core.utils.DimensionConverter import im.vector.app.features.MainActivity import org.matrix.android.sdk.api.session.room.model.RoomSummary @@ -35,13 +36,15 @@ import javax.inject.Inject private val useAdaptiveIcon = Build.VERSION.SDK_INT >= Build.VERSION_CODES.O private const val adaptiveIconSizeDp = 108 private const val adaptiveIconOuterSidesDp = 18 -private const val directShareCategory = BuildConfig.APPLICATION_ID + ".SHORTCUT_SHARE" class ShortcutCreator @Inject constructor( private val context: Context, private val avatarRenderer: AvatarRenderer, - private val dimensionConverter: DimensionConverter + private val dimensionConverter: DimensionConverter, + buildMeta: BuildMeta, ) { + + private val directShareCategory = buildMeta.applicationId + ".SHORTCUT_SHARE" private val adaptiveIconSize = dimensionConverter.dpToPx(adaptiveIconSizeDp) private val adaptiveIconOuterSides = dimensionConverter.dpToPx(adaptiveIconOuterSidesDp) private val iconSize by lazy { diff --git a/vector/src/main/java/im/vector/app/features/home/room/detail/TimelineViewModel.kt b/vector/src/main/java/im/vector/app/features/home/room/detail/TimelineViewModel.kt index b2a0e52db9..7bd6ab2ea1 100644 --- a/vector/src/main/java/im/vector/app/features/home/room/detail/TimelineViewModel.kt +++ b/vector/src/main/java/im/vector/app/features/home/room/detail/TimelineViewModel.kt @@ -33,6 +33,7 @@ import im.vector.app.core.di.MavericksAssistedViewModelFactory import im.vector.app.core.di.hiltMavericksViewModelFactory import im.vector.app.core.mvrx.runCatchingToAsync import im.vector.app.core.platform.VectorViewModel +import im.vector.app.core.resources.BuildMeta import im.vector.app.core.resources.StringProvider import im.vector.app.core.utils.BehaviorDataSource import im.vector.app.features.analytics.AnalyticsTracker @@ -139,6 +140,7 @@ class TimelineViewModel @AssistedInject constructor( private val stopLiveLocationShareUseCase: StopLiveLocationShareUseCase, private val redactLiveLocationShareEventUseCase: RedactLiveLocationShareEventUseCase, private val cryptoConfig: CryptoConfig, + buildMeta: BuildMeta, timelineFactory: TimelineFactory, spaceStateHandler: SpaceStateHandler, ) : VectorViewModel(initialState), @@ -152,7 +154,7 @@ class TimelineViewModel @AssistedInject constructor( val timeline = timelineFactory.createTimeline(viewModelScope, room, eventId, initialState.rootThreadEventId) // Same lifecycle than the ViewModel (survive to screen rotation) - val previewUrlRetriever = PreviewUrlRetriever(session, viewModelScope) + val previewUrlRetriever = PreviewUrlRetriever(session, viewModelScope, buildMeta) // Slot to keep a pending action during permission request var pendingAction: RoomDetailAction? = null diff --git a/vector/src/main/java/im/vector/app/features/home/room/detail/composer/AudioMessageHelper.kt b/vector/src/main/java/im/vector/app/features/home/room/detail/composer/AudioMessageHelper.kt index 9374d51228..6f8d78a32d 100644 --- a/vector/src/main/java/im/vector/app/features/home/room/detail/composer/AudioMessageHelper.kt +++ b/vector/src/main/java/im/vector/app/features/home/room/detail/composer/AudioMessageHelper.kt @@ -21,6 +21,7 @@ import android.media.AudioAttributes import android.media.MediaPlayer import androidx.core.content.FileProvider import im.vector.app.BuildConfig +import im.vector.app.core.resources.BuildMeta import im.vector.app.features.home.room.detail.timeline.helper.AudioMessagePlaybackTracker import im.vector.app.features.voice.VoiceFailure import im.vector.app.features.voice.VoiceRecorder @@ -43,6 +44,7 @@ import javax.inject.Inject class AudioMessageHelper @Inject constructor( private val context: Context, private val playbackTracker: AudioMessagePlaybackTracker, + private val buildMeta: BuildMeta, voiceRecorderProvider: VoiceRecorderProvider ) { private var mediaPlayer: MediaPlayer? = null @@ -88,7 +90,7 @@ class AudioMessageHelper @Inject constructor( try { voiceMessageFile?.let { - val outputFileUri = FileProvider.getUriForFile(context, BuildConfig.APPLICATION_ID + ".fileProvider", it, "Voice message.${it.extension}") + val outputFileUri = FileProvider.getUriForFile(context, buildMeta.applicationId + ".fileProvider", it, "Voice message.${it.extension}") return outputFileUri .toMultiPickerAudioType(context) ?.apply { diff --git a/vector/src/main/java/im/vector/app/features/home/room/detail/timeline/url/PreviewUrlRetriever.kt b/vector/src/main/java/im/vector/app/features/home/room/detail/timeline/url/PreviewUrlRetriever.kt index eef649dbc0..1c5cdd2562 100644 --- a/vector/src/main/java/im/vector/app/features/home/room/detail/timeline/url/PreviewUrlRetriever.kt +++ b/vector/src/main/java/im/vector/app/features/home/room/detail/timeline/url/PreviewUrlRetriever.kt @@ -16,7 +16,7 @@ package im.vector.app.features.home.room.detail.timeline.url -import im.vector.app.BuildConfig +import im.vector.app.core.resources.BuildMeta import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.launch @@ -27,7 +27,8 @@ import org.matrix.android.sdk.api.session.room.timeline.getLatestEventId class PreviewUrlRetriever( session: Session, - private val coroutineScope: CoroutineScope + private val coroutineScope: CoroutineScope, + private val buildMeta: BuildMeta, ) { private val mediaService = session.mediaService() @@ -77,7 +78,7 @@ class PreviewUrlRetriever( mediaService.getPreviewUrl( url = urlToRetrieve, timestamp = null, - cacheStrategy = if (BuildConfig.DEBUG) CacheStrategy.NoCache else CacheStrategy.TtlCache(CACHE_VALIDITY, false) + cacheStrategy = if (buildMeta.isDebug) CacheStrategy.NoCache else CacheStrategy.TtlCache(CACHE_VALIDITY, false) ) }.fold( { diff --git a/vector/src/main/java/im/vector/app/features/login/LoginServerUrlFormFragment.kt b/vector/src/main/java/im/vector/app/features/login/LoginServerUrlFormFragment.kt index b0adeff04b..937e1bdf55 100644 --- a/vector/src/main/java/im/vector/app/features/login/LoginServerUrlFormFragment.kt +++ b/vector/src/main/java/im/vector/app/features/login/LoginServerUrlFormFragment.kt @@ -27,9 +27,9 @@ import androidx.core.view.isInvisible import androidx.core.view.isVisible import androidx.lifecycle.lifecycleScope import com.google.android.material.textfield.TextInputLayout -import im.vector.app.BuildConfig import im.vector.app.R import im.vector.app.core.extensions.hideKeyboard +import im.vector.app.core.resources.BuildMeta import im.vector.app.core.utils.ensureProtocol import im.vector.app.core.utils.openUrlInChromeCustomTab import im.vector.app.databinding.FragmentLoginServerUrlFormBinding @@ -43,7 +43,9 @@ import javax.inject.Inject /** * In this screen, the user is prompted to enter a homeserver url. */ -class LoginServerUrlFormFragment @Inject constructor() : AbstractLoginFragment() { +class LoginServerUrlFormFragment @Inject constructor( + private val buildMeta: BuildMeta, +) : AbstractLoginFragment() { override fun getBinding(inflater: LayoutInflater, container: ViewGroup?): FragmentLoginServerUrlFormBinding { return FragmentLoginServerUrlFormBinding.inflate(inflater, container, false) @@ -99,7 +101,7 @@ class LoginServerUrlFormFragment @Inject constructor() : AbstractLoginFragment() { override fun getBinding(inflater: LayoutInflater, container: ViewGroup?): FragmentLoginSplashBinding { @@ -57,7 +59,7 @@ class LoginSplashFragment @Inject constructor( private fun setupViews() { views.loginSplashSubmit.debouncedClicks { getStarted() } - if (BuildConfig.DEBUG || vectorPreferences.developerMode()) { + if (buildMeta.isDebug || vectorPreferences.developerMode()) { views.loginSplashVersion.isVisible = true @SuppressLint("SetTextI18n") views.loginSplashVersion.text = "Version : ${BuildConfig.VERSION_NAME}\n" + diff --git a/vector/src/main/java/im/vector/app/features/login2/LoginServerUrlFormFragment2.kt b/vector/src/main/java/im/vector/app/features/login2/LoginServerUrlFormFragment2.kt index bcd2d84346..50f8f38634 100644 --- a/vector/src/main/java/im/vector/app/features/login2/LoginServerUrlFormFragment2.kt +++ b/vector/src/main/java/im/vector/app/features/login2/LoginServerUrlFormFragment2.kt @@ -26,9 +26,9 @@ import android.widget.ArrayAdapter import androidx.core.view.isInvisible import androidx.lifecycle.lifecycleScope import com.google.android.material.textfield.TextInputLayout -import im.vector.app.BuildConfig import im.vector.app.R import im.vector.app.core.extensions.hideKeyboard +import im.vector.app.core.resources.BuildMeta import im.vector.app.core.utils.ensureProtocol import im.vector.app.databinding.FragmentLoginServerUrlForm2Binding import kotlinx.coroutines.flow.launchIn @@ -43,7 +43,9 @@ import javax.net.ssl.HttpsURLConnection /** * In this screen, the user is prompted to enter a homeserver url. */ -class LoginServerUrlFormFragment2 @Inject constructor() : AbstractLoginFragment2() { +class LoginServerUrlFormFragment2 @Inject constructor( + private val buildMeta: BuildMeta, +) : AbstractLoginFragment2() { override fun getBinding(inflater: LayoutInflater, container: ViewGroup?): FragmentLoginServerUrlForm2Binding { return FragmentLoginServerUrlForm2Binding.inflate(inflater, container, false) @@ -80,7 +82,7 @@ class LoginServerUrlFormFragment2 @Inject constructor() : AbstractLoginFragment2 } private fun setupUi(state: LoginViewState2) { - val completions = state.knownCustomHomeServersUrls + if (BuildConfig.DEBUG) listOf("http://10.0.2.2:8080") else emptyList() + val completions = state.knownCustomHomeServersUrls + if (buildMeta.isDebug) listOf("http://10.0.2.2:8080") else emptyList() views.loginServerUrlFormHomeServerUrl.setAdapter( ArrayAdapter( requireContext(), diff --git a/vector/src/main/java/im/vector/app/features/login2/LoginSplashSignUpSignInSelectionFragment2.kt b/vector/src/main/java/im/vector/app/features/login2/LoginSplashSignUpSignInSelectionFragment2.kt index 611b5f4cd2..8bc9bed9e2 100644 --- a/vector/src/main/java/im/vector/app/features/login2/LoginSplashSignUpSignInSelectionFragment2.kt +++ b/vector/src/main/java/im/vector/app/features/login2/LoginSplashSignUpSignInSelectionFragment2.kt @@ -23,6 +23,7 @@ import android.view.View import android.view.ViewGroup import androidx.core.view.isVisible import im.vector.app.BuildConfig +import im.vector.app.core.resources.BuildMeta import im.vector.app.databinding.FragmentLoginSplash2Binding import im.vector.app.features.settings.VectorPreferences import javax.inject.Inject @@ -32,7 +33,8 @@ import javax.inject.Inject * This is the new splash screen. */ class LoginSplashSignUpSignInSelectionFragment2 @Inject constructor( - private val vectorPreferences: VectorPreferences + private val vectorPreferences: VectorPreferences, + private val buildMeta: BuildMeta, ) : AbstractLoginFragment2() { override fun getBinding(inflater: LayoutInflater, container: ViewGroup?): FragmentLoginSplash2Binding { @@ -49,7 +51,7 @@ class LoginSplashSignUpSignInSelectionFragment2 @Inject constructor( views.loginSignupSigninSignUp.setOnClickListener { signUp() } views.loginSignupSigninSignIn.setOnClickListener { signIn() } - if (BuildConfig.DEBUG || vectorPreferences.developerMode()) { + if (buildMeta.isDebug || vectorPreferences.developerMode()) { views.loginSplashVersion.isVisible = true @SuppressLint("SetTextI18n") views.loginSplashVersion.text = "Version : ${BuildConfig.VERSION_NAME}\n" + diff --git a/vector/src/main/java/im/vector/app/features/notifications/NotificationUtils.kt b/vector/src/main/java/im/vector/app/features/notifications/NotificationUtils.kt index b5bd02b9d5..0985823000 100755 --- a/vector/src/main/java/im/vector/app/features/notifications/NotificationUtils.kt +++ b/vector/src/main/java/im/vector/app/features/notifications/NotificationUtils.kt @@ -49,6 +49,7 @@ import im.vector.app.BuildConfig import im.vector.app.R import im.vector.app.core.extensions.createIgnoredUri import im.vector.app.core.platform.PendingIntentCompat +import im.vector.app.core.resources.BuildMeta import im.vector.app.core.resources.StringProvider import im.vector.app.core.services.CallAndroidService import im.vector.app.core.time.Clock @@ -79,6 +80,7 @@ class NotificationUtils @Inject constructor( private val stringProvider: StringProvider, private val vectorPreferences: VectorPreferences, private val clock: Clock, + private val buildMeta: BuildMeta, ) { companion object { diff --git a/vector/src/main/java/im/vector/app/features/onboarding/ftueauth/FtueAuthServerUrlFormFragment.kt b/vector/src/main/java/im/vector/app/features/onboarding/ftueauth/FtueAuthServerUrlFormFragment.kt index b2a99ffb7e..525e4eeb9b 100644 --- a/vector/src/main/java/im/vector/app/features/onboarding/ftueauth/FtueAuthServerUrlFormFragment.kt +++ b/vector/src/main/java/im/vector/app/features/onboarding/ftueauth/FtueAuthServerUrlFormFragment.kt @@ -30,6 +30,7 @@ import com.google.android.material.textfield.TextInputLayout import im.vector.app.BuildConfig import im.vector.app.R import im.vector.app.core.extensions.hideKeyboard +import im.vector.app.core.resources.BuildMeta import im.vector.app.core.utils.ensureProtocol import im.vector.app.core.utils.openUrlInChromeCustomTab import im.vector.app.databinding.FragmentLoginServerUrlFormBinding @@ -47,7 +48,9 @@ import javax.inject.Inject /** * In this screen, the user is prompted to enter a homeserver url. */ -class FtueAuthServerUrlFormFragment @Inject constructor() : AbstractFtueAuthFragment() { +class FtueAuthServerUrlFormFragment @Inject constructor( + private val buildMeta: BuildMeta, +) : AbstractFtueAuthFragment() { override fun getBinding(inflater: LayoutInflater, container: ViewGroup?): FragmentLoginServerUrlFormBinding { return FragmentLoginServerUrlFormBinding.inflate(inflater, container, false) @@ -103,7 +106,7 @@ class FtueAuthServerUrlFormFragment @Inject constructor() : AbstractFtueAuthFrag views.loginServerUrlFormNotice.text = getString(R.string.login_server_url_form_common_notice) } } - val completions = state.knownCustomHomeServersUrls + if (BuildConfig.DEBUG) listOf("http://10.0.2.2:8080") else emptyList() + val completions = state.knownCustomHomeServersUrls + if (buildMeta.isDebug) listOf("http://10.0.2.2:8080") else emptyList() views.loginServerUrlFormHomeServerUrl.setAdapter( ArrayAdapter( requireContext(), diff --git a/vector/src/main/java/im/vector/app/features/onboarding/ftueauth/FtueAuthSplashCarouselFragment.kt b/vector/src/main/java/im/vector/app/features/onboarding/ftueauth/FtueAuthSplashCarouselFragment.kt index 0d86c4cd24..2d12a1be7c 100644 --- a/vector/src/main/java/im/vector/app/features/onboarding/ftueauth/FtueAuthSplashCarouselFragment.kt +++ b/vector/src/main/java/im/vector/app/features/onboarding/ftueauth/FtueAuthSplashCarouselFragment.kt @@ -31,6 +31,7 @@ import im.vector.app.BuildConfig import im.vector.app.R import im.vector.app.core.extensions.incrementByOneAndWrap import im.vector.app.core.extensions.setCurrentItem +import im.vector.app.core.resources.BuildMeta import im.vector.app.databinding.FragmentFtueSplashCarouselBinding import im.vector.app.features.VectorFeatures import im.vector.app.features.onboarding.OnboardingAction @@ -48,7 +49,8 @@ class FtueAuthSplashCarouselFragment @Inject constructor( private val vectorPreferences: VectorPreferences, private val vectorFeatures: VectorFeatures, private val carouselController: SplashCarouselController, - private val carouselStateFactory: SplashCarouselStateFactory + private val carouselStateFactory: SplashCarouselStateFactory, + private val buildMeta: BuildMeta, ) : AbstractFtueAuthFragment() { override fun getBinding(inflater: LayoutInflater, container: ViewGroup?): FragmentFtueSplashCarouselBinding { @@ -76,7 +78,7 @@ class FtueAuthSplashCarouselFragment @Inject constructor( debouncedClicks { alreadyHaveAnAccount() } } - if (BuildConfig.DEBUG || vectorPreferences.developerMode()) { + if (buildMeta.isDebug || vectorPreferences.developerMode()) { views.loginSplashVersion.isVisible = true @SuppressLint("SetTextI18n") views.loginSplashVersion.text = "Version : ${BuildConfig.VERSION_NAME}#${BuildConfig.BUILD_NUMBER}\n" + diff --git a/vector/src/main/java/im/vector/app/features/onboarding/ftueauth/FtueAuthSplashFragment.kt b/vector/src/main/java/im/vector/app/features/onboarding/ftueauth/FtueAuthSplashFragment.kt index cd1e4b2714..d4e5722896 100644 --- a/vector/src/main/java/im/vector/app/features/onboarding/ftueauth/FtueAuthSplashFragment.kt +++ b/vector/src/main/java/im/vector/app/features/onboarding/ftueauth/FtueAuthSplashFragment.kt @@ -24,6 +24,7 @@ import android.view.ViewGroup import androidx.core.view.isVisible import im.vector.app.BuildConfig import im.vector.app.R +import im.vector.app.core.resources.BuildMeta import im.vector.app.databinding.FragmentFtueAuthSplashBinding import im.vector.app.features.VectorFeatures import im.vector.app.features.onboarding.OnboardingAction @@ -36,7 +37,8 @@ import javax.inject.Inject */ class FtueAuthSplashFragment @Inject constructor( private val vectorPreferences: VectorPreferences, - private val vectorFeatures: VectorFeatures + private val vectorFeatures: VectorFeatures, + private val buildMeta: BuildMeta, ) : AbstractFtueAuthFragment() { override fun getBinding(inflater: LayoutInflater, container: ViewGroup?): FragmentFtueAuthSplashBinding { @@ -59,7 +61,7 @@ class FtueAuthSplashFragment @Inject constructor( debouncedClicks { alreadyHaveAnAccount() } } - if (BuildConfig.DEBUG || vectorPreferences.developerMode()) { + if (buildMeta.isDebug || vectorPreferences.developerMode()) { views.loginSplashVersion.isVisible = true @SuppressLint("SetTextI18n") views.loginSplashVersion.text = "Version : ${BuildConfig.VERSION_NAME}\n" + diff --git a/vector/src/main/java/im/vector/app/features/settings/VectorLocale.kt b/vector/src/main/java/im/vector/app/features/settings/VectorLocale.kt index 326f20845f..6c85fa30d2 100644 --- a/vector/src/main/java/im/vector/app/features/settings/VectorLocale.kt +++ b/vector/src/main/java/im/vector/app/features/settings/VectorLocale.kt @@ -22,6 +22,7 @@ import androidx.core.content.edit import im.vector.app.BuildConfig import im.vector.app.R import im.vector.app.core.di.DefaultSharedPreferences +import im.vector.app.core.resources.BuildMeta import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.withContext import timber.log.Timber @@ -53,12 +54,14 @@ object VectorLocale { private set private lateinit var context: Context + private lateinit var buildMeta: BuildMeta /** * Init this object. */ - fun init(context: Context) { + fun init(context: Context, buildMeta: BuildMeta) { this.context = context + this.buildMeta = buildMeta val preferences = DefaultSharedPreferences.getInstance(context) if (preferences.contains(APPLICATION_LOCALE_LANGUAGE_KEY)) { @@ -174,7 +177,7 @@ object VectorLocale { .setScript(script) .build() } catch (exception: IllformedLocaleException) { - if (BuildConfig.DEBUG) { + if (buildMeta.isDebug) { throw exception } // Ignore this locale in production diff --git a/vector/src/main/java/im/vector/app/features/settings/VectorPreferences.kt b/vector/src/main/java/im/vector/app/features/settings/VectorPreferences.kt index 3b202969e5..410f883f1d 100755 --- a/vector/src/main/java/im/vector/app/features/settings/VectorPreferences.kt +++ b/vector/src/main/java/im/vector/app/features/settings/VectorPreferences.kt @@ -26,6 +26,7 @@ import com.squareup.seismic.ShakeDetector import im.vector.app.BuildConfig import im.vector.app.R import im.vector.app.core.di.DefaultSharedPreferences +import im.vector.app.core.resources.BuildMeta import im.vector.app.core.time.Clock import im.vector.app.features.disclaimer.SHARED_PREF_KEY import im.vector.app.features.home.ShortcutsHandler @@ -38,6 +39,7 @@ import javax.inject.Inject class VectorPreferences @Inject constructor( private val context: Context, private val clock: Clock, + private val buildMeta: BuildMeta, ) { companion object { @@ -364,7 +366,7 @@ class VectorPreferences @Inject constructor( } fun failFast(): Boolean { - return BuildConfig.DEBUG || (developerMode() && defaultPrefs.getBoolean(SETTINGS_DEVELOPER_MODE_FAIL_FAST_PREFERENCE_KEY, false)) + return buildMeta.isDebug || (developerMode() && defaultPrefs.getBoolean(SETTINGS_DEVELOPER_MODE_FAIL_FAST_PREFERENCE_KEY, false)) } fun didAskUserToEnableSessionPush(): Boolean { diff --git a/vector/src/main/java/im/vector/app/features/settings/VectorSettingsHelpAboutFragment.kt b/vector/src/main/java/im/vector/app/features/settings/VectorSettingsHelpAboutFragment.kt index 5844467a1f..977e2fbeba 100644 --- a/vector/src/main/java/im/vector/app/features/settings/VectorSettingsHelpAboutFragment.kt +++ b/vector/src/main/java/im/vector/app/features/settings/VectorSettingsHelpAboutFragment.kt @@ -22,6 +22,7 @@ import im.vector.app.BuildConfig import im.vector.app.R import im.vector.app.core.extensions.orEmpty import im.vector.app.core.preference.VectorPreference +import im.vector.app.core.resources.BuildMeta import im.vector.app.core.utils.FirstThrottler import im.vector.app.core.utils.copyToClipboard import im.vector.app.core.utils.openAppSettingsPage @@ -32,7 +33,8 @@ import org.matrix.android.sdk.api.Matrix import javax.inject.Inject class VectorSettingsHelpAboutFragment @Inject constructor( - private val versionProvider: VersionProvider + private val versionProvider: VersionProvider, + private val buildMeta: BuildMeta, ) : VectorSettingsBaseFragment() { override var titleRes = R.string.preference_root_help_about @@ -66,7 +68,7 @@ class VectorSettingsHelpAboutFragment @Inject constructor( findPreference(VectorPreferences.SETTINGS_VERSION_PREFERENCE_KEY)!!.let { it.summary = buildString { append(versionProvider.getVersion(longFormat = false, useBuildNumber = true)) - if (BuildConfig.DEBUG) { + if (buildMeta.isDebug) { append(" ") append(BuildConfig.GIT_BRANCH_NAME) }