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 de71969e1b..25d3d8311f 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 @@ -20,6 +20,7 @@ import dagger.Module import dagger.Provides import dagger.hilt.InstallIn import dagger.hilt.components.SingletonComponent +import im.vector.app.BuildConfig import im.vector.app.config.Analytics import im.vector.app.config.Config import im.vector.app.config.KeySharingStrategy 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 8c1fc7744d..9756525137 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,7 +23,6 @@ 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 @@ -212,7 +211,6 @@ object VectorStaticModule { @Singleton fun providesBuildMeta() = BuildMeta( isDebug = BuildConfig.DEBUG, - sdkInt = Build.VERSION.SDK_INT, applicationId = BuildConfig.APPLICATION_ID, lowPrivacyLoggingEnabled = Config.LOW_PRIVACY_LOG_ENABLE, versionName = BuildConfig.VERSION_NAME, diff --git a/vector/src/main/java/im/vector/app/core/extensions/Context.kt b/vector/src/main/java/im/vector/app/core/extensions/Context.kt index 509dd6a862..14e639bf32 100644 --- a/vector/src/main/java/im/vector/app/core/extensions/Context.kt +++ b/vector/src/main/java/im/vector/app/core/extensions/Context.kt @@ -37,7 +37,7 @@ import androidx.datastore.preferences.core.Preferences import dagger.hilt.EntryPoints import im.vector.app.core.datastore.dataStoreProvider import im.vector.app.core.di.SingletonEntryPoint -import im.vector.app.core.resources.BuildMeta +import org.matrix.android.sdk.api.util.BuildVersionSdkIntProvider import java.io.OutputStream import kotlin.math.roundToInt @@ -93,9 +93,9 @@ fun Context.safeOpenOutputStream(uri: Uri): OutputStream? { */ @Suppress("deprecation") @SuppressLint("NewApi") // false positive -fun Context.inferNoConnectivity(buildMeta: BuildMeta): Boolean { +fun Context.inferNoConnectivity(sdkIntProvider: BuildVersionSdkIntProvider): Boolean { val connectivityManager = getSystemService()!! - return if (buildMeta.sdkInt > Build.VERSION_CODES.M) { + return if (sdkIntProvider.get() > Build.VERSION_CODES.M) { val networkCapabilities = connectivityManager.getNetworkCapabilities(connectivityManager.activeNetwork) when { networkCapabilities?.hasTransport(NetworkCapabilities.TRANSPORT_CELLULAR) == true -> false 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 0249cfc371..6c25348ea1 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 @@ -18,7 +18,6 @@ package im.vector.app.core.resources data class BuildMeta( val isDebug: Boolean, - val sdkInt: Int, val applicationId: String, val lowPrivacyLoggingEnabled: Boolean, val versionName: String, diff --git a/vector/src/main/java/im/vector/app/features/location/live/tracking/LiveLocationNotificationBuilder.kt b/vector/src/main/java/im/vector/app/features/location/live/tracking/LiveLocationNotificationBuilder.kt index b8dd17e8fd..5aa9cd0971 100644 --- a/vector/src/main/java/im/vector/app/features/location/live/tracking/LiveLocationNotificationBuilder.kt +++ b/vector/src/main/java/im/vector/app/features/location/live/tracking/LiveLocationNotificationBuilder.kt @@ -31,6 +31,7 @@ import im.vector.app.features.home.room.detail.RoomDetailActivity import im.vector.app.features.home.room.detail.arguments.TimelineArgs import im.vector.app.features.location.live.map.LiveLocationMapViewActivity import im.vector.app.features.location.live.map.LiveLocationMapViewArgs +import im.vector.app.features.notifications.NotificationActionIds import im.vector.app.features.notifications.NotificationUtils import im.vector.app.features.themes.ThemeUtils import javax.inject.Inject @@ -41,6 +42,7 @@ class LiveLocationNotificationBuilder @Inject constructor( private val context: Context, private val stringProvider: StringProvider, private val clock: Clock, + private val actionIds: NotificationActionIds, ) { /** @@ -66,7 +68,7 @@ class LiveLocationNotificationBuilder @Inject constructor( liveLocationMapViewArgs = LiveLocationMapViewArgs(roomId = roomId), firstStartMainActivity = true ) - mapIntent.action = NotificationUtils.TAP_TO_VIEW_ACTION + mapIntent.action = actionIds.TAP_TO_VIEW_ACTION // pending intent get reused by system, this will mess up the extra params, so put unique info to avoid that mapIntent.data = createIgnoredUri("openLiveLocationMap?$roomId") diff --git a/vector/src/main/java/im/vector/app/features/onboarding/OnboardingViewModel.kt b/vector/src/main/java/im/vector/app/features/onboarding/OnboardingViewModel.kt index 6cadb4308a..8136dc379b 100644 --- a/vector/src/main/java/im/vector/app/features/onboarding/OnboardingViewModel.kt +++ b/vector/src/main/java/im/vector/app/features/onboarding/OnboardingViewModel.kt @@ -32,7 +32,6 @@ import im.vector.app.core.extensions.isMatrixId import im.vector.app.core.extensions.toReducedUrl import im.vector.app.core.extensions.vectorStore 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.ensureProtocol import im.vector.app.core.utils.ensureTrailingSlash @@ -63,6 +62,7 @@ import org.matrix.android.sdk.api.auth.registration.RegistrationAvailability import org.matrix.android.sdk.api.auth.registration.RegistrationWizard import org.matrix.android.sdk.api.failure.isHomeserverUnavailable import org.matrix.android.sdk.api.session.Session +import org.matrix.android.sdk.api.util.BuildVersionSdkIntProvider import timber.log.Timber import java.util.UUID import java.util.concurrent.CancellationException @@ -86,7 +86,7 @@ class OnboardingViewModel @AssistedInject constructor( private val startAuthenticationFlowUseCase: StartAuthenticationFlowUseCase, private val vectorOverrides: VectorOverrides, private val registrationActionHandler: RegistrationActionHandler, - private val buildMeta: BuildMeta, + private val sdkIntProvider: BuildVersionSdkIntProvider, ) : VectorViewModel(initialState) { @AssistedFactory @@ -708,7 +708,7 @@ class OnboardingViewModel @AssistedInject constructor( private fun onAuthenticationStartError(error: Throwable, trigger: OnboardingAction.HomeServerChange) { when { - error.isHomeserverUnavailable() && applicationContext.inferNoConnectivity(buildMeta) -> _viewEvents.post( + error.isHomeserverUnavailable() && applicationContext.inferNoConnectivity(sdkIntProvider) -> _viewEvents.post( OnboardingViewEvents.Failure(error) ) deeplinkUrlIsUnavailable(error, trigger) -> _viewEvents.post( diff --git a/vector/src/main/java/im/vector/app/features/rageshake/BugReporter.kt b/vector/src/main/java/im/vector/app/features/rageshake/BugReporter.kt index 150f87bc02..ad09593ebd 100755 --- a/vector/src/main/java/im/vector/app/features/rageshake/BugReporter.kt +++ b/vector/src/main/java/im/vector/app/features/rageshake/BugReporter.kt @@ -25,6 +25,7 @@ import android.view.View import androidx.fragment.app.DialogFragment import androidx.fragment.app.FragmentActivity import com.squareup.moshi.Types +import im.vector.app.BuildConfig import im.vector.app.R import im.vector.app.core.di.ActiveSessionHolder import im.vector.app.core.extensions.getAllChildFragments @@ -50,6 +51,7 @@ import okhttp3.Response import org.json.JSONException import org.json.JSONObject import org.matrix.android.sdk.api.Matrix +import org.matrix.android.sdk.api.util.BuildVersionSdkIntProvider import org.matrix.android.sdk.api.util.JsonDict import org.matrix.android.sdk.api.util.MatrixJsonParser import org.matrix.android.sdk.api.util.MimeTypes @@ -76,6 +78,7 @@ class BugReporter @Inject constructor( private val systemLocaleProvider: SystemLocaleProvider, private val matrix: Matrix, private val buildMeta: BuildMeta, + private val sdkIntProvider: BuildVersionSdkIntProvider, ) { var inMultiWindowMode = false @@ -286,7 +289,7 @@ class BugReporter @Inject constructor( .addFormDataPart("verbose_log", vectorPreferences.labAllowedExtendedLogging().toOnOff()) .addFormDataPart("multi_window", inMultiWindowMode.toOnOff()) .addFormDataPart( - "os", Build.VERSION.RELEASE + " (API " + buildMeta.sdkInt + ") " + + "os", Build.VERSION.RELEASE + " (API " + sdkIntProvider.get() + ") " + Build.VERSION.INCREMENTAL + "-" + Build.VERSION.CODENAME ) .addFormDataPart("locale", Locale.getDefault().toString()) diff --git a/vector/src/test/java/im/vector/app/features/onboarding/OnboardingViewModelTest.kt b/vector/src/test/java/im/vector/app/features/onboarding/OnboardingViewModelTest.kt index a9bbb3eb07..61d3101b64 100644 --- a/vector/src/test/java/im/vector/app/features/onboarding/OnboardingViewModelTest.kt +++ b/vector/src/test/java/im/vector/app/features/onboarding/OnboardingViewModelTest.kt @@ -17,6 +17,7 @@ package im.vector.app.features.onboarding import android.net.Uri +import android.os.Build import com.airbnb.mvrx.test.MvRxTestRule import im.vector.app.R import im.vector.app.features.login.LoginConfig @@ -24,6 +25,7 @@ import im.vector.app.features.login.LoginMode import im.vector.app.features.login.ReAuthHelper import im.vector.app.features.login.SignMode import im.vector.app.features.onboarding.StartAuthenticationFlowUseCase.StartAuthenticationResult +import im.vector.app.test.TestBuildVersionSdkIntProvider import im.vector.app.test.fakes.FakeActiveSessionHolder import im.vector.app.test.fakes.FakeAnalyticsTracker import im.vector.app.test.fakes.FakeAuthenticationService @@ -43,7 +45,6 @@ import im.vector.app.test.fakes.FakeVectorFeatures import im.vector.app.test.fakes.FakeVectorOverrides import im.vector.app.test.fakes.toTestString import im.vector.app.test.fixtures.a401ServerError -import im.vector.app.test.fixtures.aBuildMeta import im.vector.app.test.fixtures.aHomeServerCapabilities import im.vector.app.test.test import kotlinx.coroutines.test.runTest @@ -720,7 +721,7 @@ class OnboardingViewModelTest { fakeStartAuthenticationFlowUseCase.instance, FakeVectorOverrides(), fakeRegistrationActionHandler.instance, - aBuildMeta(), + TestBuildVersionSdkIntProvider().also { it.value = Build.VERSION_CODES.O }, ).also { viewModel = it initialState = state diff --git a/vector/src/test/java/im/vector/app/test/fixtures/BuildMetaFixture.kt b/vector/src/test/java/im/vector/app/test/fixtures/BuildMetaFixture.kt index 1709b6601d..4f4649106d 100644 --- a/vector/src/test/java/im/vector/app/test/fixtures/BuildMetaFixture.kt +++ b/vector/src/test/java/im/vector/app/test/fixtures/BuildMetaFixture.kt @@ -16,12 +16,10 @@ package im.vector.app.test.fixtures -import android.os.Build import im.vector.app.core.resources.BuildMeta fun aBuildMeta() = BuildMeta( isDebug = false, - sdkInt = Build.VERSION_CODES.O, applicationId = "im.vector", lowPrivacyLoggingEnabled = false, versionName = "app-version-name",