From 518ecc182332e41df5233f88aace4b5be987f643 Mon Sep 17 00:00:00 2001 From: Sylvain Berfini Date: Fri, 11 Apr 2025 09:37:54 +0200 Subject: [PATCH] Added a list of domain for which to show push notification settings --- app/src/main/java/org/linphone/core/CoreContext.kt | 3 ++- .../main/java/org/linphone/core/CorePreferences.kt | 13 +++++++++---- .../settings/viewmodel/AccountSettingsViewModel.kt | 8 ++++---- .../main/res/layout/account_settings_fragment.xml | 4 ++-- 4 files changed, 17 insertions(+), 11 deletions(-) diff --git a/app/src/main/java/org/linphone/core/CoreContext.kt b/app/src/main/java/org/linphone/core/CoreContext.kt index 1f2d790ff..d64f615a8 100644 --- a/app/src/main/java/org/linphone/core/CoreContext.kt +++ b/app/src/main/java/org/linphone/core/CoreContext.kt @@ -1051,7 +1051,8 @@ class CoreContext private fun disablePushNotificationsFromThirdPartySipAccounts() { for (account in core.accountList) { val params = account.params - if (params.identityAddress?.domain != corePreferences.defaultDomain && params.pushNotificationAllowed) { + val pushAvailableForDomain = params.identityAddress?.domain in corePreferences.pushNotificationCompatibleDomains + if (!pushAvailableForDomain && params.pushNotificationAllowed) { val clone = params.clone() clone.pushNotificationAllowed = false Log.w("$TAG Updating account [${params.identityAddress?.asStringUriOnly()}] params to disable push notifications, they won't work and may cause issues when used with UDP transport protocol") diff --git a/app/src/main/java/org/linphone/core/CorePreferences.kt b/app/src/main/java/org/linphone/core/CorePreferences.kt index 99b9da051..76aa5d0d9 100644 --- a/app/src/main/java/org/linphone/core/CorePreferences.kt +++ b/app/src/main/java/org/linphone/core/CorePreferences.kt @@ -276,6 +276,15 @@ class CorePreferences config.setString("ui", "theme_main_color", value) } + // Customization options + + @get:WorkerThread + val defaultDomain: String + get() = config.getString("app", "default_domain", "sip.linphone.org")!! + + val pushNotificationCompatibleDomains: Array + get() = config.getStringList("app", "push_notification_domains", arrayOf("sip.linphone.org")) + @get:WorkerThread val darkModeAllowed: Boolean get() = config.getBool("ui", "dark_mode_allowed", true) @@ -378,10 +387,6 @@ class CorePreferences // Paths - @get:WorkerThread - val defaultDomain: String - get() = config.getString("app", "default_domain", "sip.linphone.org")!! - @get:AnyThread val configPath: String get() = context.filesDir.absolutePath + "/" + CONFIG_FILE_NAME diff --git a/app/src/main/java/org/linphone/ui/main/settings/viewmodel/AccountSettingsViewModel.kt b/app/src/main/java/org/linphone/ui/main/settings/viewmodel/AccountSettingsViewModel.kt index ce734ac7e..ed201c711 100644 --- a/app/src/main/java/org/linphone/ui/main/settings/viewmodel/AccountSettingsViewModel.kt +++ b/app/src/main/java/org/linphone/ui/main/settings/viewmodel/AccountSettingsViewModel.kt @@ -46,7 +46,7 @@ class AccountSettingsViewModel val expandNatPolicySettings = MutableLiveData() - val isOnDefaultDomain = MutableLiveData() + val isDomainInPushNotificationCompatibleList = MutableLiveData() val pushNotificationsAvailable = MutableLiveData() @@ -132,9 +132,9 @@ class AccountSettingsViewModel account = found val params = account.params - val defaultDomain = params.identityAddress?.domain == corePreferences.defaultDomain - isOnDefaultDomain.postValue(defaultDomain) - if (defaultDomain) { + val pushAvailableForDomain = params.identityAddress?.domain in corePreferences.pushNotificationCompatibleDomains + isDomainInPushNotificationCompatibleList.postValue(pushAvailableForDomain) + if (pushAvailableForDomain) { pushNotificationsAvailable.postValue(core.isPushNotificationAvailable) pushNotificationsEnabled.postValue( core.isPushNotificationAvailable && params.pushNotificationAllowed diff --git a/app/src/main/res/layout/account_settings_fragment.xml b/app/src/main/res/layout/account_settings_fragment.xml index 54de76c61..759350c24 100644 --- a/app/src/main/res/layout/account_settings_fragment.xml +++ b/app/src/main/res/layout/account_settings_fragment.xml @@ -82,7 +82,7 @@ android:layout_marginEnd="16dp" android:enabled="@{viewModel.pushNotificationsAvailable}" android:checked="@={viewModel.pushNotificationsEnabled}" - android:visibility="@{viewModel.isOnDefaultDomain ? View.VISIBLE : View.GONE}" + android:visibility="@{viewModel.isDomainInPushNotificationCompatibleList ? View.VISIBLE : View.GONE}" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintTop_toTopOf="parent"/> @@ -97,7 +97,7 @@ android:text="@{viewModel.pushNotificationsAvailable ? @string/account_settings_push_notification_title : @string/account_settings_push_notification_not_available_title, default=@string/account_settings_push_notification_title}" android:maxLines="2" android:ellipsize="end" - android:visibility="@{viewModel.isOnDefaultDomain ? View.VISIBLE : View.GONE}" + android:visibility="@{viewModel.isDomainInPushNotificationCompatibleList ? View.VISIBLE : View.GONE}" app:layout_constraintTop_toTopOf="parent" app:layout_constraintBottom_toBottomOf="@id/push_notifications_switch" app:layout_constraintStart_toStartOf="parent"