From d59fcfe08800ebd70b342cc8c7089b9dfbebaa52 Mon Sep 17 00:00:00 2001 From: Patrick Honkonen <1883101+SaintPatrck@users.noreply.github.com> Date: Tue, 8 Sep 2026 16:00:08 +0000 Subject: [PATCH] Add Basque language support (#5059) Co-authored-by: David Perez --- .../com/x8bit/bitwarden/MainActivity.kt | 2 +- .../com/x8bit/bitwarden/MainViewModel.kt | 2 +- .../datasource/disk/SettingsDiskSource.kt | 2 +- .../datasource/disk/SettingsDiskSourceImpl.kt | 2 +- .../platform/repository/SettingsRepository.kt | 2 +- .../repository/SettingsRepositoryImpl.kt | 2 +- .../settings/appearance/AppearanceScreen.kt | 2 +- .../appearance/AppearanceViewModel.kt | 2 +- .../ui/platform/util/LocaleExtensions.kt | 2 +- .../com/x8bit/bitwarden/MainViewModelTest.kt | 2 +- .../datasource/disk/SettingsDiskSourceTest.kt | 2 +- .../disk/util/FakeSettingsDiskSource.kt | 2 +- .../manager/log/SettingsLogManagerTest.kt | 2 +- .../repository/SettingsRepositoryTest.kt | 2 +- .../appearance/AppearanceScreenTest.kt | 2 +- .../appearance/AppearanceViewModelTest.kt | 2 +- .../ui/platform/util/LocaleExtensionsTest.kt | 2 +- .../datasource/disk/SettingsDiskSource.kt | 2 +- .../datasource/disk/SettingsDiskSourceImpl.kt | 2 +- .../platform/repository/SettingsRepository.kt | 2 +- .../repository/SettingsRepositoryImpl.kt | 2 +- .../feature/settings/SettingsScreen.kt | 2 +- .../feature/settings/SettingsViewModel.kt | 2 +- .../settings/appearance/model/AppLanguage.kt | 178 ------------------ .../feature/settings/SettingsScreenTest.kt | 2 +- .../feature/settings/SettingsViewModelTest.kt | 2 +- .../settings/appearance/model/AppLanguage.kt | 6 +- 27 files changed, 30 insertions(+), 204 deletions(-) delete mode 100644 authenticator/src/main/kotlin/com/bitwarden/authenticator/ui/platform/feature/settings/appearance/model/AppLanguage.kt rename {app/src/main/kotlin/com/x8bit => ui/src/main/kotlin/com}/bitwarden/ui/platform/feature/settings/appearance/model/AppLanguage.kt (96%) diff --git a/app/src/main/kotlin/com/x8bit/bitwarden/MainActivity.kt b/app/src/main/kotlin/com/x8bit/bitwarden/MainActivity.kt index c4ce626d1c..a56a7af55f 100644 --- a/app/src/main/kotlin/com/x8bit/bitwarden/MainActivity.kt +++ b/app/src/main/kotlin/com/x8bit/bitwarden/MainActivity.kt @@ -25,6 +25,7 @@ import androidx.navigation.NavHostController import androidx.navigation.compose.NavHost import com.bitwarden.annotation.OmitFromCoverage import com.bitwarden.ui.platform.base.util.EventsEffect +import com.bitwarden.ui.platform.feature.settings.appearance.model.AppLanguage import com.bitwarden.ui.platform.theme.BitwardenTheme import com.bitwarden.ui.platform.util.setHorizonOSAppLayout import com.bitwarden.ui.platform.util.setupEdgeToEdge @@ -41,7 +42,6 @@ import com.x8bit.bitwarden.ui.platform.feature.debugmenu.manager.DebugMenuLaunch import com.x8bit.bitwarden.ui.platform.feature.debugmenu.navigateToDebugMenuScreen import com.x8bit.bitwarden.ui.platform.feature.overlaynav.OverlayNavRoute import com.x8bit.bitwarden.ui.platform.feature.overlaynav.overlayNavDestination -import com.x8bit.bitwarden.ui.platform.feature.settings.appearance.model.AppLanguage import com.x8bit.bitwarden.ui.platform.model.AuthTabLaunchers import com.x8bit.bitwarden.ui.platform.util.appLanguage import dagger.hilt.android.AndroidEntryPoint diff --git a/app/src/main/kotlin/com/x8bit/bitwarden/MainViewModel.kt b/app/src/main/kotlin/com/x8bit/bitwarden/MainViewModel.kt index 46d9a53be7..ccfd84b89f 100644 --- a/app/src/main/kotlin/com/x8bit/bitwarden/MainViewModel.kt +++ b/app/src/main/kotlin/com/x8bit/bitwarden/MainViewModel.kt @@ -10,6 +10,7 @@ import com.bitwarden.core.data.manager.toast.ToastManager import com.bitwarden.cxf.model.ImportCredentialsRequestData import com.bitwarden.cxf.util.getProviderImportCredentialsRequest import com.bitwarden.ui.platform.base.BaseViewModel +import com.bitwarden.ui.platform.feature.settings.appearance.model.AppLanguage import com.bitwarden.ui.platform.feature.settings.appearance.model.AppTheme import com.bitwarden.ui.platform.manager.share.ShareManager import com.bitwarden.ui.platform.model.TotpData @@ -44,7 +45,6 @@ import com.x8bit.bitwarden.data.platform.util.isAddTotpLoginItemFromAuthenticato import com.x8bit.bitwarden.data.vault.manager.model.VaultStateEvent import com.x8bit.bitwarden.data.vault.repository.VaultRepository import com.x8bit.bitwarden.ui.platform.feature.rootnav.RootNavViewModel -import com.x8bit.bitwarden.ui.platform.feature.settings.appearance.model.AppLanguage import com.x8bit.bitwarden.ui.platform.model.FeatureFlagsState import com.x8bit.bitwarden.ui.platform.util.isAccountSecurityShortcut import com.x8bit.bitwarden.ui.platform.util.isMyVaultShortcut diff --git a/app/src/main/kotlin/com/x8bit/bitwarden/data/platform/datasource/disk/SettingsDiskSource.kt b/app/src/main/kotlin/com/x8bit/bitwarden/data/platform/datasource/disk/SettingsDiskSource.kt index d556faa3a1..30fb08e6e4 100644 --- a/app/src/main/kotlin/com/x8bit/bitwarden/data/platform/datasource/disk/SettingsDiskSource.kt +++ b/app/src/main/kotlin/com/x8bit/bitwarden/data/platform/datasource/disk/SettingsDiskSource.kt @@ -1,11 +1,11 @@ package com.x8bit.bitwarden.data.platform.datasource.disk import com.bitwarden.data.datasource.disk.FlightRecorderDiskSource +import com.bitwarden.ui.platform.feature.settings.appearance.model.AppLanguage import com.bitwarden.ui.platform.feature.settings.appearance.model.AppTheme import com.x8bit.bitwarden.data.platform.manager.model.AppResumeScreenData import com.x8bit.bitwarden.data.platform.repository.model.UriMatchType import com.x8bit.bitwarden.data.platform.repository.model.VaultTimeoutAction -import com.x8bit.bitwarden.ui.platform.feature.settings.appearance.model.AppLanguage import kotlinx.coroutines.flow.Flow import java.time.Instant diff --git a/app/src/main/kotlin/com/x8bit/bitwarden/data/platform/datasource/disk/SettingsDiskSourceImpl.kt b/app/src/main/kotlin/com/x8bit/bitwarden/data/platform/datasource/disk/SettingsDiskSourceImpl.kt index f6a2ba0c4a..f52e81da72 100644 --- a/app/src/main/kotlin/com/x8bit/bitwarden/data/platform/datasource/disk/SettingsDiskSourceImpl.kt +++ b/app/src/main/kotlin/com/x8bit/bitwarden/data/platform/datasource/disk/SettingsDiskSourceImpl.kt @@ -6,11 +6,11 @@ import com.bitwarden.core.data.repository.util.bufferedMutableSharedFlow import com.bitwarden.core.data.util.decodeFromStringOrNull import com.bitwarden.data.datasource.disk.BaseDiskSource import com.bitwarden.data.datasource.disk.FlightRecorderDiskSource +import com.bitwarden.ui.platform.feature.settings.appearance.model.AppLanguage import com.bitwarden.ui.platform.feature.settings.appearance.model.AppTheme import com.x8bit.bitwarden.data.platform.manager.model.AppResumeScreenData import com.x8bit.bitwarden.data.platform.repository.model.UriMatchType import com.x8bit.bitwarden.data.platform.repository.model.VaultTimeoutAction -import com.x8bit.bitwarden.ui.platform.feature.settings.appearance.model.AppLanguage import kotlinx.coroutines.flow.Flow import kotlinx.coroutines.flow.MutableSharedFlow import kotlinx.coroutines.flow.onSubscription diff --git a/app/src/main/kotlin/com/x8bit/bitwarden/data/platform/repository/SettingsRepository.kt b/app/src/main/kotlin/com/x8bit/bitwarden/data/platform/repository/SettingsRepository.kt index 9e6eb98132..2cb33492d7 100644 --- a/app/src/main/kotlin/com/x8bit/bitwarden/data/platform/repository/SettingsRepository.kt +++ b/app/src/main/kotlin/com/x8bit/bitwarden/data/platform/repository/SettingsRepository.kt @@ -1,6 +1,7 @@ package com.x8bit.bitwarden.data.platform.repository import com.bitwarden.data.manager.flightrecorder.FlightRecorderManager +import com.bitwarden.ui.platform.feature.settings.appearance.model.AppLanguage import com.bitwarden.ui.platform.feature.settings.appearance.model.AppTheme import com.x8bit.bitwarden.data.auth.repository.model.UserFingerprintResult import com.x8bit.bitwarden.data.platform.repository.model.BiometricsKeyResult @@ -8,7 +9,6 @@ import com.x8bit.bitwarden.data.platform.repository.model.ClearClipboardFrequenc import com.x8bit.bitwarden.data.platform.repository.model.UriMatchType import com.x8bit.bitwarden.data.platform.repository.model.VaultTimeout import com.x8bit.bitwarden.data.platform.repository.model.VaultTimeoutAction -import com.x8bit.bitwarden.ui.platform.feature.settings.appearance.model.AppLanguage import kotlinx.coroutines.flow.Flow import kotlinx.coroutines.flow.StateFlow import java.time.Instant diff --git a/app/src/main/kotlin/com/x8bit/bitwarden/data/platform/repository/SettingsRepositoryImpl.kt b/app/src/main/kotlin/com/x8bit/bitwarden/data/platform/repository/SettingsRepositoryImpl.kt index e820d809f7..2638dc6b96 100644 --- a/app/src/main/kotlin/com/x8bit/bitwarden/data/platform/repository/SettingsRepositoryImpl.kt +++ b/app/src/main/kotlin/com/x8bit/bitwarden/data/platform/repository/SettingsRepositoryImpl.kt @@ -7,6 +7,7 @@ import com.bitwarden.core.data.manager.dispatcher.DispatcherManager import com.bitwarden.data.manager.flightrecorder.FlightRecorderManager import com.bitwarden.policies.PolicyType import com.bitwarden.policies.PolicyView +import com.bitwarden.ui.platform.feature.settings.appearance.model.AppLanguage import com.bitwarden.ui.platform.feature.settings.appearance.model.AppTheme import com.x8bit.bitwarden.BuildConfig import com.x8bit.bitwarden.data.auth.datasource.disk.AuthDiskSource @@ -24,7 +25,6 @@ import com.x8bit.bitwarden.data.platform.repository.model.UriMatchType import com.x8bit.bitwarden.data.platform.repository.model.VaultTimeout import com.x8bit.bitwarden.data.platform.repository.model.VaultTimeoutAction import com.x8bit.bitwarden.data.vault.datasource.sdk.VaultSdkSource -import com.x8bit.bitwarden.ui.platform.feature.settings.appearance.model.AppLanguage import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.flow.Flow import kotlinx.coroutines.flow.MutableStateFlow diff --git a/app/src/main/kotlin/com/x8bit/bitwarden/ui/platform/feature/settings/appearance/AppearanceScreen.kt b/app/src/main/kotlin/com/x8bit/bitwarden/ui/platform/feature/settings/appearance/AppearanceScreen.kt index a32543a028..42bc77d161 100644 --- a/app/src/main/kotlin/com/x8bit/bitwarden/ui/platform/feature/settings/appearance/AppearanceScreen.kt +++ b/app/src/main/kotlin/com/x8bit/bitwarden/ui/platform/feature/settings/appearance/AppearanceScreen.kt @@ -34,12 +34,12 @@ import com.bitwarden.ui.platform.components.scaffold.BitwardenScaffold import com.bitwarden.ui.platform.components.toggle.BitwardenSwitch import com.bitwarden.ui.platform.components.util.rememberVectorPainter import com.bitwarden.ui.platform.composition.LocalIntentManager +import com.bitwarden.ui.platform.feature.settings.appearance.model.AppLanguage import com.bitwarden.ui.platform.feature.settings.appearance.model.AppTheme import com.bitwarden.ui.platform.manager.IntentManager import com.bitwarden.ui.platform.resource.BitwardenDrawable import com.bitwarden.ui.platform.resource.BitwardenString import com.bitwarden.ui.platform.util.displayLabel -import com.x8bit.bitwarden.ui.platform.feature.settings.appearance.model.AppLanguage import kotlinx.collections.immutable.toImmutableList /** diff --git a/app/src/main/kotlin/com/x8bit/bitwarden/ui/platform/feature/settings/appearance/AppearanceViewModel.kt b/app/src/main/kotlin/com/x8bit/bitwarden/ui/platform/feature/settings/appearance/AppearanceViewModel.kt index 950a7d10cb..702ab15a30 100644 --- a/app/src/main/kotlin/com/x8bit/bitwarden/ui/platform/feature/settings/appearance/AppearanceViewModel.kt +++ b/app/src/main/kotlin/com/x8bit/bitwarden/ui/platform/feature/settings/appearance/AppearanceViewModel.kt @@ -6,9 +6,9 @@ import androidx.lifecycle.SavedStateHandle import androidx.lifecycle.viewModelScope import com.bitwarden.core.util.isBuildVersionAtLeast import com.bitwarden.ui.platform.base.BaseViewModel +import com.bitwarden.ui.platform.feature.settings.appearance.model.AppLanguage import com.bitwarden.ui.platform.feature.settings.appearance.model.AppTheme import com.x8bit.bitwarden.data.platform.repository.SettingsRepository -import com.x8bit.bitwarden.ui.platform.feature.settings.appearance.model.AppLanguage import dagger.hilt.android.lifecycle.HiltViewModel import kotlinx.coroutines.flow.launchIn import kotlinx.coroutines.flow.map diff --git a/app/src/main/kotlin/com/x8bit/bitwarden/ui/platform/util/LocaleExtensions.kt b/app/src/main/kotlin/com/x8bit/bitwarden/ui/platform/util/LocaleExtensions.kt index a678c62808..f93b945c5c 100644 --- a/app/src/main/kotlin/com/x8bit/bitwarden/ui/platform/util/LocaleExtensions.kt +++ b/app/src/main/kotlin/com/x8bit/bitwarden/ui/platform/util/LocaleExtensions.kt @@ -1,6 +1,6 @@ package com.x8bit.bitwarden.ui.platform.util -import com.x8bit.bitwarden.ui.platform.feature.settings.appearance.model.AppLanguage +import com.bitwarden.ui.platform.feature.settings.appearance.model.AppLanguage import java.util.Locale /** diff --git a/app/src/test/kotlin/com/x8bit/bitwarden/MainViewModelTest.kt b/app/src/test/kotlin/com/x8bit/bitwarden/MainViewModelTest.kt index 9906399d28..9b867adf39 100644 --- a/app/src/test/kotlin/com/x8bit/bitwarden/MainViewModelTest.kt +++ b/app/src/test/kotlin/com/x8bit/bitwarden/MainViewModelTest.kt @@ -19,6 +19,7 @@ import com.bitwarden.cxf.model.ImportCredentialsRequestData import com.bitwarden.cxf.util.getProviderImportCredentialsRequest import com.bitwarden.data.repository.model.Environment import com.bitwarden.ui.platform.base.BaseViewModelTest +import com.bitwarden.ui.platform.feature.settings.appearance.model.AppLanguage import com.bitwarden.ui.platform.feature.settings.appearance.model.AppTheme import com.bitwarden.ui.platform.manager.share.ShareManager import com.bitwarden.ui.platform.manager.share.model.ShareData @@ -70,7 +71,6 @@ import com.x8bit.bitwarden.data.platform.repository.SettingsRepository import com.x8bit.bitwarden.data.platform.util.isAddTotpLoginItemFromAuthenticator import com.x8bit.bitwarden.data.vault.manager.model.VaultStateEvent import com.x8bit.bitwarden.data.vault.repository.VaultRepository -import com.x8bit.bitwarden.ui.platform.feature.settings.appearance.model.AppLanguage import com.x8bit.bitwarden.ui.platform.util.isAccountSecurityShortcut import com.x8bit.bitwarden.ui.platform.util.isMyVaultShortcut import com.x8bit.bitwarden.ui.platform.util.isPasswordGeneratorShortcut diff --git a/app/src/test/kotlin/com/x8bit/bitwarden/data/platform/datasource/disk/SettingsDiskSourceTest.kt b/app/src/test/kotlin/com/x8bit/bitwarden/data/platform/datasource/disk/SettingsDiskSourceTest.kt index e1de55257f..903f84f925 100644 --- a/app/src/test/kotlin/com/x8bit/bitwarden/data/platform/datasource/disk/SettingsDiskSourceTest.kt +++ b/app/src/test/kotlin/com/x8bit/bitwarden/data/platform/datasource/disk/SettingsDiskSourceTest.kt @@ -5,12 +5,12 @@ import app.cash.turbine.test import com.bitwarden.core.data.util.decodeFromStringOrNull import com.bitwarden.core.di.CoreModule import com.bitwarden.data.datasource.disk.base.FakeSharedPreferences +import com.bitwarden.ui.platform.feature.settings.appearance.model.AppLanguage import com.bitwarden.ui.platform.feature.settings.appearance.model.AppTheme import com.x8bit.bitwarden.data.platform.manager.model.AppResumeScreenData import com.x8bit.bitwarden.data.platform.repository.model.ClearClipboardFrequency import com.x8bit.bitwarden.data.platform.repository.model.UriMatchType import com.x8bit.bitwarden.data.platform.repository.model.VaultTimeoutAction -import com.x8bit.bitwarden.ui.platform.feature.settings.appearance.model.AppLanguage import io.mockk.mockk import kotlinx.coroutines.test.runTest import kotlinx.serialization.json.Json diff --git a/app/src/test/kotlin/com/x8bit/bitwarden/data/platform/datasource/disk/util/FakeSettingsDiskSource.kt b/app/src/test/kotlin/com/x8bit/bitwarden/data/platform/datasource/disk/util/FakeSettingsDiskSource.kt index 002755214d..6f816d333c 100644 --- a/app/src/test/kotlin/com/x8bit/bitwarden/data/platform/datasource/disk/util/FakeSettingsDiskSource.kt +++ b/app/src/test/kotlin/com/x8bit/bitwarden/data/platform/datasource/disk/util/FakeSettingsDiskSource.kt @@ -4,12 +4,12 @@ import com.bitwarden.core.data.repository.util.bufferedMutableSharedFlow import com.bitwarden.core.data.util.decodeFromStringOrNull import com.bitwarden.data.datasource.disk.FlightRecorderDiskSource import com.bitwarden.data.datasource.disk.util.FakeFlightRecorderDiskSource +import com.bitwarden.ui.platform.feature.settings.appearance.model.AppLanguage import com.bitwarden.ui.platform.feature.settings.appearance.model.AppTheme import com.x8bit.bitwarden.data.platform.datasource.disk.SettingsDiskSource import com.x8bit.bitwarden.data.platform.manager.model.AppResumeScreenData import com.x8bit.bitwarden.data.platform.repository.model.UriMatchType import com.x8bit.bitwarden.data.platform.repository.model.VaultTimeoutAction -import com.x8bit.bitwarden.ui.platform.feature.settings.appearance.model.AppLanguage import kotlinx.coroutines.flow.Flow import kotlinx.coroutines.flow.MutableSharedFlow import kotlinx.coroutines.flow.onSubscription diff --git a/app/src/test/kotlin/com/x8bit/bitwarden/data/platform/manager/log/SettingsLogManagerTest.kt b/app/src/test/kotlin/com/x8bit/bitwarden/data/platform/manager/log/SettingsLogManagerTest.kt index 5856487485..c578c8d3a7 100644 --- a/app/src/test/kotlin/com/x8bit/bitwarden/data/platform/manager/log/SettingsLogManagerTest.kt +++ b/app/src/test/kotlin/com/x8bit/bitwarden/data/platform/manager/log/SettingsLogManagerTest.kt @@ -1,6 +1,7 @@ package com.x8bit.bitwarden.data.platform.manager.log import com.bitwarden.data.datasource.disk.model.FlightRecorderDataSet +import com.bitwarden.ui.platform.feature.settings.appearance.model.AppLanguage import com.bitwarden.ui.platform.feature.settings.appearance.model.AppTheme import com.x8bit.bitwarden.data.autofill.accessibility.manager.AccessibilityEnabledManager import com.x8bit.bitwarden.data.autofill.manager.AutofillEnabledManager @@ -13,7 +14,6 @@ import com.x8bit.bitwarden.data.platform.repository.model.ClearClipboardFrequenc import com.x8bit.bitwarden.data.platform.repository.model.UriMatchType import com.x8bit.bitwarden.data.platform.repository.model.VaultTimeout import com.x8bit.bitwarden.data.platform.repository.model.VaultTimeoutAction -import com.x8bit.bitwarden.ui.platform.feature.settings.appearance.model.AppLanguage import io.mockk.every import io.mockk.mockk import kotlinx.coroutines.flow.MutableStateFlow diff --git a/app/src/test/kotlin/com/x8bit/bitwarden/data/platform/repository/SettingsRepositoryTest.kt b/app/src/test/kotlin/com/x8bit/bitwarden/data/platform/repository/SettingsRepositoryTest.kt index 83f9337661..1af8bfc3d0 100644 --- a/app/src/test/kotlin/com/x8bit/bitwarden/data/platform/repository/SettingsRepositoryTest.kt +++ b/app/src/test/kotlin/com/x8bit/bitwarden/data/platform/repository/SettingsRepositoryTest.kt @@ -16,6 +16,7 @@ import com.bitwarden.network.model.TrustedDeviceUserDecryptionOptionsJson import com.bitwarden.network.model.UserDecryptionOptionsJson import com.bitwarden.policies.PolicyType import com.bitwarden.policies.PolicyView +import com.bitwarden.ui.platform.feature.settings.appearance.model.AppLanguage import com.bitwarden.ui.platform.feature.settings.appearance.model.AppTheme import com.x8bit.bitwarden.data.auth.datasource.disk.model.AccountJson import com.x8bit.bitwarden.data.auth.datasource.disk.model.UserStateJson @@ -37,7 +38,6 @@ import com.x8bit.bitwarden.data.platform.repository.model.VaultTimeout import com.x8bit.bitwarden.data.platform.repository.model.VaultTimeoutAction import com.x8bit.bitwarden.data.vault.datasource.sdk.VaultSdkSource import com.x8bit.bitwarden.data.vault.datasource.sdk.model.createMockPolicyView -import com.x8bit.bitwarden.ui.platform.feature.settings.appearance.model.AppLanguage import io.mockk.coEvery import io.mockk.coVerify import io.mockk.every diff --git a/app/src/test/kotlin/com/x8bit/bitwarden/ui/platform/feature/settings/appearance/AppearanceScreenTest.kt b/app/src/test/kotlin/com/x8bit/bitwarden/ui/platform/feature/settings/appearance/AppearanceScreenTest.kt index e451154b85..8941dc12f6 100644 --- a/app/src/test/kotlin/com/x8bit/bitwarden/ui/platform/feature/settings/appearance/AppearanceScreenTest.kt +++ b/app/src/test/kotlin/com/x8bit/bitwarden/ui/platform/feature/settings/appearance/AppearanceScreenTest.kt @@ -13,11 +13,11 @@ import androidx.compose.ui.test.performScrollTo import androidx.core.net.toUri import com.bitwarden.core.data.repository.util.bufferedMutableSharedFlow import com.bitwarden.core.util.isBuildVersionAtLeast +import com.bitwarden.ui.platform.feature.settings.appearance.model.AppLanguage import com.bitwarden.ui.platform.feature.settings.appearance.model.AppTheme import com.bitwarden.ui.platform.manager.IntentManager import com.bitwarden.ui.util.assertNoDialogExists import com.x8bit.bitwarden.ui.platform.base.BitwardenComposeTest -import com.x8bit.bitwarden.ui.platform.feature.settings.appearance.model.AppLanguage import io.mockk.every import io.mockk.just import io.mockk.mockk diff --git a/app/src/test/kotlin/com/x8bit/bitwarden/ui/platform/feature/settings/appearance/AppearanceViewModelTest.kt b/app/src/test/kotlin/com/x8bit/bitwarden/ui/platform/feature/settings/appearance/AppearanceViewModelTest.kt index 4fdfae618c..126947cfd1 100644 --- a/app/src/test/kotlin/com/x8bit/bitwarden/ui/platform/feature/settings/appearance/AppearanceViewModelTest.kt +++ b/app/src/test/kotlin/com/x8bit/bitwarden/ui/platform/feature/settings/appearance/AppearanceViewModelTest.kt @@ -5,9 +5,9 @@ import androidx.lifecycle.SavedStateHandle import app.cash.turbine.test import com.bitwarden.core.util.isBuildVersionAtLeast import com.bitwarden.ui.platform.base.BaseViewModelTest +import com.bitwarden.ui.platform.feature.settings.appearance.model.AppLanguage import com.bitwarden.ui.platform.feature.settings.appearance.model.AppTheme import com.x8bit.bitwarden.data.platform.repository.SettingsRepository -import com.x8bit.bitwarden.ui.platform.feature.settings.appearance.model.AppLanguage import io.mockk.every import io.mockk.just import io.mockk.mockk diff --git a/app/src/test/kotlin/com/x8bit/bitwarden/ui/platform/util/LocaleExtensionsTest.kt b/app/src/test/kotlin/com/x8bit/bitwarden/ui/platform/util/LocaleExtensionsTest.kt index c9a4459195..20598de133 100644 --- a/app/src/test/kotlin/com/x8bit/bitwarden/ui/platform/util/LocaleExtensionsTest.kt +++ b/app/src/test/kotlin/com/x8bit/bitwarden/ui/platform/util/LocaleExtensionsTest.kt @@ -1,6 +1,6 @@ package com.x8bit.bitwarden.ui.platform.util -import com.x8bit.bitwarden.ui.platform.feature.settings.appearance.model.AppLanguage +import com.bitwarden.ui.platform.feature.settings.appearance.model.AppLanguage import org.junit.Test import org.junit.jupiter.api.Assertions.assertEquals import org.junit.jupiter.api.Assertions.assertNull diff --git a/authenticator/src/main/kotlin/com/bitwarden/authenticator/data/platform/datasource/disk/SettingsDiskSource.kt b/authenticator/src/main/kotlin/com/bitwarden/authenticator/data/platform/datasource/disk/SettingsDiskSource.kt index 0d7dff75d9..c5597a7bee 100644 --- a/authenticator/src/main/kotlin/com/bitwarden/authenticator/data/platform/datasource/disk/SettingsDiskSource.kt +++ b/authenticator/src/main/kotlin/com/bitwarden/authenticator/data/platform/datasource/disk/SettingsDiskSource.kt @@ -1,8 +1,8 @@ package com.bitwarden.authenticator.data.platform.datasource.disk -import com.bitwarden.authenticator.ui.platform.feature.settings.appearance.model.AppLanguage import com.bitwarden.authenticator.ui.platform.feature.settings.data.model.DefaultSaveOption import com.bitwarden.data.datasource.disk.FlightRecorderDiskSource +import com.bitwarden.ui.platform.feature.settings.appearance.model.AppLanguage import com.bitwarden.ui.platform.feature.settings.appearance.model.AppTheme import kotlinx.coroutines.flow.Flow diff --git a/authenticator/src/main/kotlin/com/bitwarden/authenticator/data/platform/datasource/disk/SettingsDiskSourceImpl.kt b/authenticator/src/main/kotlin/com/bitwarden/authenticator/data/platform/datasource/disk/SettingsDiskSourceImpl.kt index e24cf788c0..8808b69604 100644 --- a/authenticator/src/main/kotlin/com/bitwarden/authenticator/data/platform/datasource/disk/SettingsDiskSourceImpl.kt +++ b/authenticator/src/main/kotlin/com/bitwarden/authenticator/data/platform/datasource/disk/SettingsDiskSourceImpl.kt @@ -1,11 +1,11 @@ package com.bitwarden.authenticator.data.platform.datasource.disk import android.content.SharedPreferences -import com.bitwarden.authenticator.ui.platform.feature.settings.appearance.model.AppLanguage import com.bitwarden.authenticator.ui.platform.feature.settings.data.model.DefaultSaveOption import com.bitwarden.core.data.repository.util.bufferedMutableSharedFlow import com.bitwarden.data.datasource.disk.BaseDiskSource import com.bitwarden.data.datasource.disk.FlightRecorderDiskSource +import com.bitwarden.ui.platform.feature.settings.appearance.model.AppLanguage import com.bitwarden.ui.platform.feature.settings.appearance.model.AppTheme import kotlinx.coroutines.flow.Flow import kotlinx.coroutines.flow.onSubscription diff --git a/authenticator/src/main/kotlin/com/bitwarden/authenticator/data/platform/repository/SettingsRepository.kt b/authenticator/src/main/kotlin/com/bitwarden/authenticator/data/platform/repository/SettingsRepository.kt index a8d2b1f901..212ee3d034 100644 --- a/authenticator/src/main/kotlin/com/bitwarden/authenticator/data/platform/repository/SettingsRepository.kt +++ b/authenticator/src/main/kotlin/com/bitwarden/authenticator/data/platform/repository/SettingsRepository.kt @@ -1,9 +1,9 @@ package com.bitwarden.authenticator.data.platform.repository import com.bitwarden.authenticator.data.platform.manager.lock.model.AppTimeout -import com.bitwarden.authenticator.ui.platform.feature.settings.appearance.model.AppLanguage import com.bitwarden.authenticator.ui.platform.feature.settings.data.model.DefaultSaveOption import com.bitwarden.data.manager.flightrecorder.FlightRecorderManager +import com.bitwarden.ui.platform.feature.settings.appearance.model.AppLanguage import com.bitwarden.ui.platform.feature.settings.appearance.model.AppTheme import kotlinx.coroutines.flow.Flow import kotlinx.coroutines.flow.StateFlow diff --git a/authenticator/src/main/kotlin/com/bitwarden/authenticator/data/platform/repository/SettingsRepositoryImpl.kt b/authenticator/src/main/kotlin/com/bitwarden/authenticator/data/platform/repository/SettingsRepositoryImpl.kt index eaeed6187a..0d596ea290 100644 --- a/authenticator/src/main/kotlin/com/bitwarden/authenticator/data/platform/repository/SettingsRepositoryImpl.kt +++ b/authenticator/src/main/kotlin/com/bitwarden/authenticator/data/platform/repository/SettingsRepositoryImpl.kt @@ -3,10 +3,10 @@ package com.bitwarden.authenticator.data.platform.repository import com.bitwarden.authenticator.BuildConfig import com.bitwarden.authenticator.data.platform.datasource.disk.SettingsDiskSource import com.bitwarden.authenticator.data.platform.manager.lock.model.AppTimeout -import com.bitwarden.authenticator.ui.platform.feature.settings.appearance.model.AppLanguage import com.bitwarden.authenticator.ui.platform.feature.settings.data.model.DefaultSaveOption import com.bitwarden.core.data.manager.dispatcher.DispatcherManager import com.bitwarden.data.manager.flightrecorder.FlightRecorderManager +import com.bitwarden.ui.platform.feature.settings.appearance.model.AppLanguage import com.bitwarden.ui.platform.feature.settings.appearance.model.AppTheme import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.flow.Flow diff --git a/authenticator/src/main/kotlin/com/bitwarden/authenticator/ui/platform/feature/settings/SettingsScreen.kt b/authenticator/src/main/kotlin/com/bitwarden/authenticator/ui/platform/feature/settings/SettingsScreen.kt index 13224f8e19..e09b3f4d89 100644 --- a/authenticator/src/main/kotlin/com/bitwarden/authenticator/ui/platform/feature/settings/SettingsScreen.kt +++ b/authenticator/src/main/kotlin/com/bitwarden/authenticator/ui/platform/feature/settings/SettingsScreen.kt @@ -48,7 +48,6 @@ import androidx.lifecycle.compose.collectAsStateWithLifecycle import com.bitwarden.authenticator.data.platform.manager.lock.model.AppTimeout import com.bitwarden.authenticator.ui.platform.components.biometrics.BiometricChanges import com.bitwarden.authenticator.ui.platform.composition.LocalBiometricsManager -import com.bitwarden.authenticator.ui.platform.feature.settings.appearance.model.AppLanguage import com.bitwarden.authenticator.ui.platform.feature.settings.data.model.DefaultSaveOption import com.bitwarden.authenticator.ui.platform.feature.settings.security.util.displayLabel import com.bitwarden.authenticator.ui.platform.manager.biometrics.BiometricsManager @@ -73,6 +72,7 @@ import com.bitwarden.ui.platform.components.support.BitwardenSupportingText import com.bitwarden.ui.platform.components.toggle.BitwardenSwitch import com.bitwarden.ui.platform.components.util.rememberVectorPainter import com.bitwarden.ui.platform.composition.LocalIntentManager +import com.bitwarden.ui.platform.feature.settings.appearance.model.AppLanguage import com.bitwarden.ui.platform.feature.settings.appearance.model.AppTheme import com.bitwarden.ui.platform.manager.IntentManager import com.bitwarden.ui.platform.resource.BitwardenDrawable diff --git a/authenticator/src/main/kotlin/com/bitwarden/authenticator/ui/platform/feature/settings/SettingsViewModel.kt b/authenticator/src/main/kotlin/com/bitwarden/authenticator/ui/platform/feature/settings/SettingsViewModel.kt index d3daba2940..e2ff3285dd 100644 --- a/authenticator/src/main/kotlin/com/bitwarden/authenticator/ui/platform/feature/settings/SettingsViewModel.kt +++ b/authenticator/src/main/kotlin/com/bitwarden/authenticator/ui/platform/feature/settings/SettingsViewModel.kt @@ -15,7 +15,6 @@ import com.bitwarden.authenticator.data.platform.manager.clipboard.BitwardenClip import com.bitwarden.authenticator.data.platform.manager.lock.model.AppTimeout import com.bitwarden.authenticator.data.platform.repository.SettingsRepository import com.bitwarden.authenticator.data.platform.repository.model.BiometricsKeyResult -import com.bitwarden.authenticator.ui.platform.feature.settings.appearance.model.AppLanguage import com.bitwarden.authenticator.ui.platform.feature.settings.data.model.DefaultSaveOption import com.bitwarden.authenticator.ui.platform.model.SnackbarRelay import com.bitwarden.authenticatorbridge.manager.AuthenticatorBridgeManager @@ -24,6 +23,7 @@ import com.bitwarden.core.util.isBuildVersionAtLeast import com.bitwarden.ui.platform.base.BackgroundEvent import com.bitwarden.ui.platform.base.BaseViewModel import com.bitwarden.ui.platform.components.snackbar.model.BitwardenSnackbarData +import com.bitwarden.ui.platform.feature.settings.appearance.model.AppLanguage import com.bitwarden.ui.platform.feature.settings.appearance.model.AppTheme import com.bitwarden.ui.platform.manager.snackbar.SnackbarRelayManager import com.bitwarden.ui.platform.resource.BitwardenString diff --git a/authenticator/src/main/kotlin/com/bitwarden/authenticator/ui/platform/feature/settings/appearance/model/AppLanguage.kt b/authenticator/src/main/kotlin/com/bitwarden/authenticator/ui/platform/feature/settings/appearance/model/AppLanguage.kt deleted file mode 100644 index fa33d36475..0000000000 --- a/authenticator/src/main/kotlin/com/bitwarden/authenticator/ui/platform/feature/settings/appearance/model/AppLanguage.kt +++ /dev/null @@ -1,178 +0,0 @@ -package com.bitwarden.authenticator.ui.platform.feature.settings.appearance.model - -import com.bitwarden.ui.platform.resource.BitwardenString -import com.bitwarden.ui.util.Text -import com.bitwarden.ui.util.asText - -/** - * Represents the languages supported by the app. - */ -enum class AppLanguage( - val localeName: String?, - val text: Text, -) { - DEFAULT( - localeName = null, - text = BitwardenString.default_system.asText(), - ), - AFRIKAANS( - localeName = "af", - text = "Afrikaans".asText(), - ), - BELARUSIAN( - localeName = "be", - text = "Беларуская".asText(), - ), - BULGARIAN( - localeName = "bg", - text = "български".asText(), - ), - CATALAN( - localeName = "ca", - text = "català".asText(), - ), - CZECH( - localeName = "cs", - text = "čeština".asText(), - ), - DANISH( - localeName = "da", - text = "Dansk".asText(), - ), - GERMAN( - localeName = "de", - text = "Deutsch".asText(), - ), - GREEK( - localeName = "el", - text = "Ελληνικά".asText(), - ), - ENGLISH( - localeName = "en", - text = "English".asText(), - ), - ENGLISH_BRITISH( - localeName = "en-GB", - text = "English (United Kingdom)".asText(), - ), - SPANISH( - localeName = "es", - text = "Español".asText(), - ), - ESTONIAN( - localeName = "et", - text = "eesti".asText(), - ), - PERSIAN( - localeName = "fa", - text = "فارسی".asText(), - ), - FINNISH( - localeName = "fi", - text = "suomi".asText(), - ), - FRENCH( - localeName = "fr", - text = "Français".asText(), - ), - HINDI( - localeName = "hi", - text = "हिन्दी".asText(), - ), - CROATIAN( - localeName = "hr", - text = "hrvatski".asText(), - ), - HUNGARIAN( - localeName = "hu", - text = "magyar".asText(), - ), - INDONESIAN( - localeName = "in", - text = "Bahasa Indonesia".asText(), - ), - ITALIAN( - localeName = "it", - text = "Italiano".asText(), - ), - HEBREW( - localeName = "iw", - text = "עברית".asText(), - ), - JAPANESE( - localeName = "ja", - text = "日本語".asText(), - ), - KOREAN( - localeName = "ko", - text = "한국어".asText(), - ), - LATVIAN( - localeName = "lv", - text = "Latvietis".asText(), - ), - MALAYALAM( - localeName = "ml", - text = "മലയാളം".asText(), - ), - NORWEGIAN( - localeName = "nb", - text = "norsk (bokmål)".asText(), - ), - DUTCH( - localeName = "nl", - text = "Nederlands".asText(), - ), - POLISH( - localeName = "pl", - text = "Polski".asText(), - ), - PORTUGUESE_BRAZILIAN( - localeName = "pt-BR", - text = "Português do Brasil".asText(), - ), - PORTUGUESE( - localeName = "pt-PT", - text = "Português".asText(), - ), - ROMANIAN( - localeName = "ro", - text = "română".asText(), - ), - RUSSIAN( - localeName = "ru", - text = "русский".asText(), - ), - SLOVAK( - localeName = "sk", - text = "slovenčina".asText(), - ), - SWEDISH( - localeName = "sv", - text = "svenska".asText(), - ), - THAI( - localeName = "th", - text = "ไทย".asText(), - ), - TURKISH( - localeName = "tr", - text = "Türkçe".asText(), - ), - UKRAINIAN( - localeName = "uk", - text = "українська".asText(), - ), - VIETNAMESE( - localeName = "vi", - text = "Tiếng Việt".asText(), - ), - CHINESE_SIMPLIFIED( - localeName = "zh-CN", - text = "中文(中国大陆)".asText(), - ), - CHINESE_TRADITIONAL( - localeName = "zh-TW", - text = "中文(台灣)".asText(), - ), -} diff --git a/authenticator/src/test/kotlin/com/bitwarden/authenticator/ui/platform/feature/settings/SettingsScreenTest.kt b/authenticator/src/test/kotlin/com/bitwarden/authenticator/ui/platform/feature/settings/SettingsScreenTest.kt index 6554045a4d..9ddb1d1d5a 100644 --- a/authenticator/src/test/kotlin/com/bitwarden/authenticator/ui/platform/feature/settings/SettingsScreenTest.kt +++ b/authenticator/src/test/kotlin/com/bitwarden/authenticator/ui/platform/feature/settings/SettingsScreenTest.kt @@ -16,10 +16,10 @@ import androidx.core.net.toUri import com.bitwarden.authenticator.BuildConfig import com.bitwarden.authenticator.data.platform.manager.lock.model.AppTimeout import com.bitwarden.authenticator.ui.platform.base.AuthenticatorComposeTest -import com.bitwarden.authenticator.ui.platform.feature.settings.appearance.model.AppLanguage import com.bitwarden.authenticator.ui.platform.feature.settings.data.model.DefaultSaveOption import com.bitwarden.authenticator.ui.platform.manager.biometrics.BiometricsManager import com.bitwarden.core.data.repository.util.bufferedMutableSharedFlow +import com.bitwarden.ui.platform.feature.settings.appearance.model.AppLanguage import com.bitwarden.ui.platform.feature.settings.appearance.model.AppTheme import com.bitwarden.ui.platform.manager.IntentManager import com.bitwarden.ui.platform.resource.BitwardenString diff --git a/authenticator/src/test/kotlin/com/bitwarden/authenticator/ui/platform/feature/settings/SettingsViewModelTest.kt b/authenticator/src/test/kotlin/com/bitwarden/authenticator/ui/platform/feature/settings/SettingsViewModelTest.kt index a156bca575..81eb4a7a85 100644 --- a/authenticator/src/test/kotlin/com/bitwarden/authenticator/ui/platform/feature/settings/SettingsViewModelTest.kt +++ b/authenticator/src/test/kotlin/com/bitwarden/authenticator/ui/platform/feature/settings/SettingsViewModelTest.kt @@ -11,7 +11,6 @@ import com.bitwarden.authenticator.data.authenticator.repository.util.isSyncWith import com.bitwarden.authenticator.data.platform.manager.clipboard.BitwardenClipboardManager import com.bitwarden.authenticator.data.platform.manager.lock.model.AppTimeout import com.bitwarden.authenticator.data.platform.repository.SettingsRepository -import com.bitwarden.authenticator.ui.platform.feature.settings.appearance.model.AppLanguage import com.bitwarden.authenticator.ui.platform.feature.settings.data.model.DefaultSaveOption import com.bitwarden.authenticator.ui.platform.model.SnackbarRelay import com.bitwarden.authenticatorbridge.manager.AuthenticatorBridgeManager @@ -20,6 +19,7 @@ import com.bitwarden.core.data.repository.util.bufferedMutableSharedFlow import com.bitwarden.core.util.isBuildVersionAtLeast import com.bitwarden.ui.platform.base.BaseViewModelTest import com.bitwarden.ui.platform.components.snackbar.model.BitwardenSnackbarData +import com.bitwarden.ui.platform.feature.settings.appearance.model.AppLanguage import com.bitwarden.ui.platform.feature.settings.appearance.model.AppTheme import com.bitwarden.ui.platform.manager.snackbar.SnackbarRelayManager import com.bitwarden.ui.platform.resource.BitwardenString diff --git a/app/src/main/kotlin/com/x8bit/bitwarden/ui/platform/feature/settings/appearance/model/AppLanguage.kt b/ui/src/main/kotlin/com/bitwarden/ui/platform/feature/settings/appearance/model/AppLanguage.kt similarity index 96% rename from app/src/main/kotlin/com/x8bit/bitwarden/ui/platform/feature/settings/appearance/model/AppLanguage.kt rename to ui/src/main/kotlin/com/bitwarden/ui/platform/feature/settings/appearance/model/AppLanguage.kt index 3aa49e6b1f..0cb49fc825 100644 --- a/app/src/main/kotlin/com/x8bit/bitwarden/ui/platform/feature/settings/appearance/model/AppLanguage.kt +++ b/ui/src/main/kotlin/com/bitwarden/ui/platform/feature/settings/appearance/model/AppLanguage.kt @@ -1,4 +1,4 @@ -package com.x8bit.bitwarden.ui.platform.feature.settings.appearance.model +package com.bitwarden.ui.platform.feature.settings.appearance.model import com.bitwarden.ui.platform.resource.BitwardenString import com.bitwarden.ui.util.Text @@ -63,6 +63,10 @@ enum class AppLanguage( localeName = "et", text = "eesti".asText(), ), + BASQUE( + localeName = "eu", + text = "Euskara".asText(), + ), PERSIAN( localeName = "fa", text = "فارسی".asText(),