diff options
| author | Kalle Lindström <karl.lindstrom@mullvad.net> | 2025-10-28 16:04:24 +0100 |
|---|---|---|
| committer | Kalle Lindström <karl.lindstrom@mullvad.net> | 2025-10-28 16:04:24 +0100 |
| commit | fb074cdf7fbf9e5e2d900811f51089cdd27ff439 (patch) | |
| tree | 587f7269e4e1876e41dba862458ae09e416a0db4 /android/lib | |
| parent | 721496daaab896dd29980fd4b7a234fc7dfd5607 (diff) | |
| parent | 46c51c9bb52b1ece67d08697c63d9a75ed852317 (diff) | |
| download | mullvadvpn-fb074cdf7fbf9e5e2d900811f51089cdd27ff439.tar.xz mullvadvpn-fb074cdf7fbf9e5e2d900811f51089cdd27ff439.zip | |
Merge branch 'implement-server-in-connected-notification-droid-1235'
Diffstat (limited to 'android/lib')
35 files changed, 125 insertions, 13 deletions
diff --git a/android/lib/model/src/main/kotlin/net/mullvad/mullvadvpn/lib/model/NotificationTunnelState.kt b/android/lib/model/src/main/kotlin/net/mullvad/mullvadvpn/lib/model/NotificationTunnelState.kt index 4c24c87068..252c3f2452 100644 --- a/android/lib/model/src/main/kotlin/net/mullvad/mullvadvpn/lib/model/NotificationTunnelState.kt +++ b/android/lib/model/src/main/kotlin/net/mullvad/mullvadvpn/lib/model/NotificationTunnelState.kt @@ -3,9 +3,9 @@ package net.mullvad.mullvadvpn.lib.model sealed interface NotificationTunnelState { data class Disconnected(val prepareError: PrepareError?) : NotificationTunnelState - data object Connecting : NotificationTunnelState + data class Connecting(val location: GeoIpLocation?) : NotificationTunnelState - data object Connected : NotificationTunnelState + data class Connected(val location: GeoIpLocation?) : NotificationTunnelState data object Blocking : NotificationTunnelState diff --git a/android/lib/shared/build.gradle.kts b/android/lib/repository/build.gradle.kts index 04ed8c8901..023c7ee22f 100644 --- a/android/lib/shared/build.gradle.kts +++ b/android/lib/repository/build.gradle.kts @@ -5,10 +5,11 @@ plugins { alias(libs.plugins.kotlin.android) alias(libs.plugins.kotlin.parcelize) alias(libs.plugins.junit5.android) + alias(libs.plugins.protobuf.core) } android { - namespace = "net.mullvad.mullvadvpn.lib.shared" + namespace = "net.mullvad.mullvadvpn.lib.repository" compileSdk = libs.versions.compile.sdk.get().toInt() buildToolsVersion = libs.versions.build.tools.get() @@ -34,6 +35,19 @@ android { buildFeatures { buildConfig = true } } +protobuf { + protoc { artifact = libs.plugins.protobuf.protoc.get().toString() } + plugins { + create("java") { artifact = libs.plugins.grpc.protoc.gen.grpc.java.get().toString() } + } + generateProtoTasks { + all().forEach { + it.plugins { create("java") { option("lite") } } + it.builtins { create("kotlin") { option("lite") } } + } + } +} + dependencies { implementation(projects.lib.resource) implementation(projects.lib.common) @@ -44,6 +58,8 @@ dependencies { implementation(libs.kermit) implementation(libs.kotlin.stdlib) implementation(libs.kotlinx.coroutines.android) + implementation(libs.androidx.datastore) + implementation(libs.protobuf.kotlin.lite) testImplementation(libs.kotlin.test) testImplementation(libs.kotlinx.coroutines.test) diff --git a/android/lib/shared/src/main/AndroidManifest.xml b/android/lib/repository/src/main/AndroidManifest.xml index cc947c5679..cc947c5679 100644 --- a/android/lib/shared/src/main/AndroidManifest.xml +++ b/android/lib/repository/src/main/AndroidManifest.xml diff --git a/android/lib/shared/src/main/kotlin/net/mullvad/mullvadvpn/lib/shared/AccountRepository.kt b/android/lib/repository/src/main/kotlin/net/mullvad/mullvadvpn/lib/repository/AccountRepository.kt index bfb1918875..d144098093 100644 --- a/android/lib/shared/src/main/kotlin/net/mullvad/mullvadvpn/lib/shared/AccountRepository.kt +++ b/android/lib/repository/src/main/kotlin/net/mullvad/mullvadvpn/lib/repository/AccountRepository.kt @@ -1,4 +1,4 @@ -package net.mullvad.mullvadvpn.lib.shared +package net.mullvad.mullvadvpn.lib.repository import arrow.core.Either import java.time.ZonedDateTime diff --git a/android/lib/shared/src/main/kotlin/net/mullvad/mullvadvpn/lib/shared/ConnectionProxy.kt b/android/lib/repository/src/main/kotlin/net/mullvad/mullvadvpn/lib/repository/ConnectionProxy.kt index baf404d89c..2a023d3177 100644 --- a/android/lib/shared/src/main/kotlin/net/mullvad/mullvadvpn/lib/shared/ConnectionProxy.kt +++ b/android/lib/repository/src/main/kotlin/net/mullvad/mullvadvpn/lib/repository/ConnectionProxy.kt @@ -1,4 +1,4 @@ -package net.mullvad.mullvadvpn.lib.shared +package net.mullvad.mullvadvpn.lib.repository import arrow.core.Either import arrow.core.raise.either diff --git a/android/lib/shared/src/main/kotlin/net/mullvad/mullvadvpn/lib/shared/DeviceRepository.kt b/android/lib/repository/src/main/kotlin/net/mullvad/mullvadvpn/lib/repository/DeviceRepository.kt index 258f918788..876f76c252 100644 --- a/android/lib/shared/src/main/kotlin/net/mullvad/mullvadvpn/lib/shared/DeviceRepository.kt +++ b/android/lib/repository/src/main/kotlin/net/mullvad/mullvadvpn/lib/repository/DeviceRepository.kt @@ -1,4 +1,4 @@ -package net.mullvad.mullvadvpn.lib.shared +package net.mullvad.mullvadvpn.lib.repository import arrow.core.Either import co.touchlab.kermit.Logger diff --git a/android/lib/shared/src/main/kotlin/net/mullvad/mullvadvpn/lib/shared/LocaleRepository.kt b/android/lib/repository/src/main/kotlin/net/mullvad/mullvadvpn/lib/repository/LocaleRepository.kt index 4e5628d214..ced41294bb 100644 --- a/android/lib/shared/src/main/kotlin/net/mullvad/mullvadvpn/lib/shared/LocaleRepository.kt +++ b/android/lib/repository/src/main/kotlin/net/mullvad/mullvadvpn/lib/repository/LocaleRepository.kt @@ -1,4 +1,4 @@ -package net.mullvad.mullvadvpn.lib.shared +package net.mullvad.mullvadvpn.lib.repository import android.content.res.Resources import co.touchlab.kermit.Logger diff --git a/android/lib/shared/src/main/kotlin/net/mullvad/mullvadvpn/lib/shared/PrepareVpnUseCase.kt b/android/lib/repository/src/main/kotlin/net/mullvad/mullvadvpn/lib/repository/PrepareVpnUseCase.kt index 7f7ec88120..11d360f83c 100644 --- a/android/lib/shared/src/main/kotlin/net/mullvad/mullvadvpn/lib/shared/PrepareVpnUseCase.kt +++ b/android/lib/repository/src/main/kotlin/net/mullvad/mullvadvpn/lib/repository/PrepareVpnUseCase.kt @@ -1,4 +1,4 @@ -package net.mullvad.mullvadvpn.lib.shared +package net.mullvad.mullvadvpn.lib.repository import android.content.Context import arrow.core.Either diff --git a/android/lib/shared/src/main/kotlin/net/mullvad/mullvadvpn/lib/shared/RelayLocationTranslationRepository.kt b/android/lib/repository/src/main/kotlin/net/mullvad/mullvadvpn/lib/repository/RelayLocationTranslationRepository.kt index b2685abaf2..5ba024e617 100644 --- a/android/lib/shared/src/main/kotlin/net/mullvad/mullvadvpn/lib/shared/RelayLocationTranslationRepository.kt +++ b/android/lib/repository/src/main/kotlin/net/mullvad/mullvadvpn/lib/repository/RelayLocationTranslationRepository.kt @@ -1,4 +1,4 @@ -package net.mullvad.mullvadvpn.lib.shared +package net.mullvad.mullvadvpn.lib.repository import android.content.Context import android.content.res.XmlResourceParser diff --git a/android/lib/repository/src/main/kotlin/net/mullvad/mullvadvpn/lib/repository/UserPreferencesRepository.kt b/android/lib/repository/src/main/kotlin/net/mullvad/mullvadvpn/lib/repository/UserPreferencesRepository.kt new file mode 100644 index 0000000000..1ad635cf24 --- /dev/null +++ b/android/lib/repository/src/main/kotlin/net/mullvad/mullvadvpn/lib/repository/UserPreferencesRepository.kt @@ -0,0 +1,63 @@ +package net.mullvad.mullvadvpn.lib.repository + +import androidx.datastore.core.DataStore +import java.time.Instant +import java.time.ZoneId +import java.time.ZonedDateTime +import kotlinx.coroutines.flow.Flow +import kotlinx.coroutines.flow.first +import net.mullvad.mullvadvpn.lib.model.BuildVersion +import net.mullvad.mullvadvpn.repository.UserPreferences + +class UserPreferencesRepository( + private val userPreferencesStore: DataStore<UserPreferences>, + private val buildVersion: BuildVersion, +) { + fun preferencesFlow(): Flow<UserPreferences> = userPreferencesStore.data + + suspend fun preferences(): UserPreferences = userPreferencesStore.data.first() + + suspend fun setPrivacyDisclosureAccepted() { + userPreferencesStore.updateData { prefs -> + prefs.toBuilder().setIsPrivacyDisclosureAccepted(true).build() + } + } + + suspend fun setHasDisplayedChangelogNotification() { + userPreferencesStore.updateData { prefs -> + prefs.toBuilder().setLastShownChangelogVersionCode(buildVersion.code).build() + } + } + + suspend fun setAccountExpiry(expiry: ZonedDateTime) { + userPreferencesStore.updateData { prefs -> + prefs.toBuilder().setAccountExpiryUnixTimeSeconds(expiry.toEpochSecond()).build() + } + } + + suspend fun setLocationInNotificationEnabled(enable: Boolean) { + userPreferencesStore.updateData { prefs -> + prefs.toBuilder().setShowLocationInSystemNotification(enable).build() + } + } + + suspend fun clearAccountExpiry() { + userPreferencesStore.updateData { prefs -> + prefs.toBuilder().setAccountExpiryUnixTimeSeconds(0).build() + } + } + + // Returns the account expiry time or null if there is no account expiry (e.g. the user + // is not logged in on an account). + suspend fun accountExpiry(): ZonedDateTime? = + preferences().let { prefs -> + val expiryTime = prefs.accountExpiryUnixTimeSeconds + if (expiryTime == 0L) return null + Instant.ofEpochSecond(expiryTime).atZone(ZoneId.systemDefault()) + } + + suspend fun setShowAndroid16ConnectWarning(show: Boolean) = + userPreferencesStore.updateData { prefs -> + prefs.toBuilder().setShowAndroid16ConnectWarning(show).build() + } +} diff --git a/android/lib/shared/src/main/kotlin/net/mullvad/mullvadvpn/lib/shared/VoucherRepository.kt b/android/lib/repository/src/main/kotlin/net/mullvad/mullvadvpn/lib/repository/VoucherRepository.kt index 9b08181ee3..b221966c28 100644 --- a/android/lib/shared/src/main/kotlin/net/mullvad/mullvadvpn/lib/shared/VoucherRepository.kt +++ b/android/lib/repository/src/main/kotlin/net/mullvad/mullvadvpn/lib/repository/VoucherRepository.kt @@ -1,4 +1,4 @@ -package net.mullvad.mullvadvpn.lib.shared +package net.mullvad.mullvadvpn.lib.repository import net.mullvad.mullvadvpn.lib.daemon.grpc.ManagementService import net.mullvad.mullvadvpn.lib.model.VoucherCode diff --git a/android/lib/repository/src/main/proto/user_prefs.proto b/android/lib/repository/src/main/proto/user_prefs.proto new file mode 100644 index 0000000000..36db3f2ad3 --- /dev/null +++ b/android/lib/repository/src/main/proto/user_prefs.proto @@ -0,0 +1,12 @@ +syntax = "proto3"; + +option java_package = "net.mullvad.mullvadvpn.repository"; +option java_multiple_files = true; + +message UserPreferences { + bool is_privacy_disclosure_accepted = 1; + int32 last_shown_changelog_version_code = 2; + int64 account_expiry_unix_time_seconds = 3; + bool show_android_16_connect_warning = 4; + bool show_location_in_system_notification = 5; +} diff --git a/android/lib/shared/src/test/kotlin/net/mullvad/mullvadvpn/lib/shared/AccountRepositoryTest.kt b/android/lib/repository/src/test/kotlin/net/mullvad/mullvadvpn/lib/repository/AccountRepositoryTest.kt index ff2ecb88b2..be4a0ab7ab 100644 --- a/android/lib/shared/src/test/kotlin/net/mullvad/mullvadvpn/lib/shared/AccountRepositoryTest.kt +++ b/android/lib/repository/src/test/kotlin/net/mullvad/mullvadvpn/lib/repository/AccountRepositoryTest.kt @@ -1,4 +1,4 @@ -package net.mullvad.mullvadvpn.lib.shared +package net.mullvad.mullvadvpn.lib.repository import arrow.core.right import io.mockk.coEvery diff --git a/android/lib/shared/src/test/kotlin/net/mullvad/mullvadvpn/lib/shared/ConnectionProxyTest.kt b/android/lib/repository/src/test/kotlin/net/mullvad/mullvadvpn/lib/repository/ConnectionProxyTest.kt index b9d276c34b..949d5c7890 100644 --- a/android/lib/shared/src/test/kotlin/net/mullvad/mullvadvpn/lib/shared/ConnectionProxyTest.kt +++ b/android/lib/repository/src/test/kotlin/net/mullvad/mullvadvpn/lib/repository/ConnectionProxyTest.kt @@ -1,4 +1,4 @@ -package net.mullvad.mullvadvpn.lib.shared +package net.mullvad.mullvadvpn.lib.repository import android.content.Intent import arrow.core.left diff --git a/android/lib/resource/src/main/res/values-da/strings.xml b/android/lib/resource/src/main/res/values-da/strings.xml index 2d30a818c8..4a9a442c92 100644 --- a/android/lib/resource/src/main/res/values-da/strings.xml +++ b/android/lib/resource/src/main/res/values-da/strings.xml @@ -367,6 +367,7 @@ <string name="settings_api_access">API-adgang</string> <string name="settings_changes_effect_warning_content_blocker">Ændringer af DNS-relaterede indstillinger træder muligvis ikke i kraft med det samme på grund af cachelagrede resultater.</string> <string name="settings_changes_effect_warning_short">DNS-indstillinger træder muligvis ikke i kraft med det samme</string> + <string name="settings_notifications">Meddelelser</string> <string name="settings_patch_error_failed_to_apply_patch">Det lykkedes ikke at anvende patch</string> <string name="settings_patch_error_invalid_or_missing_value">Ugyldig eller manglende værdi \"%1$s\"</string> <string name="settings_patch_error_recursion_limit">Rekursionsgrænse</string> diff --git a/android/lib/resource/src/main/res/values-de/strings.xml b/android/lib/resource/src/main/res/values-de/strings.xml index 2b8c018ab7..b9a4a52cdc 100644 --- a/android/lib/resource/src/main/res/values-de/strings.xml +++ b/android/lib/resource/src/main/res/values-de/strings.xml @@ -367,6 +367,7 @@ <string name="settings_api_access">API-Zugriff</string> <string name="settings_changes_effect_warning_content_blocker">Änderungen an DNS-Einstellungen werden aufgrund von zwischengespeicherten Daten möglicherweise nicht sofort wirksam.</string> <string name="settings_changes_effect_warning_short">Die DNS-Einstellungen werden möglicherweise nicht sofort wirksam</string> + <string name="settings_notifications">Benachrichtigungen</string> <string name="settings_patch_error_failed_to_apply_patch">Patch konnte nicht angewendet werden</string> <string name="settings_patch_error_invalid_or_missing_value">Ungültiger oder fehlender Wert „%1$s“</string> <string name="settings_patch_error_recursion_limit">Rekursionslimit</string> diff --git a/android/lib/resource/src/main/res/values-es/strings.xml b/android/lib/resource/src/main/res/values-es/strings.xml index e6abf7ee1f..205b826a73 100644 --- a/android/lib/resource/src/main/res/values-es/strings.xml +++ b/android/lib/resource/src/main/res/values-es/strings.xml @@ -367,6 +367,7 @@ <string name="settings_api_access">Acceso a API</string> <string name="settings_changes_effect_warning_content_blocker">Los cambios en la configuración relacionada con el DNS no surtirán efecto inmediatamente debido a los resultados en caché.</string> <string name="settings_changes_effect_warning_short">La configuración de DNS podría no surtir efecto inmediatamente</string> + <string name="settings_notifications">Notificaciones</string> <string name="settings_patch_error_failed_to_apply_patch">Error al aplicar el parche</string> <string name="settings_patch_error_invalid_or_missing_value">El valor «%1$s» falta o no es válido</string> <string name="settings_patch_error_recursion_limit">Límite de recursión</string> diff --git a/android/lib/resource/src/main/res/values-fi/strings.xml b/android/lib/resource/src/main/res/values-fi/strings.xml index d5e392cb88..ab3101fc57 100644 --- a/android/lib/resource/src/main/res/values-fi/strings.xml +++ b/android/lib/resource/src/main/res/values-fi/strings.xml @@ -367,6 +367,7 @@ <string name="settings_api_access">Ohjelmointirajapinnan käyttö</string> <string name="settings_changes_effect_warning_content_blocker">DNS-asetuksiin tehdyt muutokset eivät välttämättä astu voimaan välittömästi välimuistissa olevien tulosten vuoksi.</string> <string name="settings_changes_effect_warning_short">Uudet DNS-asetukset eivät välttämättä astu voimaan välittömästi</string> + <string name="settings_notifications">Ilmoitukset</string> <string name="settings_patch_error_failed_to_apply_patch">Muutostiedoston käyttöönotto ei onnistunut</string> <string name="settings_patch_error_invalid_or_missing_value">Arvo \"%1$s\" puuttuu tai on virheellinen</string> <string name="settings_patch_error_recursion_limit">Toistorajoitus</string> diff --git a/android/lib/resource/src/main/res/values-fr/strings.xml b/android/lib/resource/src/main/res/values-fr/strings.xml index 8e523f49e3..52ff3dddb1 100644 --- a/android/lib/resource/src/main/res/values-fr/strings.xml +++ b/android/lib/resource/src/main/res/values-fr/strings.xml @@ -367,6 +367,7 @@ <string name="settings_api_access">Accès à l\'API</string> <string name="settings_changes_effect_warning_content_blocker">Les modifications apportées aux paramètres liés au DNS peuvent ne pas prendre effet immédiatement en raison de la mise en cache des résultats.</string> <string name="settings_changes_effect_warning_short">Les paramètres DNS peuvent ne pas être immédiatement pris en compte</string> + <string name="settings_notifications">Notifications</string> <string name="settings_patch_error_failed_to_apply_patch">Impossible d\'appliquer le correctif</string> <string name="settings_patch_error_invalid_or_missing_value">Valeur « %1$s » non valide ou manquante</string> <string name="settings_patch_error_recursion_limit">Limite de récursion</string> diff --git a/android/lib/resource/src/main/res/values-it/strings.xml b/android/lib/resource/src/main/res/values-it/strings.xml index 12f4d1cacb..03bfe3500a 100644 --- a/android/lib/resource/src/main/res/values-it/strings.xml +++ b/android/lib/resource/src/main/res/values-it/strings.xml @@ -367,6 +367,7 @@ <string name="settings_api_access">Accesso API</string> <string name="settings_changes_effect_warning_content_blocker">Le modifiche alle impostazioni relative al DNS potrebbero non avere effetto immediato a causa dei risultati memorizzati nella cache.</string> <string name="settings_changes_effect_warning_short">Le impostazioni DNS potrebbero non avere effetto immediato</string> + <string name="settings_notifications">Notifiche</string> <string name="settings_patch_error_failed_to_apply_patch">Impossibile applicare la patch</string> <string name="settings_patch_error_invalid_or_missing_value">Valore \"%1$s\" non valido o mancante</string> <string name="settings_patch_error_recursion_limit">Limite di ricorsione</string> diff --git a/android/lib/resource/src/main/res/values-ja/strings.xml b/android/lib/resource/src/main/res/values-ja/strings.xml index 58ba7a369e..5c6a938215 100644 --- a/android/lib/resource/src/main/res/values-ja/strings.xml +++ b/android/lib/resource/src/main/res/values-ja/strings.xml @@ -367,6 +367,7 @@ <string name="settings_api_access">APIアクセス</string> <string name="settings_changes_effect_warning_content_blocker">結果がキャッシュされているため、DNS関連の設定の変更はすぐには適用されない可能性があります。</string> <string name="settings_changes_effect_warning_short">DNS設定はすぐに適用されない可能性があります</string> + <string name="settings_notifications">通知</string> <string name="settings_patch_error_failed_to_apply_patch">パッチを適用できませんでした</string> <string name="settings_patch_error_invalid_or_missing_value">値「%1$s」は無効であるか、欠測しています</string> <string name="settings_patch_error_recursion_limit">繰り返しの制限</string> diff --git a/android/lib/resource/src/main/res/values-ko/strings.xml b/android/lib/resource/src/main/res/values-ko/strings.xml index ac3146b5f4..b5cdef6266 100644 --- a/android/lib/resource/src/main/res/values-ko/strings.xml +++ b/android/lib/resource/src/main/res/values-ko/strings.xml @@ -367,6 +367,7 @@ <string name="settings_api_access">API 액세스</string> <string name="settings_changes_effect_warning_content_blocker">DNS 관련 설정에 대한 변경 사항은 캐시된 결과로 인해 즉시 적용되지 않을 수도 있습니다.</string> <string name="settings_changes_effect_warning_short">DNS 설정이 즉시 적용되지 않을 수도 있습니다</string> + <string name="settings_notifications">알림</string> <string name="settings_patch_error_failed_to_apply_patch">패치 적용 실패</string> <string name="settings_patch_error_invalid_or_missing_value">\"%1$s\" 값이 유효하지 않거나 누락되었습니다</string> <string name="settings_patch_error_recursion_limit">반복 제한</string> diff --git a/android/lib/resource/src/main/res/values-my/strings.xml b/android/lib/resource/src/main/res/values-my/strings.xml index 9909f1216b..a52c079435 100644 --- a/android/lib/resource/src/main/res/values-my/strings.xml +++ b/android/lib/resource/src/main/res/values-my/strings.xml @@ -367,6 +367,7 @@ <string name="settings_api_access">API ရယူသုံးစွဲခွင့်</string> <string name="settings_changes_effect_warning_content_blocker">DNS နှင့်ဆက်စပ်သော ဆက်တင်များ၌ ပြုလုပ်သည့် ပြောင်းလဲမှုများသည် ယာယီသိမ်းထားသော ရလဒ်များကြောင့် ချက်ချင်း အကျိုးမသက်ရောက်နိုင်ပါ။</string> <string name="settings_changes_effect_warning_short">DNS ဆက်တင်ကို ချက်ချင်း အကျိုးမရောက်နိုင်ပါ။</string> + <string name="settings_notifications">အသိပေးချက်များ</string> <string name="settings_patch_error_failed_to_apply_patch">ပတ်(ချ်) သုံးခြင်း မအောင်မြင်ပါ</string> <string name="settings_patch_error_invalid_or_missing_value">မမှန်ကန်ပါ သို့မဟုတ် \"%1$s\" တန်ဖိုး ပျောက်နေသည်</string> <string name="settings_patch_error_recursion_limit">ထပ်တလဲလဲ လုပ်ဆောင်မှု ကန့်သတ်ချက်</string> diff --git a/android/lib/resource/src/main/res/values-nb/strings.xml b/android/lib/resource/src/main/res/values-nb/strings.xml index fab24b9f77..63d550e048 100644 --- a/android/lib/resource/src/main/res/values-nb/strings.xml +++ b/android/lib/resource/src/main/res/values-nb/strings.xml @@ -367,6 +367,7 @@ <string name="settings_api_access">API-tilgang</string> <string name="settings_changes_effect_warning_content_blocker">Endringer til DNS-relaterte innstillinger vil kanskje ikke tre i kraft umiddelbart på grunn av bufrede resultater.</string> <string name="settings_changes_effect_warning_short">DNS-innstillinger vil kanskje ikke tre i kraft umiddelbart</string> + <string name="settings_notifications">Meldinger</string> <string name="settings_patch_error_failed_to_apply_patch">Kunne ikke bruke oppdatering</string> <string name="settings_patch_error_invalid_or_missing_value">Ugyldig eller mangler verdien «%1$s»</string> <string name="settings_patch_error_recursion_limit">Rekursjonsgrense</string> diff --git a/android/lib/resource/src/main/res/values-nl/strings.xml b/android/lib/resource/src/main/res/values-nl/strings.xml index fa5b5f0ba8..8570f48dd8 100644 --- a/android/lib/resource/src/main/res/values-nl/strings.xml +++ b/android/lib/resource/src/main/res/values-nl/strings.xml @@ -367,6 +367,7 @@ <string name="settings_api_access">API-toegang</string> <string name="settings_changes_effect_warning_content_blocker">Wijzigingen in DNS-gerelateerde instellingen worden mogelijk niet onmiddellijk van kracht vanwege gecachete resultaten.</string> <string name="settings_changes_effect_warning_short">DNS-instellingen worden mogelijk niet onmiddellijk van kracht</string> + <string name="settings_notifications">Notificaties</string> <string name="settings_patch_error_failed_to_apply_patch">Patch toepassen mislukt</string> <string name="settings_patch_error_invalid_or_missing_value">Ongeldige of ontbrekende waarde \"%1$s\"</string> <string name="settings_patch_error_recursion_limit">Recursielimiet</string> diff --git a/android/lib/resource/src/main/res/values-pl/strings.xml b/android/lib/resource/src/main/res/values-pl/strings.xml index 67189cdbea..1316905be4 100644 --- a/android/lib/resource/src/main/res/values-pl/strings.xml +++ b/android/lib/resource/src/main/res/values-pl/strings.xml @@ -367,6 +367,7 @@ <string name="settings_api_access">Dostęp do API</string> <string name="settings_changes_effect_warning_content_blocker">Zmiany w ustawieniach związanych z usługą DNS mogą nie zostać wprowadzone natychmiast ze względu na zbuforowane wyniki.</string> <string name="settings_changes_effect_warning_short">Ustawienia usługi DNS mogą nie zostać zastosowane natychmiast</string> + <string name="settings_notifications">Powiadomienia</string> <string name="settings_patch_error_failed_to_apply_patch">Nie udało się zastosować poprawki</string> <string name="settings_patch_error_invalid_or_missing_value">Nieprawidłowa lub brakująca wartość „%1$s”</string> <string name="settings_patch_error_recursion_limit">Limit rekursji</string> diff --git a/android/lib/resource/src/main/res/values-pt/strings.xml b/android/lib/resource/src/main/res/values-pt/strings.xml index 57f6290216..66accd8f2d 100644 --- a/android/lib/resource/src/main/res/values-pt/strings.xml +++ b/android/lib/resource/src/main/res/values-pt/strings.xml @@ -367,6 +367,7 @@ <string name="settings_api_access">Acesso à API</string> <string name="settings_changes_effect_warning_content_blocker">As alterações às definições relacionadas com o DNS podem não fazer efeito imediatamente devido aos resultados em cache.</string> <string name="settings_changes_effect_warning_short">As definições de DNS podem não fazer efeito imediatamente</string> + <string name="settings_notifications">Notificações</string> <string name="settings_patch_error_failed_to_apply_patch">Erro ao aplicar patch</string> <string name="settings_patch_error_invalid_or_missing_value">Valor inválido ou em falta: \"%1$s\"</string> <string name="settings_patch_error_recursion_limit">Limite de recursão</string> diff --git a/android/lib/resource/src/main/res/values-ru/strings.xml b/android/lib/resource/src/main/res/values-ru/strings.xml index 2db2a334f4..d4c7b9da86 100644 --- a/android/lib/resource/src/main/res/values-ru/strings.xml +++ b/android/lib/resource/src/main/res/values-ru/strings.xml @@ -367,6 +367,7 @@ <string name="settings_api_access">Доступ к API</string> <string name="settings_changes_effect_warning_content_blocker">Изменения в настройках, связанные с DNS, могут не сразу вступить в силу из-за кешированных результатов.</string> <string name="settings_changes_effect_warning_short">Настройки DNS могут не сразу вступить в силу</string> + <string name="settings_notifications">Уведомления</string> <string name="settings_patch_error_failed_to_apply_patch">Не удалось применить патч</string> <string name="settings_patch_error_invalid_or_missing_value">Недопустимое или отсутствующее значение «%1$s»</string> <string name="settings_patch_error_recursion_limit">Предел рекурсии</string> diff --git a/android/lib/resource/src/main/res/values-sv/strings.xml b/android/lib/resource/src/main/res/values-sv/strings.xml index f1f03205db..bd7d7585ba 100644 --- a/android/lib/resource/src/main/res/values-sv/strings.xml +++ b/android/lib/resource/src/main/res/values-sv/strings.xml @@ -367,6 +367,7 @@ <string name="settings_api_access">API-åtkomst</string> <string name="settings_changes_effect_warning_content_blocker">Ändringar i DNS-relaterade inställningar kanske inte börjar gälla direkt på grund av cachade resultat.</string> <string name="settings_changes_effect_warning_short">DNS-inställningarna kanske inte börjar gälla direkt</string> + <string name="settings_notifications">Meddelanden</string> <string name="settings_patch_error_failed_to_apply_patch">Konfigurationsfilen kunde inte tillämpas</string> <string name="settings_patch_error_invalid_or_missing_value">Värdet \"%1$s\" är ogiltigt eller saknas</string> <string name="settings_patch_error_recursion_limit">Rekursionsgräns</string> diff --git a/android/lib/resource/src/main/res/values-th/strings.xml b/android/lib/resource/src/main/res/values-th/strings.xml index 850007be38..e2f64843ff 100644 --- a/android/lib/resource/src/main/res/values-th/strings.xml +++ b/android/lib/resource/src/main/res/values-th/strings.xml @@ -367,6 +367,7 @@ <string name="settings_api_access">การเข้าถึง API</string> <string name="settings_changes_effect_warning_content_blocker">การเปลี่ยนแปลงการตั้งค่าที่เกี่ยวข้องกับ DNS อาจไม่มีผลทันที เนื่องจากผลลัพธ์ที่แคชไว้</string> <string name="settings_changes_effect_warning_short">การตั้งค่า DNS อาจไม่มีผลทันที</string> + <string name="settings_notifications">การแจ้งเตือน</string> <string name="settings_patch_error_failed_to_apply_patch">ล้มเหลวในการปรับใช้แพตช์</string> <string name="settings_patch_error_invalid_or_missing_value">ค่า \"%1$s” ไม่ถูกต้องหรือขาดหายไป</string> <string name="settings_patch_error_recursion_limit">ขีดจำกัดการเรียกซ้ำ</string> diff --git a/android/lib/resource/src/main/res/values-tr/strings.xml b/android/lib/resource/src/main/res/values-tr/strings.xml index d6b85efa06..e2258537ef 100644 --- a/android/lib/resource/src/main/res/values-tr/strings.xml +++ b/android/lib/resource/src/main/res/values-tr/strings.xml @@ -367,6 +367,7 @@ <string name="settings_api_access">API erişimi</string> <string name="settings_changes_effect_warning_content_blocker">DNS ile ilgili ayarlarda yapılan değişiklikler, önbelleğe alınan sonuçlar nedeniyle hemen etkili olmayabilir.</string> <string name="settings_changes_effect_warning_short">DNS ayarları hemen etkili olmayabilir</string> + <string name="settings_notifications">Bildirimler</string> <string name="settings_patch_error_failed_to_apply_patch">Yama uygulanamadı</string> <string name="settings_patch_error_invalid_or_missing_value">Geçersiz veya eksik \"%1$s\" değeri</string> <string name="settings_patch_error_recursion_limit">Yineleme sınırı</string> diff --git a/android/lib/resource/src/main/res/values-zh-rCN/strings.xml b/android/lib/resource/src/main/res/values-zh-rCN/strings.xml index 82681ab2a9..c4757f1561 100644 --- a/android/lib/resource/src/main/res/values-zh-rCN/strings.xml +++ b/android/lib/resource/src/main/res/values-zh-rCN/strings.xml @@ -367,6 +367,7 @@ <string name="settings_api_access">API 访问</string> <string name="settings_changes_effect_warning_content_blocker">由于缓存结果,对 DNS 相关设置的更改可能不会立即生效。</string> <string name="settings_changes_effect_warning_short">DNS 设置可能不会立即生效</string> + <string name="settings_notifications">通知</string> <string name="settings_patch_error_failed_to_apply_patch">无法应用补丁</string> <string name="settings_patch_error_invalid_or_missing_value">值“%1$s”无效或者缺失</string> <string name="settings_patch_error_recursion_limit">递归限制</string> diff --git a/android/lib/resource/src/main/res/values-zh-rTW/strings.xml b/android/lib/resource/src/main/res/values-zh-rTW/strings.xml index 13041d04fa..14158d905e 100644 --- a/android/lib/resource/src/main/res/values-zh-rTW/strings.xml +++ b/android/lib/resource/src/main/res/values-zh-rTW/strings.xml @@ -367,6 +367,7 @@ <string name="settings_api_access">API 存取</string> <string name="settings_changes_effect_warning_content_blocker">由於快取的結果,對 DNS 相關設定所做的變更可能不會立即生效。</string> <string name="settings_changes_effect_warning_short">DNS 設定可能不會立即生效</string> + <string name="settings_notifications">通知</string> <string name="settings_patch_error_failed_to_apply_patch">無法套用修補檔</string> <string name="settings_patch_error_invalid_or_missing_value">值「%1$s」無效或遺失</string> <string name="settings_patch_error_recursion_limit">遞迴限制</string> diff --git a/android/lib/resource/src/main/res/values/strings.xml b/android/lib/resource/src/main/res/values/strings.xml index df89404424..147559f0c2 100644 --- a/android/lib/resource/src/main/res/values/strings.xml +++ b/android/lib/resource/src/main/res/values/strings.xml @@ -301,6 +301,7 @@ <string name="overrides_cleared">Overrides cleared</string> <string name="disconnected_vpn_permission_error">Disconnected (No VPN permission)</string> <string name="settings_api_access">API access</string> + <string name="settings_notifications">Notifications</string> <string name="add">Add</string> <string name="api_access_description">Manage and add custom methods to access the Mullvad API.</string> <string name="current_method">Current: %s</string> @@ -400,6 +401,7 @@ <string name="device_ip_version_title">Device IP version</string> <string name="confirm_ipv6_dns">The IPv6 DNS server will not work unless you enable \"IPv6\" under VPN settings.</string> <string name="enable_ipv6">In-tunnel IPv6</string> + <string name="enable_location_in_notification">Show location in notification</string> <string name="uri_market_app_not_found">No Android app store installed, could not open link</string> <string name="uri_browser_app_not_found">No browser app installed, could not open link</string> <string name="ipv6_info">When this feature is enabled, IPv6 can be used alongside IPv4 in the VPN tunnel to communicate with internet services.</string> diff --git a/android/lib/tv/build.gradle.kts b/android/lib/tv/build.gradle.kts index 4b5ca98f95..2e614db7ea 100644 --- a/android/lib/tv/build.gradle.kts +++ b/android/lib/tv/build.gradle.kts @@ -42,7 +42,7 @@ dependencies { implementation(libs.compose.ui) implementation(projects.lib.model) implementation(projects.lib.resource) - implementation(projects.lib.shared) + implementation(projects.lib.repository) implementation(projects.lib.theme) implementation(projects.lib.ui.component) |
