diff --git a/appnav/src/main/kotlin/io/element/android/appnav/LoggedInFlowNode.kt b/appnav/src/main/kotlin/io/element/android/appnav/LoggedInFlowNode.kt index 1d3c78b88a3..9ae5cec6372 100644 --- a/appnav/src/main/kotlin/io/element/android/appnav/LoggedInFlowNode.kt +++ b/appnav/src/main/kotlin/io/element/android/appnav/LoggedInFlowNode.kt @@ -75,7 +75,6 @@ import io.element.android.libraries.matrix.api.core.toRoomIdOrAlias import io.element.android.libraries.matrix.api.permalink.PermalinkData import io.element.android.libraries.matrix.api.verification.SessionVerificationRequestDetails import io.element.android.libraries.matrix.api.verification.SessionVerificationServiceListener -import io.element.android.libraries.preferences.api.store.EnableNativeSlidingSyncUseCase import io.element.android.services.appnavstate.api.AppNavigationStateService import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.flow.launchIn @@ -105,7 +104,6 @@ class LoggedInFlowNode @AssistedInject constructor( private val sendingQueue: SendQueues, private val logoutEntryPoint: LogoutEntryPoint, private val incomingVerificationEntryPoint: IncomingVerificationEntryPoint, - private val enableNativeSlidingSyncUseCase: EnableNativeSlidingSyncUseCase, snackbarDispatcher: SnackbarDispatcher, ) : BaseFlowNode( backstack = BackStack( @@ -420,9 +418,6 @@ class LoggedInFlowNode @AssistedInject constructor( } logoutEntryPoint.nodeBuilder(this, buildContext) - .onSuccessfulLogoutPendingAction { - enableNativeSlidingSyncUseCase() - } .callback(callback) .build() } diff --git a/appnav/src/main/kotlin/io/element/android/appnav/loggedin/LoggedInPresenter.kt b/appnav/src/main/kotlin/io/element/android/appnav/loggedin/LoggedInPresenter.kt index abddb2adac4..2539f9e1d54 100644 --- a/appnav/src/main/kotlin/io/element/android/appnav/loggedin/LoggedInPresenter.kt +++ b/appnav/src/main/kotlin/io/element/android/appnav/loggedin/LoggedInPresenter.kt @@ -22,6 +22,7 @@ import im.vector.app.features.analytics.plan.UserProperties import io.element.android.libraries.architecture.AsyncData import io.element.android.libraries.architecture.Presenter import io.element.android.libraries.core.log.logger.LoggerTag +import io.element.android.libraries.core.meta.BuildMeta import io.element.android.libraries.matrix.api.MatrixClient import io.element.android.libraries.matrix.api.encryption.EncryptionService import io.element.android.libraries.matrix.api.encryption.RecoveryState @@ -31,7 +32,6 @@ import io.element.android.libraries.matrix.api.sync.SyncService import io.element.android.libraries.matrix.api.sync.isOnline import io.element.android.libraries.matrix.api.verification.SessionVerificationService import io.element.android.libraries.matrix.api.verification.SessionVerifiedStatus -import io.element.android.libraries.preferences.api.store.EnableNativeSlidingSyncUseCase import io.element.android.libraries.push.api.PushService import io.element.android.libraries.pushproviders.api.RegistrationFailure import io.element.android.services.analytics.api.AnalyticsService @@ -51,7 +51,7 @@ class LoggedInPresenter @Inject constructor( private val sessionVerificationService: SessionVerificationService, private val analyticsService: AnalyticsService, private val encryptionService: EncryptionService, - private val enableNativeSlidingSyncUseCase: EnableNativeSlidingSyncUseCase, + private val buildMeta: BuildMeta, ) : Presenter { @Composable override fun present(): LoggedInState { @@ -103,12 +103,10 @@ class LoggedInPresenter @Inject constructor( } } LoggedInEvents.CheckSlidingSyncProxyAvailability -> coroutineScope.launch { - forceNativeSlidingSyncMigration = matrixClient.forceNativeSlidingSyncMigration().getOrDefault(false) + forceNativeSlidingSyncMigration = matrixClient.needsForcedNativeSlidingSyncMigration().getOrDefault(false) } LoggedInEvents.LogoutAndMigrateToNativeSlidingSync -> coroutineScope.launch { - // Enable native sliding sync if it wasn't already the case - enableNativeSlidingSyncUseCase() - // Then force the logout + // Force the logout since Native Sliding Sync is already enforced by the SDK matrixClient.logout(userInitiated = true, ignoreSdkError = true) } } @@ -119,20 +117,15 @@ class LoggedInPresenter @Inject constructor( pusherRegistrationState = pusherRegistrationState.value, ignoreRegistrationError = ignoreRegistrationError, forceNativeSlidingSyncMigration = forceNativeSlidingSyncMigration, + appName = buildMeta.applicationName, eventSink = ::handleEvent ) } - // Force the user to log out if they were using the proxy sliding sync and it's no longer available, but native sliding sync is. - private suspend fun MatrixClient.forceNativeSlidingSyncMigration(): Result = runCatching { + // Force the user to log out if they were using the proxy sliding sync as it's no longer supported by the SDK + private suspend fun MatrixClient.needsForcedNativeSlidingSyncMigration(): Result = runCatching { val currentSlidingSyncVersion = currentSlidingSyncVersion().getOrThrow() - if (currentSlidingSyncVersion == SlidingSyncVersion.Proxy) { - val availableSlidingSyncVersions = availableSlidingSyncVersions().getOrThrow() - availableSlidingSyncVersions.contains(SlidingSyncVersion.Native) && - !availableSlidingSyncVersions.contains(SlidingSyncVersion.Proxy) - } else { - false - } + currentSlidingSyncVersion == SlidingSyncVersion.Proxy } private suspend fun ensurePusherIsRegistered(pusherRegistrationState: MutableState>) { diff --git a/appnav/src/main/kotlin/io/element/android/appnav/loggedin/LoggedInState.kt b/appnav/src/main/kotlin/io/element/android/appnav/loggedin/LoggedInState.kt index 540d5d0d8f7..8f039ffa2be 100644 --- a/appnav/src/main/kotlin/io/element/android/appnav/loggedin/LoggedInState.kt +++ b/appnav/src/main/kotlin/io/element/android/appnav/loggedin/LoggedInState.kt @@ -14,5 +14,6 @@ data class LoggedInState( val pusherRegistrationState: AsyncData, val ignoreRegistrationError: Boolean, val forceNativeSlidingSyncMigration: Boolean, + val appName: String, val eventSink: (LoggedInEvents) -> Unit, ) diff --git a/appnav/src/main/kotlin/io/element/android/appnav/loggedin/LoggedInStateProvider.kt b/appnav/src/main/kotlin/io/element/android/appnav/loggedin/LoggedInStateProvider.kt index 43b7164f2a2..2ba0c8de81d 100644 --- a/appnav/src/main/kotlin/io/element/android/appnav/loggedin/LoggedInStateProvider.kt +++ b/appnav/src/main/kotlin/io/element/android/appnav/loggedin/LoggedInStateProvider.kt @@ -24,10 +24,12 @@ fun aLoggedInState( showSyncSpinner: Boolean = false, pusherRegistrationState: AsyncData = AsyncData.Uninitialized, forceNativeSlidingSyncMigration: Boolean = false, + appName: String = "Element X", ) = LoggedInState( showSyncSpinner = showSyncSpinner, pusherRegistrationState = pusherRegistrationState, ignoreRegistrationError = false, forceNativeSlidingSyncMigration = forceNativeSlidingSyncMigration, + appName = appName, eventSink = {}, ) diff --git a/appnav/src/main/kotlin/io/element/android/appnav/loggedin/LoggedInView.kt b/appnav/src/main/kotlin/io/element/android/appnav/loggedin/LoggedInView.kt index cd9ecf637a4..d6a12ea27bd 100644 --- a/appnav/src/main/kotlin/io/element/android/appnav/loggedin/LoggedInView.kt +++ b/appnav/src/main/kotlin/io/element/android/appnav/loggedin/LoggedInView.kt @@ -73,9 +73,12 @@ fun LoggedInView( // Set the force migration dialog here so it's always displayed over every screen if (state.forceNativeSlidingSyncMigration) { - ForceNativeSlidingSyncMigrationDialog(onSubmit = { - state.eventSink(LoggedInEvents.LogoutAndMigrateToNativeSlidingSync) - }) + ForceNativeSlidingSyncMigrationDialog( + appName = state.appName, + onSubmit = { + state.eventSink(LoggedInEvents.LogoutAndMigrateToNativeSlidingSync) + } + ) } } @@ -98,11 +101,12 @@ private fun Throwable.getReason(): String? { @Composable private fun ForceNativeSlidingSyncMigrationDialog( + appName: String, onSubmit: () -> Unit, ) { ErrorDialog( title = null, - content = stringResource(R.string.banner_migrate_to_native_sliding_sync_force_logout_title), + content = stringResource(R.string.banner_migrate_to_native_sliding_sync_app_force_logout_title, appName), submitText = stringResource(R.string.banner_migrate_to_native_sliding_sync_action), onSubmit = onSubmit, canDismiss = false, diff --git a/appnav/src/main/res/values/localazy.xml b/appnav/src/main/res/values/localazy.xml index bb6df44051e..c018fbf7fd8 100644 --- a/appnav/src/main/res/values/localazy.xml +++ b/appnav/src/main/res/values/localazy.xml @@ -1,5 +1,6 @@ "Log Out & Upgrade" + "%1$s no longer supports the old protocol. Please log out and log back in to continue using the app." "Your homeserver no longer supports the old protocol. Please log out and log back in to continue using the app." diff --git a/appnav/src/test/kotlin/io/element/android/appnav/loggedin/LoggedInPresenterTest.kt b/appnav/src/test/kotlin/io/element/android/appnav/loggedin/LoggedInPresenterTest.kt index 3f0713cd993..bfd416eaf3a 100644 --- a/appnav/src/test/kotlin/io/element/android/appnav/loggedin/LoggedInPresenterTest.kt +++ b/appnav/src/test/kotlin/io/element/android/appnav/loggedin/LoggedInPresenterTest.kt @@ -14,6 +14,7 @@ import app.cash.turbine.test import com.google.common.truth.Truth.assertThat import im.vector.app.features.analytics.plan.CryptoSessionStateChange import im.vector.app.features.analytics.plan.UserProperties +import io.element.android.libraries.core.meta.BuildMeta import io.element.android.libraries.matrix.api.MatrixClient import io.element.android.libraries.matrix.api.core.SessionId import io.element.android.libraries.matrix.api.encryption.EncryptionService @@ -26,12 +27,11 @@ import io.element.android.libraries.matrix.api.verification.SessionVerifiedStatu import io.element.android.libraries.matrix.test.AN_EXCEPTION import io.element.android.libraries.matrix.test.A_SESSION_ID import io.element.android.libraries.matrix.test.FakeMatrixClient +import io.element.android.libraries.matrix.test.core.aBuildMeta import io.element.android.libraries.matrix.test.encryption.FakeEncryptionService import io.element.android.libraries.matrix.test.roomlist.FakeRoomListService import io.element.android.libraries.matrix.test.sync.FakeSyncService import io.element.android.libraries.matrix.test.verification.FakeSessionVerificationService -import io.element.android.libraries.preferences.api.store.EnableNativeSlidingSyncUseCase -import io.element.android.libraries.preferences.test.InMemoryAppPreferencesStore import io.element.android.libraries.push.api.PushService import io.element.android.libraries.push.test.FakePushService import io.element.android.libraries.pushproviders.api.Distributor @@ -46,7 +46,6 @@ import io.element.android.tests.testutils.lambda.lambdaError import io.element.android.tests.testutils.lambda.lambdaRecorder import io.element.android.tests.testutils.lambda.value import kotlinx.coroutines.ExperimentalCoroutinesApi -import kotlinx.coroutines.flow.first import kotlinx.coroutines.test.TestScope import kotlinx.coroutines.test.advanceUntilIdle import kotlinx.coroutines.test.runTest @@ -92,6 +91,7 @@ class LoggedInPresenterTest { val roomListService = FakeRoomListService() val verificationService = FakeSessionVerificationService() val encryptionService = FakeEncryptionService() + val buildMeta = aBuildMeta() val presenter = LoggedInPresenter( matrixClient = FakeMatrixClient(roomListService = roomListService, encryptionService = encryptionService), syncService = FakeSyncService(initialSyncState = SyncState.Running), @@ -99,7 +99,7 @@ class LoggedInPresenterTest { sessionVerificationService = verificationService, analyticsService = analyticsService, encryptionService = encryptionService, - enableNativeSlidingSyncUseCase = EnableNativeSlidingSyncUseCase(InMemoryAppPreferencesStore(), this), + buildMeta = buildMeta, ) moleculeFlow(RecompositionMode.Immediate) { presenter.present() @@ -518,28 +518,9 @@ class LoggedInPresenterTest { } } - @Test - fun `present - CheckSlidingSyncProxyAvailability will not force the migration if native sliding sync is not supported too`() = runTest { - val matrixClient = FakeMatrixClient( - currentSlidingSyncVersionLambda = { Result.success(SlidingSyncVersion.Proxy) }, - availableSlidingSyncVersionsLambda = { Result.success(emptyList()) }, - ) - val presenter = createLoggedInPresenter(matrixClient = matrixClient) - moleculeFlow(RecompositionMode.Immediate) { - presenter.present() - }.test { - val initialState = awaitItem() - assertThat(initialState.forceNativeSlidingSyncMigration).isFalse() - - initialState.eventSink(LoggedInEvents.CheckSlidingSyncProxyAvailability) - - expectNoEvents() - } - } - @OptIn(ExperimentalCoroutinesApi::class) @Test - fun `present - LogoutAndMigrateToNativeSlidingSync enables native sliding sync and logs out the user`() = runTest { + fun `present - LogoutAndMigrateToNativeSlidingSync logs out the user`() = runTest { val logoutLambda = lambdaRecorder { userInitiated, ignoreSdkError -> assertThat(userInitiated).isTrue() assertThat(ignoreSdkError).isTrue() @@ -548,21 +529,16 @@ class LoggedInPresenterTest { val matrixClient = FakeMatrixClient().apply { this.logoutLambda = logoutLambda } - val appPreferencesStore = InMemoryAppPreferencesStore() - val enableNativeSlidingSyncUseCase = EnableNativeSlidingSyncUseCase(appPreferencesStore, this) - val presenter = createLoggedInPresenter(matrixClient = matrixClient, enableNativeSlidingSyncUseCase = enableNativeSlidingSyncUseCase) + val presenter = createLoggedInPresenter(matrixClient = matrixClient) moleculeFlow(RecompositionMode.Immediate) { presenter.present() }.test { val initialState = awaitItem() - assertThat(appPreferencesStore.isSimplifiedSlidingSyncEnabledFlow().first()).isFalse() - initialState.eventSink(LoggedInEvents.LogoutAndMigrateToNativeSlidingSync) advanceUntilIdle() - assertThat(appPreferencesStore.isSimplifiedSlidingSyncEnabledFlow().first()).isTrue() assertThat(logoutLambda.assertions().isCalledOnce()) } } @@ -579,8 +555,8 @@ class LoggedInPresenterTest { sessionVerificationService: SessionVerificationService = FakeSessionVerificationService(), encryptionService: EncryptionService = FakeEncryptionService(), pushService: PushService = FakePushService(), - enableNativeSlidingSyncUseCase: EnableNativeSlidingSyncUseCase = EnableNativeSlidingSyncUseCase(InMemoryAppPreferencesStore(), this), matrixClient: MatrixClient = FakeMatrixClient(roomListService = roomListService), + buildMeta: BuildMeta = aBuildMeta(), ): LoggedInPresenter { return LoggedInPresenter( matrixClient = matrixClient, @@ -589,7 +565,7 @@ class LoggedInPresenterTest { sessionVerificationService = sessionVerificationService, analyticsService = analyticsService, encryptionService = encryptionService, - enableNativeSlidingSyncUseCase = enableNativeSlidingSyncUseCase, + buildMeta = buildMeta, ) } } diff --git a/features/logout/api/src/main/kotlin/io/element/android/features/logout/api/LogoutEntryPoint.kt b/features/logout/api/src/main/kotlin/io/element/android/features/logout/api/LogoutEntryPoint.kt index 5d60d642fd2..17f67813ca4 100644 --- a/features/logout/api/src/main/kotlin/io/element/android/features/logout/api/LogoutEntryPoint.kt +++ b/features/logout/api/src/main/kotlin/io/element/android/features/logout/api/LogoutEntryPoint.kt @@ -16,7 +16,6 @@ interface LogoutEntryPoint : FeatureEntryPoint { fun nodeBuilder(parentNode: Node, buildContext: BuildContext): NodeBuilder interface NodeBuilder { - fun onSuccessfulLogoutPendingAction(action: () -> Unit): NodeBuilder fun callback(callback: Callback): NodeBuilder fun build(): Node } diff --git a/features/logout/impl/src/main/kotlin/io/element/android/features/logout/impl/DefaultLogoutEntryPoint.kt b/features/logout/impl/src/main/kotlin/io/element/android/features/logout/impl/DefaultLogoutEntryPoint.kt index 9abcd1304a3..0c651eb0774 100644 --- a/features/logout/impl/src/main/kotlin/io/element/android/features/logout/impl/DefaultLogoutEntryPoint.kt +++ b/features/logout/impl/src/main/kotlin/io/element/android/features/logout/impl/DefaultLogoutEntryPoint.kt @@ -27,15 +27,6 @@ class DefaultLogoutEntryPoint @Inject constructor() : LogoutEntryPoint { return this } - override fun onSuccessfulLogoutPendingAction(action: () -> Unit): LogoutEntryPoint.NodeBuilder { - plugins += object : LogoutNode.SuccessfulLogoutPendingAction, Plugin { - override fun onSuccessfulLogoutPendingAction() { - action() - } - } - return this - } - override fun build(): Node { return parentNode.createNode(buildContext, plugins) } diff --git a/features/logout/impl/src/main/kotlin/io/element/android/features/logout/impl/LogoutNode.kt b/features/logout/impl/src/main/kotlin/io/element/android/features/logout/impl/LogoutNode.kt index 2ecc027fba3..a1da26b58b6 100644 --- a/features/logout/impl/src/main/kotlin/io/element/android/features/logout/impl/LogoutNode.kt +++ b/features/logout/impl/src/main/kotlin/io/element/android/features/logout/impl/LogoutNode.kt @@ -32,12 +32,6 @@ class LogoutNode @AssistedInject constructor( plugins().forEach { it.onChangeRecoveryKeyClick() } } - interface SuccessfulLogoutPendingAction : Plugin { - fun onSuccessfulLogoutPendingAction() - } - - private val customOnSuccessfulLogoutPendingAction = plugins().firstOrNull() - @Composable override fun View(modifier: Modifier) { val state = presenter.present() @@ -47,7 +41,6 @@ class LogoutNode @AssistedInject constructor( state = state, onChangeRecoveryKeyClick = ::onChangeRecoveryKeyClick, onSuccessLogout = { - customOnSuccessfulLogoutPendingAction?.onSuccessfulLogoutPendingAction() onSuccessLogout(activity, isDark, it) }, onBackClick = ::navigateUp, diff --git a/features/preferences/impl/src/main/kotlin/io/element/android/features/preferences/impl/developer/DeveloperSettingsEvents.kt b/features/preferences/impl/src/main/kotlin/io/element/android/features/preferences/impl/developer/DeveloperSettingsEvents.kt index 11a11ada722..4a9437a1880 100644 --- a/features/preferences/impl/src/main/kotlin/io/element/android/features/preferences/impl/developer/DeveloperSettingsEvents.kt +++ b/features/preferences/impl/src/main/kotlin/io/element/android/features/preferences/impl/developer/DeveloperSettingsEvents.kt @@ -13,7 +13,6 @@ import io.element.android.libraries.featureflag.ui.model.FeatureUiModel sealed interface DeveloperSettingsEvents { data class UpdateEnabledFeature(val feature: FeatureUiModel, val isEnabled: Boolean) : DeveloperSettingsEvents data class SetCustomElementCallBaseUrl(val baseUrl: String?) : DeveloperSettingsEvents - data class SetSimplifiedSlidingSyncEnabled(val isEnabled: Boolean) : DeveloperSettingsEvents data class SetHideImagesAndVideos(val value: Boolean) : DeveloperSettingsEvents data class SetTracingLogLevel(val logLevel: LogLevelItem) : DeveloperSettingsEvents data object ClearCache : DeveloperSettingsEvents diff --git a/features/preferences/impl/src/main/kotlin/io/element/android/features/preferences/impl/developer/DeveloperSettingsPresenter.kt b/features/preferences/impl/src/main/kotlin/io/element/android/features/preferences/impl/developer/DeveloperSettingsPresenter.kt index 0dd16492ccf..ced2c87a9de 100644 --- a/features/preferences/impl/src/main/kotlin/io/element/android/features/preferences/impl/developer/DeveloperSettingsPresenter.kt +++ b/features/preferences/impl/src/main/kotlin/io/element/android/features/preferences/impl/developer/DeveloperSettingsPresenter.kt @@ -19,7 +19,6 @@ import androidx.compose.runtime.remember import androidx.compose.runtime.rememberCoroutineScope import androidx.compose.runtime.snapshots.SnapshotStateMap import io.element.android.appconfig.ElementCallConfig -import io.element.android.features.logout.api.LogoutUseCase import io.element.android.features.preferences.impl.developer.tracing.toLogLevel import io.element.android.features.preferences.impl.developer.tracing.toLogLevelItem import io.element.android.features.preferences.impl.tasks.ClearCacheUseCase @@ -51,7 +50,6 @@ class DeveloperSettingsPresenter @Inject constructor( private val rageshakePresenter: Presenter, private val appPreferencesStore: AppPreferencesStore, private val buildMeta: BuildMeta, - private val logoutUseCase: LogoutUseCase, ) : Presenter { @Composable override fun present(): DeveloperSettingsState { @@ -72,9 +70,6 @@ class DeveloperSettingsPresenter @Inject constructor( val customElementCallBaseUrl by appPreferencesStore .getCustomElementCallBaseUrlFlow() .collectAsState(initial = null) - val isSimplifiedSlidingSyncEnabled by appPreferencesStore - .isSimplifiedSlidingSyncEnabledFlow() - .collectAsState(initial = false) val hideImagesAndVideos by appPreferencesStore .doesHideImagesAndVideosFlow() .collectAsState(initial = false) @@ -122,12 +117,6 @@ class DeveloperSettingsPresenter @Inject constructor( appPreferencesStore.setCustomElementCallBaseUrl(urlToSave) } DeveloperSettingsEvents.ClearCache -> coroutineScope.clearCache(clearCacheAction) - is DeveloperSettingsEvents.SetSimplifiedSlidingSyncEnabled -> coroutineScope.launch { - appPreferencesStore.setSimplifiedSlidingSyncEnabled(event.isEnabled) - runCatching { - logoutUseCase.logout(ignoreSdkError = true) - } - } is DeveloperSettingsEvents.SetHideImagesAndVideos -> coroutineScope.launch { appPreferencesStore.setHideImagesAndVideos(event.value) } @@ -147,7 +136,6 @@ class DeveloperSettingsPresenter @Inject constructor( defaultUrl = ElementCallConfig.DEFAULT_BASE_URL, validator = ::customElementCallUrlValidator, ), - isSimpleSlidingSyncEnabled = isSimplifiedSlidingSyncEnabled, hideImagesAndVideos = hideImagesAndVideos, tracingLogLevel = tracingLogLevel, eventSink = ::handleEvents diff --git a/features/preferences/impl/src/main/kotlin/io/element/android/features/preferences/impl/developer/DeveloperSettingsState.kt b/features/preferences/impl/src/main/kotlin/io/element/android/features/preferences/impl/developer/DeveloperSettingsState.kt index c9641ab686a..34574cd5c54 100644 --- a/features/preferences/impl/src/main/kotlin/io/element/android/features/preferences/impl/developer/DeveloperSettingsState.kt +++ b/features/preferences/impl/src/main/kotlin/io/element/android/features/preferences/impl/developer/DeveloperSettingsState.kt @@ -20,7 +20,6 @@ data class DeveloperSettingsState( val rageshakeState: RageshakePreferencesState, val clearCacheAction: AsyncAction, val customElementCallBaseUrlState: CustomElementCallBaseUrlState, - val isSimpleSlidingSyncEnabled: Boolean, val hideImagesAndVideos: Boolean, val tracingLogLevel: AsyncData, val eventSink: (DeveloperSettingsEvents) -> Unit diff --git a/features/preferences/impl/src/main/kotlin/io/element/android/features/preferences/impl/developer/DeveloperSettingsStateProvider.kt b/features/preferences/impl/src/main/kotlin/io/element/android/features/preferences/impl/developer/DeveloperSettingsStateProvider.kt index 869c0105292..83a029f10f8 100644 --- a/features/preferences/impl/src/main/kotlin/io/element/android/features/preferences/impl/developer/DeveloperSettingsStateProvider.kt +++ b/features/preferences/impl/src/main/kotlin/io/element/android/features/preferences/impl/developer/DeveloperSettingsStateProvider.kt @@ -32,7 +32,6 @@ open class DeveloperSettingsStateProvider : PreviewParameterProvider = AsyncAction.Uninitialized, customElementCallBaseUrlState: CustomElementCallBaseUrlState = aCustomElementCallBaseUrlState(), - isSimplifiedSlidingSyncEnabled: Boolean = false, hideImagesAndVideos: Boolean = false, eventSink: (DeveloperSettingsEvents) -> Unit = {}, ) = DeveloperSettingsState( @@ -41,7 +40,6 @@ fun aDeveloperSettingsState( cacheSize = AsyncData.Success("1.2 MB"), clearCacheAction = clearCacheAction, customElementCallBaseUrlState = customElementCallBaseUrlState, - isSimpleSlidingSyncEnabled = isSimplifiedSlidingSyncEnabled, hideImagesAndVideos = hideImagesAndVideos, tracingLogLevel = AsyncData.Success(LogLevelItem.INFO), eventSink = eventSink, diff --git a/features/preferences/impl/src/main/kotlin/io/element/android/features/preferences/impl/developer/DeveloperSettingsView.kt b/features/preferences/impl/src/main/kotlin/io/element/android/features/preferences/impl/developer/DeveloperSettingsView.kt index 7b0b39db90e..86666175a45 100644 --- a/features/preferences/impl/src/main/kotlin/io/element/android/features/preferences/impl/developer/DeveloperSettingsView.kt +++ b/features/preferences/impl/src/main/kotlin/io/element/android/features/preferences/impl/developer/DeveloperSettingsView.kt @@ -60,14 +60,6 @@ fun DeveloperSettingsView( state.eventSink(DeveloperSettingsEvents.SetTracingLogLevel(logLevel)) } ) - PreferenceSwitch( - title = "Enable Simplified Sliding Sync", - subtitle = "When toggled you'll be logged out of the app and will need to log in again.", - isChecked = state.isSimpleSlidingSyncEnabled, - onCheckedChange = { - state.eventSink(DeveloperSettingsEvents.SetSimplifiedSlidingSyncEnabled(it)) - } - ) } PreferenceCategory(title = "Showkase") { PreferenceText( diff --git a/features/preferences/impl/src/test/kotlin/io/element/android/features/preferences/impl/developer/DeveloperSettingsPresenterTest.kt b/features/preferences/impl/src/test/kotlin/io/element/android/features/preferences/impl/developer/DeveloperSettingsPresenterTest.kt index a73114ea2c7..f030e5b2827 100644 --- a/features/preferences/impl/src/test/kotlin/io/element/android/features/preferences/impl/developer/DeveloperSettingsPresenterTest.kt +++ b/features/preferences/impl/src/test/kotlin/io/element/android/features/preferences/impl/developer/DeveloperSettingsPresenterTest.kt @@ -11,7 +11,6 @@ package io.element.android.features.preferences.impl.developer import com.google.common.truth.Truth.assertThat import io.element.android.appconfig.ElementCallConfig -import io.element.android.features.logout.test.FakeLogoutUseCase import io.element.android.features.preferences.impl.developer.tracing.LogLevelItem import io.element.android.features.preferences.impl.tasks.FakeClearCacheUseCase import io.element.android.features.preferences.impl.tasks.FakeComputeCacheSizeUseCase @@ -25,11 +24,9 @@ import io.element.android.libraries.featureflag.test.FakeFeatureFlagService import io.element.android.libraries.matrix.test.core.aBuildMeta import io.element.android.libraries.preferences.test.InMemoryAppPreferencesStore import io.element.android.tests.testutils.WarmUpRule -import io.element.android.tests.testutils.lambda.lambdaRecorder import io.element.android.tests.testutils.test import kotlinx.coroutines.ExperimentalCoroutinesApi import kotlinx.coroutines.flow.first -import kotlinx.coroutines.test.advanceUntilIdle import kotlinx.coroutines.test.runTest import org.junit.Rule import org.junit.Test @@ -48,7 +45,6 @@ class DeveloperSettingsPresenterTest { assertThat(state.cacheSize).isEqualTo(AsyncData.Uninitialized) assertThat(state.customElementCallBaseUrlState).isNotNull() assertThat(state.customElementCallBaseUrlState.baseUrl).isNull() - assertThat(state.isSimpleSlidingSyncEnabled).isFalse() assertThat(state.hideImagesAndVideos).isFalse() assertThat(state.rageshakeState.isEnabled).isFalse() assertThat(state.rageshakeState.isSupported).isTrue() @@ -153,34 +149,6 @@ class DeveloperSettingsPresenterTest { } } - @Test - fun `present - toggling simplified sliding sync changes the preferences and logs out the user`() = runTest { - val logoutCallRecorder = lambdaRecorder { "" } - val logoutUseCase = FakeLogoutUseCase(logoutLambda = logoutCallRecorder) - val preferences = InMemoryAppPreferencesStore() - val presenter = createDeveloperSettingsPresenter(preferencesStore = preferences, logoutUseCase = logoutUseCase) - presenter.test { - skipItems(2) - awaitItem().also { state -> - assertThat(state.isSimpleSlidingSyncEnabled).isFalse() - state.eventSink(DeveloperSettingsEvents.SetSimplifiedSlidingSyncEnabled(true)) - } - awaitItem().also { state -> - assertThat(state.isSimpleSlidingSyncEnabled).isTrue() - assertThat(preferences.isSimplifiedSlidingSyncEnabledFlow().first()).isTrue() - advanceUntilIdle() - logoutCallRecorder.assertions().isCalledOnce() - state.eventSink(DeveloperSettingsEvents.SetSimplifiedSlidingSyncEnabled(false)) - } - awaitItem().also { state -> - assertThat(state.isSimpleSlidingSyncEnabled).isFalse() - assertThat(preferences.isSimplifiedSlidingSyncEnabledFlow().first()).isFalse() - advanceUntilIdle() - logoutCallRecorder.assertions().isCalledExactly(2) - } - } - } - @Test fun `present - toggling hide image and video`() = runTest { val preferences = InMemoryAppPreferencesStore() @@ -225,7 +193,6 @@ class DeveloperSettingsPresenterTest { clearCacheUseCase: FakeClearCacheUseCase = FakeClearCacheUseCase(), preferencesStore: InMemoryAppPreferencesStore = InMemoryAppPreferencesStore(), buildMeta: BuildMeta = aBuildMeta(), - logoutUseCase: FakeLogoutUseCase = FakeLogoutUseCase(logoutLambda = { "" }) ): DeveloperSettingsPresenter { return DeveloperSettingsPresenter( featureFlagService = featureFlagService, @@ -234,7 +201,6 @@ class DeveloperSettingsPresenterTest { rageshakePresenter = { aRageshakePreferencesState() }, appPreferencesStore = preferencesStore, buildMeta = buildMeta, - logoutUseCase = logoutUseCase, ) } } diff --git a/features/preferences/impl/src/test/kotlin/io/element/android/features/preferences/impl/developer/DeveloperSettingsViewTest.kt b/features/preferences/impl/src/test/kotlin/io/element/android/features/preferences/impl/developer/DeveloperSettingsViewTest.kt index 7d31517bf5e..4c8631862dd 100644 --- a/features/preferences/impl/src/test/kotlin/io/element/android/features/preferences/impl/developer/DeveloperSettingsViewTest.kt +++ b/features/preferences/impl/src/test/kotlin/io/element/android/features/preferences/impl/developer/DeveloperSettingsViewTest.kt @@ -102,19 +102,6 @@ class DeveloperSettingsViewTest { eventsRecorder.assertSingle(DeveloperSettingsEvents.ClearCache) } - @Config(qualifiers = "h1500dp") - @Test - fun `clicking on the simplified sliding sync switch emits the expected event`() { - val eventsRecorder = EventsRecorder() - rule.setDeveloperSettingsView( - state = aDeveloperSettingsState( - eventSink = eventsRecorder - ), - ) - rule.onNodeWithText("Enable Simplified Sliding Sync").performClick() - eventsRecorder.assertSingle(DeveloperSettingsEvents.SetSimplifiedSlidingSyncEnabled(true)) - } - @Test fun `clicking on the hide images and videos switch emits the expected event`() { val eventsRecorder = EventsRecorder() diff --git a/features/roomlist/impl/src/main/kotlin/io/element/android/features/roomlist/impl/RoomListContentStateProvider.kt b/features/roomlist/impl/src/main/kotlin/io/element/android/features/roomlist/impl/RoomListContentStateProvider.kt index a95f6b7b6d8..64348f623c1 100644 --- a/features/roomlist/impl/src/main/kotlin/io/element/android/features/roomlist/impl/RoomListContentStateProvider.kt +++ b/features/roomlist/impl/src/main/kotlin/io/element/android/features/roomlist/impl/RoomListContentStateProvider.kt @@ -22,7 +22,6 @@ open class RoomListContentStateProvider : PreviewParameterProvider().forEach { it.onLogoutForNativeSlidingSyncMigrationNeeded() } - } - }, modifier = modifier, ) { acceptDeclineInviteView.Render( @@ -121,8 +111,6 @@ class RoomListNode @AssistedInject constructor( ) } - directLogoutView.Render(state.directLogoutState) { - enableNativeSlidingSyncUseCase() - } + directLogoutView.Render(state.directLogoutState) {} } } diff --git a/features/roomlist/impl/src/main/kotlin/io/element/android/features/roomlist/impl/RoomListPresenter.kt b/features/roomlist/impl/src/main/kotlin/io/element/android/features/roomlist/impl/RoomListPresenter.kt index ae111297d98..29a462149a1 100644 --- a/features/roomlist/impl/src/main/kotlin/io/element/android/features/roomlist/impl/RoomListPresenter.kt +++ b/features/roomlist/impl/src/main/kotlin/io/element/android/features/roomlist/impl/RoomListPresenter.kt @@ -48,7 +48,6 @@ import io.element.android.libraries.matrix.api.core.RoomId import io.element.android.libraries.matrix.api.encryption.EncryptionService import io.element.android.libraries.matrix.api.encryption.RecoveryState import io.element.android.libraries.matrix.api.roomlist.RoomList -import io.element.android.libraries.matrix.api.sync.SlidingSyncVersion import io.element.android.libraries.matrix.api.sync.SyncService import io.element.android.libraries.matrix.api.sync.isOnline import io.element.android.libraries.matrix.api.timeline.ReceiptType @@ -173,16 +172,13 @@ class RoomListPresenter @Inject constructor( @Composable private fun rememberSecurityBannerState( securityBannerDismissed: Boolean, - needsSlidingSyncMigration: Boolean, ): State { val currentSecurityBannerDismissed by rememberUpdatedState(securityBannerDismissed) - val currentNeedsSlidingSyncMigration by rememberUpdatedState(needsSlidingSyncMigration) val recoveryState by encryptionService.recoveryStateStateFlow.collectAsState() return remember { derivedStateOf { calculateBannerState( securityBannerDismissed = currentSecurityBannerDismissed, - needsSlidingSyncMigration = currentNeedsSlidingSyncMigration, recoveryState = recoveryState, ) } @@ -191,7 +187,6 @@ class RoomListPresenter @Inject constructor( private fun calculateBannerState( securityBannerDismissed: Boolean, - needsSlidingSyncMigration: Boolean, recoveryState: RecoveryState, ): SecurityBannerState { if (securityBannerDismissed) { @@ -206,10 +201,6 @@ class RoomListPresenter @Inject constructor( RecoveryState.ENABLED -> Unit } - if (needsSlidingSyncMigration) { - return SecurityBannerState.NeedsNativeSlidingSyncMigration - } - return SecurityBannerState.None } @@ -231,10 +222,7 @@ class RoomListPresenter @Inject constructor( loadingState == RoomList.LoadingState.NotLoaded || roomSummaries is AsyncData.Loading } } - val needsSlidingSyncMigration by produceState(false) { - value = client.needsSlidingSyncMigration().getOrDefault(false) - } - val securityBannerState by rememberSecurityBannerState(securityBannerDismissed, needsSlidingSyncMigration) + val securityBannerState by rememberSecurityBannerState(securityBannerDismissed) return when { showEmpty -> RoomListContentState.Empty(securityBannerState = securityBannerState) showSkeleton -> RoomListContentState.Skeleton(count = 16) @@ -320,19 +308,6 @@ class RoomListPresenter @Inject constructor( } } - /** - * Checks if the user needs to migrate to a native sliding sync version. - */ - private suspend fun MatrixClient.needsSlidingSyncMigration(): Result = runCatching { - val currentSlidingSyncVersion = currentSlidingSyncVersion().getOrThrow() - if (currentSlidingSyncVersion != SlidingSyncVersion.Native) { - val availableSlidingSyncVersions = availableSlidingSyncVersions().getOrThrow() - availableSlidingSyncVersions.contains(SlidingSyncVersion.Native) - } else { - false - } - } - private var currentUpdateVisibleRangeJob: Job? = null private fun CoroutineScope.updateVisibleRange(range: IntRange) { currentUpdateVisibleRangeJob?.cancel() diff --git a/features/roomlist/impl/src/main/kotlin/io/element/android/features/roomlist/impl/RoomListState.kt b/features/roomlist/impl/src/main/kotlin/io/element/android/features/roomlist/impl/RoomListState.kt index 65cf5a35a6e..07994ef8cbc 100644 --- a/features/roomlist/impl/src/main/kotlin/io/element/android/features/roomlist/impl/RoomListState.kt +++ b/features/roomlist/impl/src/main/kotlin/io/element/android/features/roomlist/impl/RoomListState.kt @@ -56,7 +56,6 @@ enum class SecurityBannerState { None, SetUpRecovery, RecoveryKeyConfirmation, - NeedsNativeSlidingSyncMigration, } @Immutable diff --git a/features/roomlist/impl/src/main/kotlin/io/element/android/features/roomlist/impl/RoomListView.kt b/features/roomlist/impl/src/main/kotlin/io/element/android/features/roomlist/impl/RoomListView.kt index 668ce06255e..45fa5113e54 100644 --- a/features/roomlist/impl/src/main/kotlin/io/element/android/features/roomlist/impl/RoomListView.kt +++ b/features/roomlist/impl/src/main/kotlin/io/element/android/features/roomlist/impl/RoomListView.kt @@ -50,7 +50,6 @@ fun RoomListView( onRoomSettingsClick: (roomId: RoomId) -> Unit, onMenuActionClick: (RoomListMenuAction) -> Unit, onRoomDirectorySearchClick: () -> Unit, - onMigrateToNativeSlidingSyncClick: () -> Unit, modifier: Modifier = Modifier, acceptDeclineInviteView: @Composable () -> Unit, ) { @@ -77,7 +76,6 @@ fun RoomListView( onOpenSettings = onSettingsClick, onCreateRoomClick = onCreateRoomClick, onMenuActionClick = onMenuActionClick, - onMigrateToNativeSlidingSyncClick = onMigrateToNativeSlidingSyncClick, modifier = Modifier.padding(top = topPadding), ) // This overlaid view will only be visible when state.displaySearchResults is true @@ -107,7 +105,6 @@ private fun RoomListScaffold( onOpenSettings: () -> Unit, onCreateRoomClick: () -> Unit, onMenuActionClick: (RoomListMenuAction) -> Unit, - onMigrateToNativeSlidingSyncClick: () -> Unit, modifier: Modifier = Modifier, ) { fun onRoomClick(room: RoomListRoomSummary) { @@ -143,7 +140,6 @@ private fun RoomListScaffold( onConfirmRecoveryKeyClick = onConfirmRecoveryKeyClick, onRoomClick = ::onRoomClick, onCreateRoomClick = onCreateRoomClick, - onMigrateToNativeSlidingSyncClick = onMigrateToNativeSlidingSyncClick, modifier = Modifier .padding(padding) .consumeWindowInsets(padding) @@ -184,6 +180,5 @@ internal fun RoomListViewPreview(@PreviewParameter(RoomListStateProvider::class) onMenuActionClick = {}, onRoomDirectorySearchClick = {}, acceptDeclineInviteView = {}, - onMigrateToNativeSlidingSyncClick = {}, ) } diff --git a/features/roomlist/impl/src/main/kotlin/io/element/android/features/roomlist/impl/components/NativeSlidingSyncMigrationBanner.kt b/features/roomlist/impl/src/main/kotlin/io/element/android/features/roomlist/impl/components/NativeSlidingSyncMigrationBanner.kt deleted file mode 100644 index 132f0a0dc94..00000000000 --- a/features/roomlist/impl/src/main/kotlin/io/element/android/features/roomlist/impl/components/NativeSlidingSyncMigrationBanner.kt +++ /dev/null @@ -1,44 +0,0 @@ -/* - * Copyright 2024 New Vector Ltd. - * - * SPDX-License-Identifier: AGPL-3.0-only OR LicenseRef-Element-Commercial - * Please see LICENSE files in the repository root for full details. - */ - -package io.element.android.features.roomlist.impl.components - -import androidx.compose.runtime.Composable -import androidx.compose.ui.Modifier -import androidx.compose.ui.res.stringResource -import io.element.android.features.roomlist.impl.R -import io.element.android.libraries.designsystem.components.Announcement -import io.element.android.libraries.designsystem.components.AnnouncementType -import io.element.android.libraries.designsystem.preview.ElementPreview -import io.element.android.libraries.designsystem.preview.PreviewsDayNight - -@Composable -internal fun NativeSlidingSyncMigrationBanner( - onContinueClick: () -> Unit, - onDismissClick: () -> Unit, - modifier: Modifier = Modifier, -) { - Announcement( - modifier = modifier.roomListBannerPadding(), - title = stringResource(R.string.banner_migrate_to_native_sliding_sync_title), - description = stringResource(R.string.banner_migrate_to_native_sliding_sync_description), - type = AnnouncementType.Actionable( - actionText = stringResource(R.string.banner_migrate_to_native_sliding_sync_action), - onActionClick = onContinueClick, - onDismissClick = onDismissClick, - ) - ) -} - -@PreviewsDayNight -@Composable -internal fun NativeSlidingSyncMigrationBannerPreview() = ElementPreview { - NativeSlidingSyncMigrationBanner( - onContinueClick = {}, - onDismissClick = {}, - ) -} diff --git a/features/roomlist/impl/src/main/kotlin/io/element/android/features/roomlist/impl/components/RoomListContentView.kt b/features/roomlist/impl/src/main/kotlin/io/element/android/features/roomlist/impl/components/RoomListContentView.kt index f719a9c9c90..ebd618185ca 100644 --- a/features/roomlist/impl/src/main/kotlin/io/element/android/features/roomlist/impl/components/RoomListContentView.kt +++ b/features/roomlist/impl/src/main/kotlin/io/element/android/features/roomlist/impl/components/RoomListContentView.kt @@ -64,7 +64,6 @@ fun RoomListContentView( onConfirmRecoveryKeyClick: () -> Unit, onRoomClick: (RoomListRoomSummary) -> Unit, onCreateRoomClick: () -> Unit, - onMigrateToNativeSlidingSyncClick: () -> Unit, modifier: Modifier = Modifier, ) { Box(modifier = modifier) { @@ -90,7 +89,6 @@ fun RoomListContentView( eventSink = eventSink, onSetUpRecoveryClick = onSetUpRecoveryClick, onConfirmRecoveryKeyClick = onConfirmRecoveryKeyClick, - onMigrateToNativeSlidingSyncClick = onMigrateToNativeSlidingSyncClick, onRoomClick = onRoomClick, ) } @@ -162,7 +160,6 @@ private fun RoomsView( onSetUpRecoveryClick: () -> Unit, onConfirmRecoveryKeyClick: () -> Unit, onRoomClick: (RoomListRoomSummary) -> Unit, - onMigrateToNativeSlidingSyncClick: () -> Unit, modifier: Modifier = Modifier, ) { if (state.summaries.isEmpty() && filtersState.hasAnyFilterSelected) { @@ -177,7 +174,6 @@ private fun RoomsView( onSetUpRecoveryClick = onSetUpRecoveryClick, onConfirmRecoveryKeyClick = onConfirmRecoveryKeyClick, onRoomClick = onRoomClick, - onMigrateToNativeSlidingSyncClick = onMigrateToNativeSlidingSyncClick, modifier = modifier.fillMaxSize(), ) } @@ -190,7 +186,6 @@ private fun RoomsViewList( onSetUpRecoveryClick: () -> Unit, onConfirmRecoveryKeyClick: () -> Unit, onRoomClick: (RoomListRoomSummary) -> Unit, - onMigrateToNativeSlidingSyncClick: () -> Unit, modifier: Modifier = Modifier, ) { val lazyListState = rememberLazyListState() @@ -229,14 +224,6 @@ private fun RoomsViewList( ) } } - SecurityBannerState.NeedsNativeSlidingSyncMigration -> { - item { - NativeSlidingSyncMigrationBanner( - onContinueClick = onMigrateToNativeSlidingSyncClick, - onDismissClick = { updatedEventSink(RoomListEvents.DismissBanner) }, - ) - } - } SecurityBannerState.None -> if (state.fullScreenIntentPermissionsState.shouldDisplayBanner) { item { FullScreenIntentPermissionBanner(state = state.fullScreenIntentPermissionsState) @@ -318,6 +305,5 @@ internal fun RoomListContentViewPreview(@PreviewParameter(RoomListContentStatePr onConfirmRecoveryKeyClick = {}, onRoomClick = {}, onCreateRoomClick = {}, - onMigrateToNativeSlidingSyncClick = {}, ) } diff --git a/features/roomlist/impl/src/main/res/values-be/translations.xml b/features/roomlist/impl/src/main/res/values-be/translations.xml index a6201922ffb..d7d20060c8e 100644 --- a/features/roomlist/impl/src/main/res/values-be/translations.xml +++ b/features/roomlist/impl/src/main/res/values-be/translations.xml @@ -1,9 +1,5 @@ - "Выйсці і абнавіць" - "Ваш сервер зараз падтрымлівае новы, хутчэйшы пратакол. Выйдзіце з сістэмы і зноў увайдзіце, каб абнавіць яе. Гэта дапаможа вам пазбегнуць прымусовага выхаду з сістэмы, калі стары пратакол будзе пазней выдалены." - "Ваш хатні сервер больш не падтрымлівае стары пратакол. Калі ласка, выйдзіце і ўвайдзіце зноў, каб працягнуць выкарыстанне праграмы." - "Даступна абнаўленне" "Стварыце новы ключ аднаўлення, які можна выкарыстоўваць для аднаўлення зашыфраванай гісторыі паведамленняў у выпадку страты доступу да вашых прылад." "Наладзьце аднаўленне" "Наладзіць аднаўленне" diff --git a/features/roomlist/impl/src/main/res/values-cs/translations.xml b/features/roomlist/impl/src/main/res/values-cs/translations.xml index 921bb77027a..795edcfe0ca 100644 --- a/features/roomlist/impl/src/main/res/values-cs/translations.xml +++ b/features/roomlist/impl/src/main/res/values-cs/translations.xml @@ -1,9 +1,5 @@ - "Odhlásit se a upgradovat" - "Váš server nyní podporuje nový, rychlejší protokol. Chcete-li upgradovat, odhlaste se a znovu se přihlaste. Pokud to uděláte nyní, pomůže vám vyhnout se nucenému odhlášení, když bude starý protokol později odstraněn." - "Váš domovský server již nepodporuje starý protokol. Chcete-li pokračovat v používání aplikace, odhlaste se a znovu se přihlaste." - "Upgrade k dispozici" "Vygenerujte nový klíč pro obnovení, který lze použít k obnovení historie šifrovaných zpráv v případě, že ztratíte přístup ke svým zařízením." "Nastavení obnovy" "Nastavení obnovy" diff --git a/features/roomlist/impl/src/main/res/values-de/translations.xml b/features/roomlist/impl/src/main/res/values-de/translations.xml index 3b8b70c40f2..8fa6b7c7562 100644 --- a/features/roomlist/impl/src/main/res/values-de/translations.xml +++ b/features/roomlist/impl/src/main/res/values-de/translations.xml @@ -1,9 +1,5 @@ - "Abmelden und aktualisieren" - "Dein Server unterstützt jetzt ein neues, schnelleres Protokoll. Melde dich ab und melde dich wieder an, um zu aktualisieren. Wenn du das jetzt tust, vermeidest du eine erzwungene Abmeldung, wenn das alte Protokoll später entfernt wird." - "Dein Homeserver unterstützt das alte Protokoll nicht mehr. Bitte logge dich aus und melde dich wieder an, um die App weiter zu nutzen." - "Aktualisierung verfügbar" "Erstelle einen neuen Wiederherstellungsschlüssel, mit dem du deinen verschlüsselten Nachrichtenverlauf wiederherstellen kannst, wenn du dich an einem neuen Gerät anmeldest." "Wiederherstellung einrichten" "Wiederherstellung einrichten" diff --git a/features/roomlist/impl/src/main/res/values-el/translations.xml b/features/roomlist/impl/src/main/res/values-el/translations.xml index c1ac4c59451..b92c7daa90a 100644 --- a/features/roomlist/impl/src/main/res/values-el/translations.xml +++ b/features/roomlist/impl/src/main/res/values-el/translations.xml @@ -1,9 +1,5 @@ - "Αποσύνδεση & Αναβάθμιση" - "Ο διακομιστής σου υποστηρίζει τώρα ένα νέο, ταχύτερο πρωτόκολλο. Αποσυνδέσου και συνδέσου ξανά για αναβάθμιση τώρα. Κάνοντας αυτό τώρα θα σε βοηθήσει να αποφύγεις μια αναγκαστική αποσύνδεση όταν το παλιό πρωτόκολλο καταργηθεί αργότερα." - "Ο οικιακός διακομιστής σου δεν υποστηρίζει πλέον το παλιό πρωτόκολλο. Αποσυνδέσου και συνδέσου ξανά για να συνεχίσεις να χρησιμοποιείς την εφαρμογή." - "Διαθέσιμη αναβάθμιση" "Δημιούργησε ένα νέο κλειδί ανάκτησης που μπορεί να χρησιμοποιηθεί για την επαναφορά του ιστορικού των κρυπτογραφημένων μηνυμάτων σου σε περίπτωση που χάσεις την πρόσβαση στις συσκευές σου." "Ρύθμιση ανάκτησης" "Ρύθμιση ανάκτησης" diff --git a/features/roomlist/impl/src/main/res/values-et/translations.xml b/features/roomlist/impl/src/main/res/values-et/translations.xml index 2eb1f638328..f642e344570 100644 --- a/features/roomlist/impl/src/main/res/values-et/translations.xml +++ b/features/roomlist/impl/src/main/res/values-et/translations.xml @@ -1,9 +1,5 @@ - "Logi välja ja uuenda" - "Sinu koduserver toetab uut ja kiiremat protokolli. Uuendamiseks logi korraks rakendusest välja ja siis tagasi. Mingil hetkel tulevikus vana protokoll eemaldatakse kasutusest ja tehes uuenduse nüüd väldid hilisemat sundkorras uuendust." - "Sinu koduserver enam ei toeta vana protokolli. Jätkamaks rakenduse kasutamist palun logi välja ning seejärel tagasi." - "Saadaval on uuendus" "Loo uus taastevõti, mida saad kasutada oma krüptitud sõnumite ajaloo taastamisel olukorras, kus kaotad ligipääsu oma seadmetele." "Seadista andmete taastamine" "Seadista taastamine" diff --git a/features/roomlist/impl/src/main/res/values-fa/translations.xml b/features/roomlist/impl/src/main/res/values-fa/translations.xml index f99eb289a66..2bccfdb38a5 100644 --- a/features/roomlist/impl/src/main/res/values-fa/translations.xml +++ b/features/roomlist/impl/src/main/res/values-fa/translations.xml @@ -1,7 +1,5 @@ - "خروج و ارتقا" - "ارتقا موجود است" "برپایی بازیابی" "برپایی بازیابی" "ورود کلید بازیابیتان" diff --git a/features/roomlist/impl/src/main/res/values-fi/translations.xml b/features/roomlist/impl/src/main/res/values-fi/translations.xml index 5927a1bc572..9c79e556ac2 100644 --- a/features/roomlist/impl/src/main/res/values-fi/translations.xml +++ b/features/roomlist/impl/src/main/res/values-fi/translations.xml @@ -1,9 +1,5 @@ - "Kirjaudu Ulos & Päivitä" - "Palvelimesi tukee nyt uutta, nopeampaa protokollaa. Kirjaudu ulos ja takaisin sisään päivittääksesi nyt. Jos teet tämän nyt, voit välttää pakotetun uloskirjautumisen, kun vanha protokolla poistetaan myöhemmin." - "Kotipalvelimesi ei enää tue vanhaa protokollaa. Kirjaudu ulos ja takaisin sisään jatkaaksesi sovelluksen käyttöä." - "Päivitys saatavilla" "Palauta kryptografinen identiteettisi ja viestihistoriasi palautusavaimella, mikäli menetät pääsyn kaikkiin laitteisiisi." "Ota palautus käyttöön" "Ota palautus käyttöön tilisi suojaamiseksi" diff --git a/features/roomlist/impl/src/main/res/values-fr/translations.xml b/features/roomlist/impl/src/main/res/values-fr/translations.xml index 04fb371eebc..102edf2ee4c 100644 --- a/features/roomlist/impl/src/main/res/values-fr/translations.xml +++ b/features/roomlist/impl/src/main/res/values-fr/translations.xml @@ -1,9 +1,5 @@ - "Déconnecter et mettre à niveau" - "Votre serveur prend désormais en charge un nouveau protocole plus rapide. Déconnectez-vous, puis reconnectez-vous pour effectuer la mise à niveau dès maintenant. En le faisant tout de suite, vous éviterez une déconnexion forcée lorsque l’ancien protocole sera supprimé." - "Votre serveur d’accueil ne prend plus en charge l’ancien protocole. Veuillez vous déconnecter puis vous reconnecter pour continuer à utiliser l’application." - "Mise à niveau disponible" "Générez une nouvelle clé de récupération qui peut être utilisée pour restaurer l’historique de vos messages chiffrés au cas où vous perdriez l’accès à vos appareils." "Configurer la sauvegarde" "Configurer la récupération" diff --git a/features/roomlist/impl/src/main/res/values-hu/translations.xml b/features/roomlist/impl/src/main/res/values-hu/translations.xml index fc27e2c0d71..aae22494a01 100644 --- a/features/roomlist/impl/src/main/res/values-hu/translations.xml +++ b/features/roomlist/impl/src/main/res/values-hu/translations.xml @@ -1,9 +1,5 @@ - "Kijelentkezés és frissítés" - "A kiszolgálója mostantól egy új, gyorsabb protokollt támogat. A frissítéshez jelentkezzen ki, majd jelentkezzen be újra. Ha ezt most megteszi, elkerülheti a kényszerített kijelentkeztetést a régi protokollt eltávolításakor." - "A Matrix-kiszolgáló már nem támogatja a régi protokollt. Az alkalmazás további használatához jelentkezzen ki és be." - "Frissítés érhető el" "Hozzon létre egy új helyreállítási kulcsot, amellyel visszaállíthatja a titkosított üzenetek előzményeit, ha elveszíti az eszközökhöz való hozzáférést." "Helyreállítás beállítása" "Helyreállítás beállítása a fiókja védelméhez" diff --git a/features/roomlist/impl/src/main/res/values-in/translations.xml b/features/roomlist/impl/src/main/res/values-in/translations.xml index e3c3bb4800f..936bb1e3998 100644 --- a/features/roomlist/impl/src/main/res/values-in/translations.xml +++ b/features/roomlist/impl/src/main/res/values-in/translations.xml @@ -1,9 +1,5 @@ - "Keluar & Tingkatkan" - "Server Anda kini mendukung protokol baru yang lebih cepat. Keluar dan masuk lagi untuk memperbarui sekarang. Melakukan hal ini sekarang akan membantu Anda menghindari keluar paksa saat protokol lama dihapus nantinya." - "Homeserver Anda tidak lagi mendukung protokol lama. Silakan keluar dan masuk kembali untuk terus menggunakan aplikasi." - "Peningkatan tersedia" "Buat kunci pemulihan baru yang dapat digunakan untuk memulihkan riwayat pesan terenkripsi Anda jika Anda kehilangan akses ke perangkat Anda." "Siapkan pemulihan" "Siapkan pemulihan" diff --git a/features/roomlist/impl/src/main/res/values-it/translations.xml b/features/roomlist/impl/src/main/res/values-it/translations.xml index cd248d73722..95b926f169c 100644 --- a/features/roomlist/impl/src/main/res/values-it/translations.xml +++ b/features/roomlist/impl/src/main/res/values-it/translations.xml @@ -1,9 +1,5 @@ - "Esci e aggiorna" - "Il tuo server ora supporta un nuovo protocollo più veloce. Esci e rientra per effettuare l\'aggiornamento. Se lo fai ora, eviterai una disconnessione forzata quando il vecchio protocollo verrà rimosso in seguito." - "Il tuo homeserver non supporta più il vecchio protocollo. Esci e rientra per continuare a usare l\'app." - "Aggiornamento disponibile" "Genera una nuova chiave di recupero che può essere usata per ripristinare la cronologia dei messaggi crittografati nel caso in cui tu perda l\'accesso ai tuoi dispositivi." "Configura il recupero" "Configura il ripristino" diff --git a/features/roomlist/impl/src/main/res/values-nb/translations.xml b/features/roomlist/impl/src/main/res/values-nb/translations.xml index 7c108c91a43..11741812c7c 100644 --- a/features/roomlist/impl/src/main/res/values-nb/translations.xml +++ b/features/roomlist/impl/src/main/res/values-nb/translations.xml @@ -1,6 +1,5 @@ - "Oppgradering tilgjengelig" "Skriv inn gjenopprettingsnøkkelen din" "Har du glemt din gjenopprettingsnøkkel?" "Er du sikker på at du vil takke nei til invitasjonen til å bli med i %1$s?" diff --git a/features/roomlist/impl/src/main/res/values-nl/translations.xml b/features/roomlist/impl/src/main/res/values-nl/translations.xml index d8ea5bc6f3b..3acfb82cf22 100644 --- a/features/roomlist/impl/src/main/res/values-nl/translations.xml +++ b/features/roomlist/impl/src/main/res/values-nl/translations.xml @@ -1,9 +1,5 @@ - "Uitloggen & Upgraden" - "Je server ondersteunt nu een nieuw, sneller protocol. Log uit en log opnieuw in om nu te upgraden. Als je dit nu doet, voorkom je dat je geforceerd uitlogt wordt wanneer het oude protocol later wordt verwijderd." - "Je homeserver ondersteunt het oude protocol niet meer. Log uit en log opnieuw in om de app te blijven gebruiken." - "Upgrade beschikbaar" "Herstelmogelijkheid instellen" "Je chatback-up is momenteel niet gesynchroniseerd. Je moet je herstelsleutel invoeren om toegang te behouden tot je chatback-up." "Voer je herstelsleutel in" diff --git a/features/roomlist/impl/src/main/res/values-pl/translations.xml b/features/roomlist/impl/src/main/res/values-pl/translations.xml index 140eb7b1c4e..c0721a60813 100644 --- a/features/roomlist/impl/src/main/res/values-pl/translations.xml +++ b/features/roomlist/impl/src/main/res/values-pl/translations.xml @@ -1,9 +1,5 @@ - "Wyloguj się i zaktualizuj" - "Twój serwer obsługuje teraz nowy, szybszy protokół. Wyloguj się i zaloguj ponownie, aby uaktualnić teraz. Zrobienie tego teraz pomoże uniknąć wymuszonego wylogowania, gdy stary protokół zostanie później usunięty." - "Twój serwer domowy już nie wspiera starego protokołu. Zaloguj się ponownie, aby kontynuować korzystanie z aplikacji." - "Dostępna aktualizacja" "Wygeneruj nowy klucz przywracania, którego można użyć do przywrócenia historii wiadomości szyfrowanych w przypadku utraty dostępu do swoich urządzeń." "Skonfiguruj przywracanie" "Skonfiguruj przywracanie" diff --git a/features/roomlist/impl/src/main/res/values-pt/translations.xml b/features/roomlist/impl/src/main/res/values-pt/translations.xml index b6198aa5a4b..d5f11986e12 100644 --- a/features/roomlist/impl/src/main/res/values-pt/translations.xml +++ b/features/roomlist/impl/src/main/res/values-pt/translations.xml @@ -1,9 +1,5 @@ - "Sair & Atualizar" - "O teu servidor suporta agora um protocolo novo e mais rápido. Termina a sessão e volta a iniciar sessão para atualizar agora. Se o fizeres agora, evitarás um fim de sessão forçado quando o protocolo antigo for removido mais tarde." - "Seu homeserver não suporta mais o protocolo antigo. Termine sessão e volte a iniciar sessão para continuar a utilizar a aplicação." - "Atualização disponível" "Recupera a tua identidade criptográfica e o histórico de mensagens com uma chave de recuperação se tiveres perdido todos os teus dispositivos existentes." "Configurar recuperação" "Configurar a recuperação" diff --git a/features/roomlist/impl/src/main/res/values-ro/translations.xml b/features/roomlist/impl/src/main/res/values-ro/translations.xml index 077ed1a4c5b..b4d276dd74c 100644 --- a/features/roomlist/impl/src/main/res/values-ro/translations.xml +++ b/features/roomlist/impl/src/main/res/values-ro/translations.xml @@ -1,9 +1,5 @@ - "Deconectați-vă și faceți upgrade" - "Serverul dvs. acceptă acum un protocol nou, mai rapid. Deconectați-vă și conectați-vă din nou pentru a face upgrade acum. Dacă faceți acest lucru acum, vă va ajuta să evitați o deconectare forțată atunci când vechiul protocol este eliminat ulterior." - "Serverul dvs. de acasă nu mai acceptă vechiul protocol. Vă rugăm să vă deconectați și să vă conectați din nou pentru a continua să utilizați aplicația." - "Upgrade disponibil" "Recuperați-vă identitatea criptografică și istoricul mesajelor cu o cheie de recuperare dacă ați pierdut toate dispozitivele existente." "Configurați recuperarea" "Configurați recuperarea pentru a vă proteja contul" diff --git a/features/roomlist/impl/src/main/res/values-ru/translations.xml b/features/roomlist/impl/src/main/res/values-ru/translations.xml index 9c2e902afcc..63072a2dc6d 100644 --- a/features/roomlist/impl/src/main/res/values-ru/translations.xml +++ b/features/roomlist/impl/src/main/res/values-ru/translations.xml @@ -1,9 +1,5 @@ - "Выйти и обновить" - "Теперь ваш сервер поддерживает новый, более быстрый протокол. Чтобы обновить его прямо сейчас, выйдите и войдите в свою учётную запись снова. Сделав это сейчас, вы сможете избежать принудительного выхода из системы при последующем удалении старого протокола." - "Ваш домашний сервер больше не поддерживает старый протокол. Пожалуйста, выйдите и войдите в свою учётную запись снова, чтобы продолжить использование приложения." - "Доступно обновление" "Создайте новый ключ восстановления, который можно использовать для восстановления зашифрованной истории сообщений в случае потери доступа к своим устройствам." "Настроить восстановление" "Для защиты вашего аккаунта рекомендуется настроить восстановление" diff --git a/features/roomlist/impl/src/main/res/values-sk/translations.xml b/features/roomlist/impl/src/main/res/values-sk/translations.xml index 610d9bb489a..e2f67e643e0 100644 --- a/features/roomlist/impl/src/main/res/values-sk/translations.xml +++ b/features/roomlist/impl/src/main/res/values-sk/translations.xml @@ -1,9 +1,5 @@ - "Odhlásiť sa a aktualizovať" - "Váš server teraz podporuje nový, rýchlejší protokol. Odhláste sa a prihláste sa znova, aby ste mohli aktualizovať. Ak to urobíte teraz, pomôže vám vyhnúť sa nútenému odhláseniu, keď sa starý protokol neskôr odstráni." - "Váš domovský server už nepodporuje starý protokol. Ak chcete pokračovať v používaní aplikácie, odhláste sa a znova sa prihláste." - "Aktualizácia je k dispozícii" "Vytvorte nový kľúč na obnovenie, ktorý môžete použiť na obnovenie vašej histórie šifrovaných správ v prípade straty prístupu k vašim zariadeniam." "Nastaviť obnovenie" "Nastaviť obnovenie" diff --git a/features/roomlist/impl/src/main/res/values-sv/translations.xml b/features/roomlist/impl/src/main/res/values-sv/translations.xml index fa35fdf79a6..5509f17dc03 100644 --- a/features/roomlist/impl/src/main/res/values-sv/translations.xml +++ b/features/roomlist/impl/src/main/res/values-sv/translations.xml @@ -1,9 +1,5 @@ - "Logga ut och uppgradera" - "Din server stöder nu ett nytt, snabbare protokoll. Logga ut och logga in igen för att uppgradera nu. Om du gör detta nu hjälper du dig att undvika en tvingad utloggning när det gamla protokollet tas bort senare." - "Din hemserver stöder inte längre det gamla protokollet. Logga ut och logga in igen för att fortsätta använda appen." - "Uppgradering tillgänglig" "Skapa en ny återställningsnyckel som kan användas för att återställa din krypterade meddelandehistorik om du förlorar åtkomst till dina enheter." "Ställ in återställning" "Ställ in återställning" diff --git a/features/roomlist/impl/src/main/res/values-tr/translations.xml b/features/roomlist/impl/src/main/res/values-tr/translations.xml index d31603c8365..1176b53662d 100644 --- a/features/roomlist/impl/src/main/res/values-tr/translations.xml +++ b/features/roomlist/impl/src/main/res/values-tr/translations.xml @@ -1,9 +1,5 @@ - "Çıkış Yap ve Yükselt" - "Sunucunuz artık yeni, daha hızlı bir protokolü destekliyor. Şimdi oturumu kapatıp tekrar oturum açarak yükseltme yapın. Bunu şimdi yapmak, eski protokol daha sonra kaldırıldığında zorunlu oturum kapatmayı önlemenize yardımcı olacaktır." - "Ana sunucunuz artık eski protokolü desteklemiyor. Lütfen oturumu kapatın ve uygulamayı kullanmaya devam etmek için tekrar oturum açın." - "Yükseltme mevcut" "Mevcut tüm cihazlarınızı kaybettiyseniz şifreleme kimliğinizi ve mesaj geçmişinizi bir kurtarma anahtarıyla kurtarın." "Kurtarmayı ayarlayın" "Hesabınızı korumak için kurtarmayı ayarlayın" diff --git a/features/roomlist/impl/src/main/res/values-uk/translations.xml b/features/roomlist/impl/src/main/res/values-uk/translations.xml index 783bac68c0d..2f136bc64f5 100644 --- a/features/roomlist/impl/src/main/res/values-uk/translations.xml +++ b/features/roomlist/impl/src/main/res/values-uk/translations.xml @@ -1,9 +1,5 @@ - "Вийти та оновити" - "Ваш сервер тепер підтримує новий, швидший протокол. Вийдіть із системи та увійдіть знову, щоб оновити систему зараз. Якщо ви зробите це зараз, це допоможе вам уникнути примусового виходу з системи, коли старий протокол буде видалено пізніше." - "Ваш домашній сервер більше не підтримує старий протокол. Будь ласка, вийдіть і увійдіть знову, щоб продовжити використання програми." - "Доступне оновлення" "Відновіть свою криптографічну ідентичність та історію повідомлень за допомогою ключа відновлення, якщо ви втратили всі наявні пристрої." "Налаштувати відновлення" "Налаштуйте відновлення для захисту свого облікового запису" diff --git a/features/roomlist/impl/src/main/res/values-zh-rTW/translations.xml b/features/roomlist/impl/src/main/res/values-zh-rTW/translations.xml index 82b333e7789..7a6057fc0b1 100644 --- a/features/roomlist/impl/src/main/res/values-zh-rTW/translations.xml +++ b/features/roomlist/impl/src/main/res/values-zh-rTW/translations.xml @@ -1,9 +1,5 @@ - "登出並升級" - "您的伺服器現在支援新的、更快的協定。立即登出並重新登入以進行升級。現在這樣做將協助您避免在稍後移除舊協定時被強制登出。" - "您的家伺服器不再支援舊協定。請登出並重新登入以繼續使用應用程式。" - "可升級" "若您遺失了所有現有裝置,則請使用復原金鑰以救援您的密碼學身份與訊息歷史紀錄。" "設定復原" "設定備援以保護您的帳號" diff --git a/features/roomlist/impl/src/main/res/values-zh/translations.xml b/features/roomlist/impl/src/main/res/values-zh/translations.xml index 7c2555d489e..b4970b43822 100644 --- a/features/roomlist/impl/src/main/res/values-zh/translations.xml +++ b/features/roomlist/impl/src/main/res/values-zh/translations.xml @@ -1,9 +1,5 @@ - "登出并升级" - "您的服务器现在支持更快的新协议。现在登出并重新登录以进行升级。现在这样做可以帮助您避免在以后删除旧协议时被强制登出。" - "您的服务器不再支持旧协议。请登出并重新登录以继续使用此应用。" - "有可用升级" "生成新的恢复密钥,该密钥可用于在您无法访问设备时恢复加密的消息历史记录。" "设置恢复" "设置恢复" diff --git a/features/roomlist/impl/src/main/res/values/localazy.xml b/features/roomlist/impl/src/main/res/values/localazy.xml index e10d8da9088..2e1159c02c0 100644 --- a/features/roomlist/impl/src/main/res/values/localazy.xml +++ b/features/roomlist/impl/src/main/res/values/localazy.xml @@ -1,9 +1,5 @@ - "Log Out & Upgrade" - "Your server now supports a new, faster protocol. Log out and log back in to upgrade now. Doing this now will help you avoid a forced logout when the old protocol is removed later." - "Your homeserver no longer supports the old protocol. Please log out and log back in to continue using the app." - "Upgrade available" "Recover your cryptographic identity and message history with a recovery key if you have lost all your existing devices." "Set up recovery" "Set up recovery to protect your account" diff --git a/features/roomlist/impl/src/test/kotlin/io/element/android/features/roomlist/impl/RoomListViewTest.kt b/features/roomlist/impl/src/test/kotlin/io/element/android/features/roomlist/impl/RoomListViewTest.kt index ee7989cafca..1810aedd2d9 100644 --- a/features/roomlist/impl/src/test/kotlin/io/element/android/features/roomlist/impl/RoomListViewTest.kt +++ b/features/roomlist/impl/src/test/kotlin/io/element/android/features/roomlist/impl/RoomListViewTest.kt @@ -229,21 +229,6 @@ class RoomListViewTest { listOf(RoomListEvents.AcceptInvite(invitedRoom), RoomListEvents.DeclineInvite(invitedRoom)), ) } - - @Test - fun `clicking on logout and migrate calls the migration clicked callback`() { - val state = aRoomListState( - contentState = aRoomsContentState(securityBannerState = SecurityBannerState.NeedsNativeSlidingSyncMigration), - eventSink = {}, - ) - ensureCalledOnce { callback -> - rule.setRoomListView( - state = state, - onMigrateToNativeSlidingSyncClick = callback, - ) - rule.clickOn(R.string.banner_migrate_to_native_sliding_sync_action) - } - } } private fun AndroidComposeTestRule.setRoomListView( @@ -256,7 +241,6 @@ private fun AndroidComposeTestRule.setRoomL onRoomSettingsClick: (RoomId) -> Unit = EnsureNeverCalledWithParam(), onMenuActionClick: (RoomListMenuAction) -> Unit = EnsureNeverCalledWithParam(), onRoomDirectorySearchClick: () -> Unit = EnsureNeverCalled(), - onMigrateToNativeSlidingSyncClick: () -> Unit = EnsureNeverCalled() ) { setContent { RoomListView( @@ -269,7 +253,6 @@ private fun AndroidComposeTestRule.setRoomL onRoomSettingsClick = onRoomSettingsClick, onMenuActionClick = onMenuActionClick, onRoomDirectorySearchClick = onRoomDirectorySearchClick, - onMigrateToNativeSlidingSyncClick = onMigrateToNativeSlidingSyncClick, acceptDeclineInviteView = { }, ) } diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index f27a5b6397b..41988775034 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -173,7 +173,7 @@ jsoup = "org.jsoup:jsoup:1.18.3" appyx_core = { module = "com.bumble.appyx:core", version.ref = "appyx" } molecule-runtime = "app.cash.molecule:molecule-runtime:2.0.0" timber = "com.jakewharton.timber:timber:5.0.1" -matrix_sdk = "org.matrix.rustcomponents:sdk-android:0.2.78" +matrix_sdk = "org.matrix.rustcomponents:sdk-android:25.2.17" matrix_richtexteditor = { module = "io.element.android:wysiwyg", version.ref = "wysiwyg" } matrix_richtexteditor_compose = { module = "io.element.android:wysiwyg-compose", version.ref = "wysiwyg" } sqldelight-driver-android = { module = "app.cash.sqldelight:android-driver", version.ref = "sqldelight" } diff --git a/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/RustMatrixClientFactory.kt b/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/RustMatrixClientFactory.kt index 48e12967929..deca69e1e92 100644 --- a/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/RustMatrixClientFactory.kt +++ b/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/RustMatrixClientFactory.kt @@ -129,10 +129,8 @@ class RustMatrixClientFactory @Inject constructor( // Apply sliding sync version settings when (slidingSyncType) { ClientBuilderSlidingSync.Restored -> this - is ClientBuilderSlidingSync.CustomProxy -> slidingSyncVersionBuilder(SlidingSyncVersionBuilder.Proxy(slidingSyncType.url)) - ClientBuilderSlidingSync.Discovered -> slidingSyncVersionBuilder(SlidingSyncVersionBuilder.DiscoverProxy) - ClientBuilderSlidingSync.Simplified -> slidingSyncVersionBuilder(SlidingSyncVersionBuilder.DiscoverNative) - ClientBuilderSlidingSync.ForcedSimplified -> slidingSyncVersionBuilder(SlidingSyncVersionBuilder.Native) + ClientBuilderSlidingSync.Discovered -> slidingSyncVersionBuilder(SlidingSyncVersionBuilder.DISCOVER_NATIVE) + ClientBuilderSlidingSync.Native -> slidingSyncVersionBuilder(SlidingSyncVersionBuilder.NATIVE) } } .run { @@ -143,21 +141,14 @@ class RustMatrixClientFactory @Inject constructor( } sealed interface ClientBuilderSlidingSync { - // The proxy is set by the user. - data class CustomProxy(val url: String) : ClientBuilderSlidingSync - // The proxy will be supplied when restoring the Session. data object Restored : ClientBuilderSlidingSync - // A proxy must be discovered whilst building the session. + // A Native Sliding Sync instance must be discovered whilst building the session. data object Discovered : ClientBuilderSlidingSync - // Use Simplified Sliding Sync. - data object Simplified : ClientBuilderSlidingSync - - // Force using Simplified Sliding Sync. - // TODO allow the user to select between proxy, simplified or force simplified in developer options. - data object ForcedSimplified : ClientBuilderSlidingSync + // Force using Native Sliding Sync. + data object Native : ClientBuilderSlidingSync } private fun SessionData.toSession() = Session( @@ -166,6 +157,6 @@ private fun SessionData.toSession() = Session( userId = userId, deviceId = deviceId, homeserverUrl = homeserverUrl, - slidingSyncVersion = slidingSyncProxy?.let(SlidingSyncVersion::Proxy) ?: SlidingSyncVersion.Native, + slidingSyncVersion = SlidingSyncVersion.NATIVE, oidcData = oidcData, ) diff --git a/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/auth/RustMatrixAuthenticationService.kt b/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/auth/RustMatrixAuthenticationService.kt index 54808fdb0e9..0a4b1364926 100644 --- a/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/auth/RustMatrixAuthenticationService.kt +++ b/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/auth/RustMatrixAuthenticationService.kt @@ -8,7 +8,6 @@ package io.element.android.libraries.matrix.impl.auth import com.squareup.anvil.annotations.ContributesBinding -import io.element.android.appconfig.AuthenticationConfig import io.element.android.libraries.core.coroutine.CoroutineDispatchers import io.element.android.libraries.core.extensions.mapFailure import io.element.android.libraries.di.AppScope @@ -32,7 +31,6 @@ import io.element.android.libraries.matrix.impl.keys.PassphraseGenerator import io.element.android.libraries.matrix.impl.mapper.toSessionData import io.element.android.libraries.matrix.impl.paths.SessionPaths import io.element.android.libraries.matrix.impl.paths.SessionPathsFactory -import io.element.android.libraries.preferences.api.store.AppPreferencesStore import io.element.android.libraries.sessionstorage.api.LoggedInState import io.element.android.libraries.sessionstorage.api.LoginType import io.element.android.libraries.sessionstorage.api.SessionStore @@ -40,10 +38,8 @@ import kotlinx.coroutines.CancellationException import kotlinx.coroutines.flow.Flow import kotlinx.coroutines.flow.MutableStateFlow import kotlinx.coroutines.flow.StateFlow -import kotlinx.coroutines.flow.first import kotlinx.coroutines.withContext import org.matrix.rustcomponents.sdk.Client -import org.matrix.rustcomponents.sdk.ClientBuildException import org.matrix.rustcomponents.sdk.ClientBuilder import org.matrix.rustcomponents.sdk.HumanQrLoginException import org.matrix.rustcomponents.sdk.OidcConfiguration @@ -64,7 +60,6 @@ class RustMatrixAuthenticationService @Inject constructor( private val rustMatrixClientFactory: RustMatrixClientFactory, private val passphraseGenerator: PassphraseGenerator, private val oidcConfigurationProvider: OidcConfigurationProvider, - private val appPreferencesStore: AppPreferencesStore, ) : MatrixAuthenticationService { // Passphrase which will be used for new sessions. Existing sessions will use the passphrase // stored in the SessionData. @@ -288,28 +283,12 @@ class RustMatrixAuthenticationService @Inject constructor( sessionPaths: SessionPaths, config: suspend ClientBuilder.() -> ClientBuilder, ): Client { - val slidingSyncType = getSlidingSyncType() - if (slidingSyncType is ClientBuilderSlidingSync.Simplified) { - Timber.d("Creating client with simplified sliding sync") - try { - return rustMatrixClientFactory - .getBaseClientBuilder( - sessionPaths = sessionPaths, - passphrase = pendingPassphrase, - slidingSyncType = slidingSyncType, - ) - .config() - .build() - } catch (e: ClientBuildException.SlidingSyncVersion) { - Timber.e(e, "Failed to create client with simplified sliding sync, trying with Proxy now") - } - } - Timber.d("Creating client with Proxy sliding sync") + Timber.d("Creating client with simplified sliding sync") return rustMatrixClientFactory .getBaseClientBuilder( sessionPaths = sessionPaths, passphrase = pendingPassphrase, - slidingSyncType = getSlidingSyncProxy(), + slidingSyncType = ClientBuilderSlidingSync.Discovered, ) .config() .build() @@ -322,43 +301,17 @@ class RustMatrixAuthenticationService @Inject constructor( oidcConfiguration: OidcConfiguration, progressListener: QrLoginProgressListener, ): Client { - val slidingSyncType = getSlidingSyncType() - if (slidingSyncType is ClientBuilderSlidingSync.Simplified) { - Timber.d("Creating client for QR Code login with simplified sliding sync") - try { - return rustMatrixClientFactory - .getBaseClientBuilder( - sessionPaths = sessionPaths, - passphrase = pendingPassphrase, - slidingSyncType = slidingSyncType, - ) - .passphrase(passphrase) - .buildWithQrCode(qrCodeData, oidcConfiguration, progressListener) - } catch (e: HumanQrLoginException.SlidingSyncNotAvailable) { - Timber.e(e, "Failed to create client with simplified sliding sync, trying with Proxy now") - } - } - Timber.d("Creating client for QR Code login with Proxy sliding sync") + Timber.d("Creating client for QR Code login with simplified sliding sync") return rustMatrixClientFactory .getBaseClientBuilder( sessionPaths = sessionPaths, passphrase = pendingPassphrase, - slidingSyncType = getSlidingSyncProxy(), + slidingSyncType = ClientBuilderSlidingSync.Discovered, ) .passphrase(passphrase) .buildWithQrCode(qrCodeData, oidcConfiguration, progressListener) } - private suspend fun getSlidingSyncType(nativeSlidingSyncFailed: Boolean = false) = when { - appPreferencesStore.isSimplifiedSlidingSyncEnabledFlow().first() && !nativeSlidingSyncFailed -> ClientBuilderSlidingSync.Simplified - else -> getSlidingSyncProxy() - } - - private fun getSlidingSyncProxy() = when { - AuthenticationConfig.SLIDING_SYNC_PROXY_URL != null -> ClientBuilderSlidingSync.CustomProxy(AuthenticationConfig.SLIDING_SYNC_PROXY_URL!!) - else -> ClientBuilderSlidingSync.Discovered - } - private fun clear() { currentClient?.close() currentClient = null diff --git a/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/mapper/Session.kt b/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/mapper/Session.kt index f90b334f058..1d45c474706 100644 --- a/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/mapper/Session.kt +++ b/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/mapper/Session.kt @@ -12,7 +12,6 @@ import io.element.android.libraries.matrix.impl.paths.SessionPaths import io.element.android.libraries.sessionstorage.api.LoginType import io.element.android.libraries.sessionstorage.api.SessionData import org.matrix.rustcomponents.sdk.Session -import org.matrix.rustcomponents.sdk.SlidingSyncVersion import java.util.Date internal fun Session.toSessionData( @@ -28,7 +27,7 @@ internal fun Session.toSessionData( refreshToken = refreshToken, homeserverUrl = homeserverUrl ?: this.homeserverUrl, oidcData = oidcData, - slidingSyncProxy = (slidingSyncVersion as? SlidingSyncVersion.Proxy)?.url, + slidingSyncProxy = null, loginTimestamp = Date(), isTokenValid = isTokenValid, loginType = loginType, diff --git a/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/sync/SlidingSyncVersion.kt b/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/sync/SlidingSyncVersion.kt index ce1f1d025c1..6284e0028f3 100644 --- a/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/sync/SlidingSyncVersion.kt +++ b/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/sync/SlidingSyncVersion.kt @@ -12,8 +12,7 @@ import org.matrix.rustcomponents.sdk.SlidingSyncVersion as RustSlidingSyncVersio internal fun RustSlidingSyncVersion.map(): SlidingSyncVersion { return when (this) { - RustSlidingSyncVersion.None -> SlidingSyncVersion.None - is RustSlidingSyncVersion.Proxy -> SlidingSyncVersion.Proxy - RustSlidingSyncVersion.Native -> SlidingSyncVersion.Native + RustSlidingSyncVersion.NONE -> SlidingSyncVersion.None + RustSlidingSyncVersion.NATIVE -> SlidingSyncVersion.Native } } diff --git a/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/verification/RustSessionVerificationService.kt b/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/verification/RustSessionVerificationService.kt index 4349a12474f..8cd9a472346 100644 --- a/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/verification/RustSessionVerificationService.kt +++ b/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/verification/RustSessionVerificationService.kt @@ -113,7 +113,7 @@ class RustSessionVerificationService( override suspend fun requestVerification() = tryOrFail { initVerificationControllerIfNeeded() - verificationController.requestVerification() + verificationController.requestDeviceVerification() } override suspend fun cancelVerification() = tryOrFail { diff --git a/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/verification/SessionVerificationRequestDetails.kt b/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/verification/SessionVerificationRequestDetails.kt index 028930371fc..b617889f40e 100644 --- a/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/verification/SessionVerificationRequestDetails.kt +++ b/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/verification/SessionVerificationRequestDetails.kt @@ -14,9 +14,9 @@ import io.element.android.libraries.matrix.api.verification.SessionVerificationR import org.matrix.rustcomponents.sdk.SessionVerificationRequestDetails as RustSessionVerificationRequestDetails fun RustSessionVerificationRequestDetails.map() = SessionVerificationRequestDetails( - senderId = UserId(senderId), + senderId = UserId(senderProfile.userId), flowId = FlowId(flowId), deviceId = DeviceId(deviceId), - displayName = displayName, + displayName = senderProfile.displayName, firstSeenTimestamp = firstSeenTimestamp.toLong(), ) diff --git a/libraries/matrix/impl/src/test/kotlin/io/element/android/libraries/matrix/impl/auth/RustMatrixAuthenticationServiceTest.kt b/libraries/matrix/impl/src/test/kotlin/io/element/android/libraries/matrix/impl/auth/RustMatrixAuthenticationServiceTest.kt index de6e25abd17..61df8e64550 100644 --- a/libraries/matrix/impl/src/test/kotlin/io/element/android/libraries/matrix/impl/auth/RustMatrixAuthenticationServiceTest.kt +++ b/libraries/matrix/impl/src/test/kotlin/io/element/android/libraries/matrix/impl/auth/RustMatrixAuthenticationServiceTest.kt @@ -11,7 +11,6 @@ import com.google.common.truth.Truth.assertThat import io.element.android.libraries.matrix.api.core.SessionId import io.element.android.libraries.matrix.impl.createRustMatrixClientFactory import io.element.android.libraries.matrix.impl.paths.SessionPathsFactory -import io.element.android.libraries.preferences.test.InMemoryAppPreferencesStore import io.element.android.libraries.sessionstorage.api.SessionStore import io.element.android.libraries.sessionstorage.impl.memory.InMemorySessionStore import io.element.android.libraries.sessionstorage.test.aSessionData @@ -50,7 +49,6 @@ class RustMatrixAuthenticationServiceTest { rustMatrixClientFactory = rustMatrixClientFactory, passphraseGenerator = FakePassphraseGenerator(), oidcConfigurationProvider = OidcConfigurationProvider(baseDirectory), - appPreferencesStore = InMemoryAppPreferencesStore(), ) } } diff --git a/libraries/matrix/impl/src/test/kotlin/io/element/android/libraries/matrix/impl/fixtures/factories/Session.kt b/libraries/matrix/impl/src/test/kotlin/io/element/android/libraries/matrix/impl/fixtures/factories/Session.kt index 010da868879..b1301d0777c 100644 --- a/libraries/matrix/impl/src/test/kotlin/io/element/android/libraries/matrix/impl/fixtures/factories/Session.kt +++ b/libraries/matrix/impl/src/test/kotlin/io/element/android/libraries/matrix/impl/fixtures/factories/Session.kt @@ -14,7 +14,7 @@ import org.matrix.rustcomponents.sdk.Session import org.matrix.rustcomponents.sdk.SlidingSyncVersion internal fun aRustSession( - proxy: SlidingSyncVersion = SlidingSyncVersion.None, + proxy: SlidingSyncVersion = SlidingSyncVersion.NONE, accessToken: String = "accessToken", refreshToken: String = "refreshToken", ): Session { diff --git a/libraries/matrix/impl/src/test/kotlin/io/element/android/libraries/matrix/impl/mapper/SessionKtTest.kt b/libraries/matrix/impl/src/test/kotlin/io/element/android/libraries/matrix/impl/mapper/SessionKtTest.kt index ce0fc49ae2f..46a4d35c376 100644 --- a/libraries/matrix/impl/src/test/kotlin/io/element/android/libraries/matrix/impl/mapper/SessionKtTest.kt +++ b/libraries/matrix/impl/src/test/kotlin/io/element/android/libraries/matrix/impl/mapper/SessionKtTest.kt @@ -72,7 +72,7 @@ class SessionKtTest { @Test fun `toSessionData copy the sliding sync url if present`() { val result = aRustSession( - proxy = SlidingSyncVersion.Proxy("proxyUrl") + proxy = SlidingSyncVersion.NATIVE ).toSessionData( isTokenValid = true, loginType = LoginType.PASSWORD, @@ -80,7 +80,7 @@ class SessionKtTest { sessionPaths = SessionPaths(File("/a/file"), File("/a/cache")), homeserverUrl = A_HOMESERVER_URL_2, ) - assertThat(result.slidingSyncProxy).isEqualTo("proxyUrl") + assertThat(result.slidingSyncProxy).isNull() } @Test diff --git a/libraries/preferences/api/src/main/kotlin/io/element/android/libraries/preferences/api/store/AppPreferencesStore.kt b/libraries/preferences/api/src/main/kotlin/io/element/android/libraries/preferences/api/store/AppPreferencesStore.kt index 865e2992d2e..537c8d60405 100644 --- a/libraries/preferences/api/src/main/kotlin/io/element/android/libraries/preferences/api/store/AppPreferencesStore.kt +++ b/libraries/preferences/api/src/main/kotlin/io/element/android/libraries/preferences/api/store/AppPreferencesStore.kt @@ -20,9 +20,6 @@ interface AppPreferencesStore { suspend fun setTheme(theme: String) fun getThemeFlow(): Flow - suspend fun setSimplifiedSlidingSyncEnabled(enabled: Boolean) - fun isSimplifiedSlidingSyncEnabledFlow(): Flow - suspend fun setHideImagesAndVideos(value: Boolean) fun doesHideImagesAndVideosFlow(): Flow diff --git a/libraries/preferences/api/src/main/kotlin/io/element/android/libraries/preferences/api/store/EnableNativeSlidingSyncUseCase.kt b/libraries/preferences/api/src/main/kotlin/io/element/android/libraries/preferences/api/store/EnableNativeSlidingSyncUseCase.kt deleted file mode 100644 index 851d6594287..00000000000 --- a/libraries/preferences/api/src/main/kotlin/io/element/android/libraries/preferences/api/store/EnableNativeSlidingSyncUseCase.kt +++ /dev/null @@ -1,23 +0,0 @@ -/* - * Copyright 2024 New Vector Ltd. - * - * SPDX-License-Identifier: AGPL-3.0-only OR LicenseRef-Element-Commercial - * Please see LICENSE files in the repository root for full details. - */ - -package io.element.android.libraries.preferences.api.store - -import kotlinx.coroutines.CoroutineScope -import kotlinx.coroutines.launch -import javax.inject.Inject - -class EnableNativeSlidingSyncUseCase @Inject constructor( - private val appPreferencesStore: AppPreferencesStore, - private val appCoroutineScope: CoroutineScope, -) { - operator fun invoke() { - appCoroutineScope.launch { - appPreferencesStore.setSimplifiedSlidingSyncEnabled(true) - } - } -} diff --git a/libraries/preferences/api/src/test/kotlin/io/element/android/libraries/preferences/api/store/EnableNativeSlidingSyncUseCaseTest.kt b/libraries/preferences/api/src/test/kotlin/io/element/android/libraries/preferences/api/store/EnableNativeSlidingSyncUseCaseTest.kt deleted file mode 100644 index e570e7d2263..00000000000 --- a/libraries/preferences/api/src/test/kotlin/io/element/android/libraries/preferences/api/store/EnableNativeSlidingSyncUseCaseTest.kt +++ /dev/null @@ -1,31 +0,0 @@ -/* - * Copyright 2024 New Vector Ltd. - * - * SPDX-License-Identifier: AGPL-3.0-only OR LicenseRef-Element-Commercial - * Please see LICENSE files in the repository root for full details. - */ - -package io.element.android.libraries.preferences.api.store - -import com.google.common.truth.Truth.assertThat -import io.element.android.libraries.preferences.test.InMemoryAppPreferencesStore -import kotlinx.coroutines.ExperimentalCoroutinesApi -import kotlinx.coroutines.flow.first -import kotlinx.coroutines.test.advanceUntilIdle -import kotlinx.coroutines.test.runTest -import org.junit.Test - -class EnableNativeSlidingSyncUseCaseTest { - @OptIn(ExperimentalCoroutinesApi::class) - @Test - fun `ensure that the use case sets the simplified sliding sync enabled flag`() = runTest { - val preferencesStore = InMemoryAppPreferencesStore() - val useCase = EnableNativeSlidingSyncUseCase(preferencesStore, this) - assertThat(preferencesStore.isSimplifiedSlidingSyncEnabledFlow().first()).isFalse() - - useCase() - advanceUntilIdle() - - assertThat(preferencesStore.isSimplifiedSlidingSyncEnabledFlow().first()).isTrue() - } -} diff --git a/libraries/preferences/impl/src/main/kotlin/io/element/android/libraries/preferences/impl/store/DefaultAppPreferencesStore.kt b/libraries/preferences/impl/src/main/kotlin/io/element/android/libraries/preferences/impl/store/DefaultAppPreferencesStore.kt index 1874b08b0e3..06f4b05912c 100644 --- a/libraries/preferences/impl/src/main/kotlin/io/element/android/libraries/preferences/impl/store/DefaultAppPreferencesStore.kt +++ b/libraries/preferences/impl/src/main/kotlin/io/element/android/libraries/preferences/impl/store/DefaultAppPreferencesStore.kt @@ -30,7 +30,6 @@ private val Context.dataStore: DataStore by preferencesDataStore(na private val developerModeKey = booleanPreferencesKey("developerMode") private val customElementCallBaseUrlKey = stringPreferencesKey("elementCallBaseUrl") private val themeKey = stringPreferencesKey("theme") -private val simplifiedSlidingSyncKey = booleanPreferencesKey("useSimplifiedSlidingSync") private val hideImagesAndVideosKey = booleanPreferencesKey("hideImagesAndVideos") private val logLevelKey = stringPreferencesKey("logLevel") @@ -82,18 +81,6 @@ class DefaultAppPreferencesStore @Inject constructor( } } - override suspend fun setSimplifiedSlidingSyncEnabled(enabled: Boolean) { - store.edit { prefs -> - prefs[simplifiedSlidingSyncKey] = enabled - } - } - - override fun isSimplifiedSlidingSyncEnabledFlow(): Flow { - return store.data.map { prefs -> - prefs[simplifiedSlidingSyncKey] ?: true - } - } - override suspend fun setHideImagesAndVideos(value: Boolean) { store.edit { prefs -> prefs[hideImagesAndVideosKey] = value diff --git a/libraries/preferences/test/src/main/kotlin/io/element/android/libraries/preferences/test/InMemoryAppPreferencesStore.kt b/libraries/preferences/test/src/main/kotlin/io/element/android/libraries/preferences/test/InMemoryAppPreferencesStore.kt index 3191b220736..1a332b42aaf 100644 --- a/libraries/preferences/test/src/main/kotlin/io/element/android/libraries/preferences/test/InMemoryAppPreferencesStore.kt +++ b/libraries/preferences/test/src/main/kotlin/io/element/android/libraries/preferences/test/InMemoryAppPreferencesStore.kt @@ -51,14 +51,6 @@ class InMemoryAppPreferencesStore( return theme } - override suspend fun setSimplifiedSlidingSyncEnabled(enabled: Boolean) { - simplifiedSlidingSyncEnabled.value = enabled - } - - override fun isSimplifiedSlidingSyncEnabledFlow(): Flow { - return simplifiedSlidingSyncEnabled - } - override suspend fun setHideImagesAndVideos(value: Boolean) { hideImagesAndVideos.value = value } diff --git a/libraries/ui-strings/src/main/res/values-be/translations.xml b/libraries/ui-strings/src/main/res/values-be/translations.xml index fbea21c5126..08b0fcf8580 100644 --- a/libraries/ui-strings/src/main/res/values-be/translations.xml +++ b/libraries/ui-strings/src/main/res/values-be/translations.xml @@ -122,6 +122,8 @@ "Прагляд у хроніцы" "Прагляд зыходнага кода" "Так" + "Ваш сервер зараз падтрымлівае новы, хутчэйшы пратакол. Выйдзіце з сістэмы і зноў увайдзіце, каб абнавіць яе. Гэта дапаможа вам пазбегнуць прымусовага выхаду з сістэмы, калі стары пратакол будзе пазней выдалены." + "Даступна абнаўленне" "Аб праграме" "Палітыка дапушчальнага выкарыстання" "Пашыраныя налады" diff --git a/libraries/ui-strings/src/main/res/values-cs/translations.xml b/libraries/ui-strings/src/main/res/values-cs/translations.xml index bd2647b3181..5a592a8a686 100644 --- a/libraries/ui-strings/src/main/res/values-cs/translations.xml +++ b/libraries/ui-strings/src/main/res/values-cs/translations.xml @@ -131,6 +131,8 @@ "Zobrazit zdroj" "Ano" "Ano, zkusit znovu" + "Váš server nyní podporuje nový, rychlejší protokol. Chcete-li upgradovat, odhlaste se a znovu se přihlaste. Pokud to uděláte nyní, pomůže vám vyhnout se nucenému odhlášení, když bude starý protokol později odstraněn." + "Upgrade k dispozici" "O aplikaci" "Zásady používání" "Přidání titulku" diff --git a/libraries/ui-strings/src/main/res/values-de/translations.xml b/libraries/ui-strings/src/main/res/values-de/translations.xml index 540b6ae5668..6a8ecc719b0 100644 --- a/libraries/ui-strings/src/main/res/values-de/translations.xml +++ b/libraries/ui-strings/src/main/res/values-de/translations.xml @@ -129,6 +129,8 @@ "Quellcode anzeigen" "Ja" "Ja, versuchen Sie es noch einmal" + "Dein Server unterstützt jetzt ein neues, schnelleres Protokoll. Melde dich ab und melde dich wieder an, um zu aktualisieren. Wenn du das jetzt tust, vermeidest du eine erzwungene Abmeldung, wenn das alte Protokoll später entfernt wird." + "Aktualisierung verfügbar" "Über" "Nutzungsrichtlinie" "Hinzufügen einer Bildunterschrift" diff --git a/libraries/ui-strings/src/main/res/values-el/translations.xml b/libraries/ui-strings/src/main/res/values-el/translations.xml index 61e583fc1c7..1b792ea7127 100644 --- a/libraries/ui-strings/src/main/res/values-el/translations.xml +++ b/libraries/ui-strings/src/main/res/values-el/translations.xml @@ -127,6 +127,8 @@ "Προβολή στο χρονοδιάγραμμα" "Προβολή πηγής" "Ναι" + "Ο διακομιστής σου υποστηρίζει τώρα ένα νέο, ταχύτερο πρωτόκολλο. Αποσυνδέσου και συνδέσου ξανά για αναβάθμιση τώρα. Κάνοντας αυτό τώρα θα σε βοηθήσει να αποφύγεις μια αναγκαστική αποσύνδεση όταν το παλιό πρωτόκολλο καταργηθεί αργότερα." + "Διαθέσιμη αναβάθμιση" "Σχετικά" "Πολιτική αποδεκτής χρήσης" "Η λεζάντα προστίθεται" diff --git a/libraries/ui-strings/src/main/res/values-et/translations.xml b/libraries/ui-strings/src/main/res/values-et/translations.xml index 46cb0e4d6dc..7ec90fda744 100644 --- a/libraries/ui-strings/src/main/res/values-et/translations.xml +++ b/libraries/ui-strings/src/main/res/values-et/translations.xml @@ -129,6 +129,8 @@ "Vaata lähtekoodi" "Jah" "Jah, proovi uuesti" + "Sinu koduserver toetab uut ja kiiremat protokolli. Uuendamiseks logi korraks rakendusest välja ja siis tagasi. Mingil hetkel tulevikus vana protokoll eemaldatakse kasutusest ja tehes uuenduse nüüd väldid hilisemat sundkorras uuendust." + "Saadaval on uuendus" "Rakenduse teave" "Vastuvõetava kasutamise põhimõtted" "Lisame selgitust" diff --git a/libraries/ui-strings/src/main/res/values-fa/translations.xml b/libraries/ui-strings/src/main/res/values-fa/translations.xml index b41246e3b77..d165cc09a2c 100644 --- a/libraries/ui-strings/src/main/res/values-fa/translations.xml +++ b/libraries/ui-strings/src/main/res/values-fa/translations.xml @@ -112,6 +112,7 @@ "دیدن در خط زمانی" "دیدن منبع" "بله" + "ارتقا موجود است" "درباره" "سیاست استفادهٔ پذیرفتنی" "تنظیمات پیش‌رفته" diff --git a/libraries/ui-strings/src/main/res/values-fi/translations.xml b/libraries/ui-strings/src/main/res/values-fi/translations.xml index e43d2a583f0..2528bab3538 100644 --- a/libraries/ui-strings/src/main/res/values-fi/translations.xml +++ b/libraries/ui-strings/src/main/res/values-fi/translations.xml @@ -129,6 +129,8 @@ "Näytä lähde" "Kyllä" "Kyllä, yritä uudelleen" + "Palvelimesi tukee nyt uutta, nopeampaa protokollaa. Kirjaudu ulos ja takaisin sisään päivittääksesi nyt. Jos teet tämän nyt, voit välttää pakotetun uloskirjautumisen, kun vanha protokolla poistetaan myöhemmin." + "Päivitys saatavilla" "Tietoa" "Hyväksyttävän käytön käytäntö" "Lisätään kuvatekstiä" diff --git a/libraries/ui-strings/src/main/res/values-fr/translations.xml b/libraries/ui-strings/src/main/res/values-fr/translations.xml index 5f25de7ce4e..656962e1a40 100644 --- a/libraries/ui-strings/src/main/res/values-fr/translations.xml +++ b/libraries/ui-strings/src/main/res/values-fr/translations.xml @@ -129,6 +129,8 @@ "Afficher la source" "Oui" "Oui, réessayez" + "Votre serveur prend désormais en charge un nouveau protocole plus rapide. Déconnectez-vous, puis reconnectez-vous pour effectuer la mise à niveau dès maintenant. En le faisant tout de suite, vous éviterez une déconnexion forcée lorsque l’ancien protocole sera supprimé." + "Mise à niveau disponible" "À propos" "Politique d’utilisation acceptable" "Ajout d’une légende" diff --git a/libraries/ui-strings/src/main/res/values-hu/translations.xml b/libraries/ui-strings/src/main/res/values-hu/translations.xml index 60259c0c42c..66d8f44fbbd 100644 --- a/libraries/ui-strings/src/main/res/values-hu/translations.xml +++ b/libraries/ui-strings/src/main/res/values-hu/translations.xml @@ -129,6 +129,8 @@ "Forrás megtekintése" "Igen" "Igen, újrapróbálkozás" + "A kiszolgálója mostantól egy új, gyorsabb protokollt támogat. A frissítéshez jelentkezzen ki, majd jelentkezzen be újra. Ha ezt most megteszi, elkerülheti a kényszerített kijelentkeztetést a régi protokollt eltávolításakor." + "Frissítés érhető el" "Névjegy" "Elfogadható használatra vonatkozó szabályzat" "Felirat hozzáadása" diff --git a/libraries/ui-strings/src/main/res/values-in/translations.xml b/libraries/ui-strings/src/main/res/values-in/translations.xml index 5ac935b1c56..f624fd48561 100644 --- a/libraries/ui-strings/src/main/res/values-in/translations.xml +++ b/libraries/ui-strings/src/main/res/values-in/translations.xml @@ -125,6 +125,8 @@ "Lihat di lini masa" "Tampilkan sumber" "Ya" + "Server Anda kini mendukung protokol baru yang lebih cepat. Keluar dan masuk lagi untuk memperbarui sekarang. Melakukan hal ini sekarang akan membantu Anda menghindari keluar paksa saat protokol lama dihapus nantinya." + "Peningkatan tersedia" "Tentang" "Kebijakan penggunaan wajar" "Menambahkan keterangan" diff --git a/libraries/ui-strings/src/main/res/values-it/translations.xml b/libraries/ui-strings/src/main/res/values-it/translations.xml index b6803448ca1..5b97172682b 100644 --- a/libraries/ui-strings/src/main/res/values-it/translations.xml +++ b/libraries/ui-strings/src/main/res/values-it/translations.xml @@ -129,6 +129,8 @@ "Vedi codice sorgente" "Sì" "Sì, riprova" + "Il tuo server ora supporta un nuovo protocollo più veloce. Esci e rientra per effettuare l\'aggiornamento. Se lo fai ora, eviterai una disconnessione forzata quando il vecchio protocollo verrà rimosso in seguito." + "Aggiornamento disponibile" "Informazioni" "Regole sull\'utilizzo consentito" "Aggiunta didascalia" diff --git a/libraries/ui-strings/src/main/res/values-nb/translations.xml b/libraries/ui-strings/src/main/res/values-nb/translations.xml index 287bc116f40..249bc398936 100644 --- a/libraries/ui-strings/src/main/res/values-nb/translations.xml +++ b/libraries/ui-strings/src/main/res/values-nb/translations.xml @@ -113,6 +113,7 @@ "Ta bilde" "Vis kilde" "Ja" + "Oppgradering tilgjengelig" "Om" "Retningslinjer for akseptabel bruk" "Legger til bildetekst" diff --git a/libraries/ui-strings/src/main/res/values-nl/translations.xml b/libraries/ui-strings/src/main/res/values-nl/translations.xml index 6059e4c54eb..6a967ab1f73 100644 --- a/libraries/ui-strings/src/main/res/values-nl/translations.xml +++ b/libraries/ui-strings/src/main/res/values-nl/translations.xml @@ -120,6 +120,8 @@ "Bekijk in tijdlijn" "Bron weergeven" "Ja" + "Je server ondersteunt nu een nieuw, sneller protocol. Log uit en log opnieuw in om nu te upgraden. Als je dit nu doet, voorkom je dat je geforceerd uitlogt wordt wanneer het oude protocol later wordt verwijderd." + "Upgrade beschikbaar" "Over" "Beleid inzake redelijk gebruik" "Geavanceerde instellingen" diff --git a/libraries/ui-strings/src/main/res/values-pl/translations.xml b/libraries/ui-strings/src/main/res/values-pl/translations.xml index 21056c4569b..a09c4635bd4 100644 --- a/libraries/ui-strings/src/main/res/values-pl/translations.xml +++ b/libraries/ui-strings/src/main/res/values-pl/translations.xml @@ -131,6 +131,8 @@ "Wyświetl źródło" "Tak" "Tak, spróbuj ponownie" + "Twój serwer obsługuje teraz nowy, szybszy protokół. Wyloguj się i zaloguj ponownie, aby uaktualnić teraz. Zrobienie tego teraz pomoże uniknąć wymuszonego wylogowania, gdy stary protokół zostanie później usunięty." + "Dostępna aktualizacja" "O programie" "Polityka użytkowania" "Dodawanie opisu" diff --git a/libraries/ui-strings/src/main/res/values-pt/translations.xml b/libraries/ui-strings/src/main/res/values-pt/translations.xml index d135c01517e..184a51c78ab 100644 --- a/libraries/ui-strings/src/main/res/values-pt/translations.xml +++ b/libraries/ui-strings/src/main/res/values-pt/translations.xml @@ -129,6 +129,8 @@ "Ver fonte" "Sim" "Sim, tentar novamente" + "O teu servidor suporta agora um protocolo novo e mais rápido. Termina a sessão e volta a iniciar sessão para atualizar agora. Se o fizeres agora, evitarás um fim de sessão forçado quando o protocolo antigo for removido mais tarde." + "Atualização disponível" "Sobre" "Política de utilização aceitável" "A adicionar legenda" diff --git a/libraries/ui-strings/src/main/res/values-ro/translations.xml b/libraries/ui-strings/src/main/res/values-ro/translations.xml index 8a77f7d567d..98d849ce1bd 100644 --- a/libraries/ui-strings/src/main/res/values-ro/translations.xml +++ b/libraries/ui-strings/src/main/res/values-ro/translations.xml @@ -123,6 +123,8 @@ "Vedeți în cameră" "Vedeți sursă" "Da" + "Serverul dvs. acceptă acum un protocol nou, mai rapid. Deconectați-vă și conectați-vă din nou pentru a face upgrade acum. Dacă faceți acest lucru acum, vă va ajuta să evitați o deconectare forțată atunci când vechiul protocol este eliminat ulterior." + "Upgrade disponibil" "Despre" "Politică de utilizare rezonabilă" "Setări avansate" diff --git a/libraries/ui-strings/src/main/res/values-ru/translations.xml b/libraries/ui-strings/src/main/res/values-ru/translations.xml index cfa3a490557..0282471b12c 100644 --- a/libraries/ui-strings/src/main/res/values-ru/translations.xml +++ b/libraries/ui-strings/src/main/res/values-ru/translations.xml @@ -131,6 +131,8 @@ "Показать источник" "Да" "Да, попробуйте еще раз" + "Теперь ваш сервер поддерживает новый, более быстрый протокол. Чтобы обновить его прямо сейчас, выйдите и войдите в свою учётную запись снова. Сделав это сейчас, вы сможете избежать принудительного выхода из системы при последующем удалении старого протокола." + "Доступно обновление" "О приложении" "Политика допустимого использования" "Добавление подписи" diff --git a/libraries/ui-strings/src/main/res/values-sk/translations.xml b/libraries/ui-strings/src/main/res/values-sk/translations.xml index ea0a11c2357..b625d26b94e 100644 --- a/libraries/ui-strings/src/main/res/values-sk/translations.xml +++ b/libraries/ui-strings/src/main/res/values-sk/translations.xml @@ -131,6 +131,8 @@ "Zobraziť zdroj" "Áno" "Áno, skúsiť to znova" + "Váš server teraz podporuje nový, rýchlejší protokol. Odhláste sa a prihláste sa znova, aby ste mohli aktualizovať. Ak to urobíte teraz, pomôže vám vyhnúť sa nútenému odhláseniu, keď sa starý protokol neskôr odstráni." + "Aktualizácia je k dispozícii" "O aplikácii" "Zásady prijateľného používania" "Pridáva sa titulok" diff --git a/libraries/ui-strings/src/main/res/values-sv/translations.xml b/libraries/ui-strings/src/main/res/values-sv/translations.xml index 1cd14eb5f67..9183ad7e879 100644 --- a/libraries/ui-strings/src/main/res/values-sv/translations.xml +++ b/libraries/ui-strings/src/main/res/values-sv/translations.xml @@ -127,6 +127,9 @@ "Visa i tidslinjen" "Visa källkod" "Ja" + "Ja, försök igen" + "Din server stöder nu ett nytt, snabbare protokoll. Logga ut och logga in igen för att uppgradera nu. Om du gör detta nu hjälper du dig att undvika en tvingad utloggning när det gamla protokollet tas bort senare." + "Uppgradering tillgänglig" "Om" "Policy för godtagbar användning" "Lägga till bildtext" diff --git a/libraries/ui-strings/src/main/res/values-tr/translations.xml b/libraries/ui-strings/src/main/res/values-tr/translations.xml index a82c09e5538..46f87e20199 100644 --- a/libraries/ui-strings/src/main/res/values-tr/translations.xml +++ b/libraries/ui-strings/src/main/res/values-tr/translations.xml @@ -129,6 +129,8 @@ "Kaynağı görüntüle" "Evet" "Evet, tekrar dene" + "Sunucunuz artık yeni, daha hızlı bir protokolü destekliyor. Şimdi oturumu kapatıp tekrar oturum açarak yükseltme yapın. Bunu şimdi yapmak, eski protokol daha sonra kaldırıldığında zorunlu oturum kapatmayı önlemenize yardımcı olacaktır." + "Yükseltme mevcut" "Hakkında" "Kabul edilebilir kullanım politikası" "Açıklama ekleme" diff --git a/libraries/ui-strings/src/main/res/values-uk/translations.xml b/libraries/ui-strings/src/main/res/values-uk/translations.xml index 4189f550681..bbeefd6eca9 100644 --- a/libraries/ui-strings/src/main/res/values-uk/translations.xml +++ b/libraries/ui-strings/src/main/res/values-uk/translations.xml @@ -131,6 +131,8 @@ "Переглянути джерело" "Так" "Так, повторити спробу" + "Ваш сервер тепер підтримує новий, швидший протокол. Вийдіть із системи та увійдіть знову, щоб оновити систему зараз. Якщо ви зробите це зараз, це допоможе вам уникнути примусового виходу з системи, коли старий протокол буде видалено пізніше." + "Доступне оновлення" "Відомості" "Політика прийнятного використання" "Додавання підпису" diff --git a/libraries/ui-strings/src/main/res/values-zh-rTW/translations.xml b/libraries/ui-strings/src/main/res/values-zh-rTW/translations.xml index b35980f4794..80d6f5e1342 100644 --- a/libraries/ui-strings/src/main/res/values-zh-rTW/translations.xml +++ b/libraries/ui-strings/src/main/res/values-zh-rTW/translations.xml @@ -126,6 +126,8 @@ "檢視原始碼" "是" "是的,再試一次" + "您的伺服器現在支援新的、更快的協定。立即登出並重新登入以進行升級。現在這樣做將協助您避免在稍後移除舊協定時被強制登出。" + "可升級" "關於" "可接受使用政策" "新增標題" diff --git a/libraries/ui-strings/src/main/res/values-zh/translations.xml b/libraries/ui-strings/src/main/res/values-zh/translations.xml index f7fb6ac66b8..4f0c0fb06af 100644 --- a/libraries/ui-strings/src/main/res/values-zh/translations.xml +++ b/libraries/ui-strings/src/main/res/values-zh/translations.xml @@ -127,6 +127,8 @@ "查看源码" "是" "是的,再试一次" + "您的服务器现在支持更快的新协议。现在登出并重新登录以进行升级。现在这样做可以帮助您避免在以后删除旧协议时被强制登出。" + "有可用升级" "关于" "可接受的使用政策" "添加标题" diff --git a/libraries/ui-strings/src/main/res/values/localazy.xml b/libraries/ui-strings/src/main/res/values/localazy.xml index 1637d8d7bac..f847088ec92 100644 --- a/libraries/ui-strings/src/main/res/values/localazy.xml +++ b/libraries/ui-strings/src/main/res/values/localazy.xml @@ -129,6 +129,8 @@ "View source" "Yes" "Yes, try again" + "Your server now supports a new, faster protocol. Log out and log back in to upgrade now. Doing this now will help you avoid a forced logout when the old protocol is removed later." + "Upgrade available" "About" "Acceptable use policy" "Adding caption" diff --git a/tests/uitests/src/test/snapshots/images/appnav.loggedin_LoggedInView_Day_3_en.png b/tests/uitests/src/test/snapshots/images/appnav.loggedin_LoggedInView_Day_3_en.png index 3c4c448d475..d6d6a5a13cb 100644 --- a/tests/uitests/src/test/snapshots/images/appnav.loggedin_LoggedInView_Day_3_en.png +++ b/tests/uitests/src/test/snapshots/images/appnav.loggedin_LoggedInView_Day_3_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:0078ea63dae1b2a879c2b367f096307a7f20c72b3e400284c9bb4fd948a8cbff -size 25116 +oid sha256:4a4b04cdfbed4c67792daea3b5d31cec0f763b2cdf4ecee962ce5652ef01af57 +size 24338 diff --git a/tests/uitests/src/test/snapshots/images/appnav.loggedin_LoggedInView_Night_3_en.png b/tests/uitests/src/test/snapshots/images/appnav.loggedin_LoggedInView_Night_3_en.png index a8bce592f9b..4c07cc2a0d9 100644 --- a/tests/uitests/src/test/snapshots/images/appnav.loggedin_LoggedInView_Night_3_en.png +++ b/tests/uitests/src/test/snapshots/images/appnav.loggedin_LoggedInView_Night_3_en.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:29b448b13c0bd0afb0e7d085f5fc6d137b63dbeae75e1286cd236a8d4bea67b9 -size 23178 +oid sha256:6927236633af4aff987dcb40d16ee7ca3187a7b1841aa82147a41210c65e71e4 +size 22444 diff --git a/tests/uitests/src/test/snapshots/images/features.roomlist.impl.components_NativeSlidingSyncMigrationBanner_Day_0_en.png b/tests/uitests/src/test/snapshots/images/features.roomlist.impl.components_NativeSlidingSyncMigrationBanner_Day_0_en.png deleted file mode 100644 index 575c6f033d9..00000000000 --- a/tests/uitests/src/test/snapshots/images/features.roomlist.impl.components_NativeSlidingSyncMigrationBanner_Day_0_en.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:bd29991ad9e550e5f1e997bffd89bd26d68a97a11213819e6f646c594deb0a32 -size 37054 diff --git a/tests/uitests/src/test/snapshots/images/features.roomlist.impl.components_NativeSlidingSyncMigrationBanner_Night_0_en.png b/tests/uitests/src/test/snapshots/images/features.roomlist.impl.components_NativeSlidingSyncMigrationBanner_Night_0_en.png deleted file mode 100644 index c34aca9a8cf..00000000000 --- a/tests/uitests/src/test/snapshots/images/features.roomlist.impl.components_NativeSlidingSyncMigrationBanner_Night_0_en.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:d0abbd15a76d2b3b6a4d66e2ed7df83f1cff94ca03c38b7b2e4ca1e4075229ce -size 35731 diff --git a/tests/uitests/src/test/snapshots/images/features.roomlist.impl.components_RoomListContentView_Day_5_en.png b/tests/uitests/src/test/snapshots/images/features.roomlist.impl.components_RoomListContentView_Day_5_en.png deleted file mode 100644 index 333bc47ff95..00000000000 --- a/tests/uitests/src/test/snapshots/images/features.roomlist.impl.components_RoomListContentView_Day_5_en.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:e1f630cfee64876a7143dff8720de4166248607d2c1247c857ed35290d08ab07 -size 73216 diff --git a/tests/uitests/src/test/snapshots/images/features.roomlist.impl.components_RoomListContentView_Night_5_en.png b/tests/uitests/src/test/snapshots/images/features.roomlist.impl.components_RoomListContentView_Night_5_en.png deleted file mode 100644 index d6d3773dd5f..00000000000 --- a/tests/uitests/src/test/snapshots/images/features.roomlist.impl.components_RoomListContentView_Night_5_en.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:a8dfdf6bf277bee38b0e63dc4da4c28c7cff394419486681c4ddf8cff20bfb34 -size 71739 diff --git a/tools/localazy/config.json b/tools/localazy/config.json index ac8a51169dc..a085b366196 100644 --- a/tools/localazy/config.json +++ b/tools/localazy/config.json @@ -4,7 +4,8 @@ "name" : ":appnav", "includeRegex" : [ "banner\\.migrate_to_native_sliding_sync\\.force_logout.title", - "banner\\.migrate_to_native_sliding_sync\\.action" + "banner\\.migrate_to_native_sliding_sync\\.action", + "banner\\.migrate_to_native_sliding_sync\\.app_force_logout\\.title" ] }, { @@ -168,7 +169,6 @@ "session_verification_banner_.*", "confirm_recovery_key_banner_.*", "banner\\.set_up_recovery\\..*", - "banner\\.migrate_to_native_sliding_sync\\..*", "full_screen_intent_banner_.*", "screen_migration_.*", "screen_invites_.*",