Add application version to the setting screen.

This commit is contained in:
Benoit Marty
2023-06-30 17:50:13 +02:00
committed by Benoit Marty
parent da7e9a8bf2
commit 499a862bfc
9 changed files with 34 additions and 3 deletions

View File

@@ -77,6 +77,7 @@ object AppModule {
applicationId = BuildConfig.APPLICATION_ID,
lowPrivacyLoggingEnabled = false, // TODO EAx Config.LOW_PRIVACY_LOG_ENABLE,
versionName = BuildConfig.VERSION_NAME,
versionCode = BuildConfig.VERSION_CODE,
gitRevision = "TODO", // BuildConfig.GIT_REVISION,
gitRevisionDate = "TODO", // BuildConfig.GIT_REVISION_DATE,
gitBranchName = "TODO", // BuildConfig.GIT_BRANCH_NAME,

View File

@@ -26,6 +26,7 @@ val A_BUILD_META = BuildMeta(
applicationId = "",
lowPrivacyLoggingEnabled = false,
versionName = "",
versionCode = 0,
gitRevision = "",
gitRevisionDate = "",
gitBranchName = "",

View File

@@ -192,6 +192,7 @@ private fun aBuildMeta() =
applicationName = "An Application",
lowPrivacyLoggingEnabled = true,
versionName = "",
versionCode = 0,
gitRevision = "",
gitBranchName = "",
gitRevisionDate = "",

View File

@@ -25,13 +25,16 @@ import androidx.compose.runtime.getValue
import androidx.compose.runtime.mutableStateOf
import androidx.compose.runtime.remember
import androidx.compose.runtime.saveable.rememberSaveable
import androidx.compose.ui.res.stringResource
import io.element.android.features.logout.api.LogoutPreferencePresenter
import io.element.android.libraries.architecture.Presenter
import io.element.android.libraries.core.meta.BuildMeta
import io.element.android.libraries.core.meta.BuildType
import io.element.android.libraries.matrix.api.user.CurrentUserProvider
import io.element.android.libraries.matrix.api.user.MatrixUser
import io.element.android.libraries.matrix.api.verification.SessionVerificationService
import io.element.android.libraries.matrix.api.verification.SessionVerifiedStatus
import io.element.android.libraries.ui.strings.CommonStrings
import kotlinx.coroutines.CoroutineScope
import kotlinx.coroutines.launch
import javax.inject.Inject
@@ -40,7 +43,7 @@ class PreferencesRootPresenter @Inject constructor(
private val logoutPresenter: LogoutPreferencePresenter,
private val currentUserProvider: CurrentUserProvider,
private val sessionVerificationService: SessionVerificationService,
private val buildType: BuildType,
private val buildMeta: BuildMeta,
) : Presenter<PreferencesRootState> {
@Composable
@@ -58,11 +61,17 @@ class PreferencesRootPresenter @Inject constructor(
derivedStateOf { sessionVerifiedStatus == SessionVerifiedStatus.NotVerified }
}
val version = stringResource(
id = CommonStrings.settings_version_number,
buildMeta.versionName,
buildMeta.versionCode.toString()
)
val logoutState = logoutPresenter.present()
val showDeveloperSettings = buildType != BuildType.RELEASE
val showDeveloperSettings = buildMeta.buildType != BuildType.RELEASE
return PreferencesRootState(
logoutState = logoutState,
myUser = matrixUser.value,
version = version,
showCompleteVerification = sessionIsNotVerified,
showDeveloperSettings = showDeveloperSettings
)

View File

@@ -22,6 +22,7 @@ import io.element.android.libraries.matrix.api.user.MatrixUser
data class PreferencesRootState(
val logoutState: LogoutPreferenceState,
val myUser: MatrixUser?,
val version: String,
val showCompleteVerification: Boolean,
val showDeveloperSettings: Boolean
)

View File

@@ -21,6 +21,7 @@ import io.element.android.features.logout.api.aLogoutPreferenceState
fun aPreferencesRootState() = PreferencesRootState(
logoutState = aLogoutPreferenceState(),
myUser = null,
version = "Version 1.1 (1)",
showCompleteVerification = true,
showDeveloperSettings = true
)

View File

@@ -16,6 +16,8 @@
package io.element.android.features.preferences.impl.root
import androidx.compose.foundation.layout.fillMaxWidth
import androidx.compose.foundation.layout.padding
import androidx.compose.material.icons.Icons
import androidx.compose.material.icons.filled.DeveloperMode
import androidx.compose.material.icons.outlined.BugReport
@@ -25,7 +27,9 @@ import androidx.compose.material.icons.outlined.VerifiedUser
import androidx.compose.runtime.Composable
import androidx.compose.ui.Modifier
import androidx.compose.ui.res.stringResource
import androidx.compose.ui.text.style.TextAlign
import androidx.compose.ui.tooling.preview.PreviewParameter
import androidx.compose.ui.unit.dp
import io.element.android.features.logout.api.LogoutPreferenceView
import io.element.android.features.preferences.impl.user.UserPreferences
import io.element.android.libraries.designsystem.components.preferences.PreferenceText
@@ -34,8 +38,10 @@ import io.element.android.libraries.designsystem.preview.ElementPreviewDark
import io.element.android.libraries.designsystem.preview.ElementPreviewLight
import io.element.android.libraries.designsystem.preview.LargeHeightPreview
import io.element.android.libraries.designsystem.theme.components.Divider
import io.element.android.libraries.designsystem.theme.components.Text
import io.element.android.libraries.matrix.api.user.MatrixUser
import io.element.android.libraries.matrix.ui.components.MatrixUserProvider
import io.element.android.libraries.theme.ElementTheme
import io.element.android.libraries.ui.strings.CommonStrings
@Composable
@@ -86,6 +92,15 @@ fun PreferencesRootView(
LogoutPreferenceView(
state = state.logoutState,
)
Text(
modifier = Modifier
.fillMaxWidth()
.padding(top = 40.dp, bottom = 24.dp),
textAlign = TextAlign.Center,
text = state.version,
style = ElementTheme.typography.fontBodySmRegular,
color = ElementTheme.materialColors.secondary,
)
}
}

View File

@@ -41,13 +41,14 @@ class PreferencesRootPresenterTest {
logoutPresenter,
CurrentUserProvider(matrixClient),
FakeSessionVerificationService(),
A_BUILD_META.buildType
A_BUILD_META
)
moleculeFlow(RecompositionClock.Immediate) {
presenter.present()
}.test {
val initialState = awaitItem()
assertThat(initialState.myUser).isNull()
assertThat(initialState.version).isEqualTo("Version " + A_BUILD_META.versionName + " (" + A_BUILD_META.versionCode + ")")
val loadedState = awaitItem()
assertThat(loadedState.logoutState.logoutAction).isEqualTo(Async.Uninitialized)
assertThat(loadedState.myUser).isEqualTo(

View File

@@ -23,6 +23,7 @@ data class BuildMeta(
val applicationId: String,
val lowPrivacyLoggingEnabled: Boolean,
val versionName: String,
val versionCode: Int,
val gitRevision: String,
val gitRevisionDate: String,
val gitBranchName: String,