From 1307ec547194490cd1e10519bda255d99fc3184c Mon Sep 17 00:00:00 2001 From: Sylvain Berfini Date: Tue, 17 Jun 2025 17:33:20 +0200 Subject: [PATCH] Added developer setting to change push notification compatible domains list --- .../java/org/linphone/core/CorePreferences.kt | 10 ++++-- .../fragment/SettingsDeveloperFragment.kt | 1 + .../settings/viewmodel/SettingsViewModel.kt | 24 +++++++++++++ .../layout/settings_developer_fragment.xml | 35 +++++++++++++++++++ app/src/main/res/values-fr/strings.xml | 1 + app/src/main/res/values/strings.xml | 1 + 6 files changed, 69 insertions(+), 3 deletions(-) diff --git a/app/src/main/java/org/linphone/core/CorePreferences.kt b/app/src/main/java/org/linphone/core/CorePreferences.kt index 625a75b94..afed6ddce 100644 --- a/app/src/main/java/org/linphone/core/CorePreferences.kt +++ b/app/src/main/java/org/linphone/core/CorePreferences.kt @@ -307,13 +307,17 @@ class CorePreferences config.setBool("ui", "show_mic_speaker_vu_meter", value) } + @get:WorkerThread @set:WorkerThread + var pushNotificationCompatibleDomains: Array + get() = config.getStringList("app", "push_notification_domains", arrayOf("sip.linphone.org")) + set(value) { + config.setStringList("app", "push_notification_domains", value) + } + @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) diff --git a/app/src/main/java/org/linphone/ui/main/settings/fragment/SettingsDeveloperFragment.kt b/app/src/main/java/org/linphone/ui/main/settings/fragment/SettingsDeveloperFragment.kt index 6f0a0bcd3..1dedb7d51 100644 --- a/app/src/main/java/org/linphone/ui/main/settings/fragment/SettingsDeveloperFragment.kt +++ b/app/src/main/java/org/linphone/ui/main/settings/fragment/SettingsDeveloperFragment.kt @@ -63,6 +63,7 @@ class SettingsDeveloperFragment : GenericMainFragment() { override fun onPause() { viewModel.updateSharingServersUrl() + viewModel.updatePushCompatibleDomainsList() super.onPause() } diff --git a/app/src/main/java/org/linphone/ui/main/settings/viewmodel/SettingsViewModel.kt b/app/src/main/java/org/linphone/ui/main/settings/viewmodel/SettingsViewModel.kt index ec935ee79..156cdd74e 100644 --- a/app/src/main/java/org/linphone/ui/main/settings/viewmodel/SettingsViewModel.kt +++ b/app/src/main/java/org/linphone/ui/main/settings/viewmodel/SettingsViewModel.kt @@ -245,6 +245,7 @@ class SettingsViewModel val logsSharingServerUrl = MutableLiveData() val createEndToEndEncryptedConferences = MutableLiveData() val enableVuMeters = MutableLiveData() + val pushCompatibleDomainsList = MutableLiveData() private val coreListener = object : CoreListenerStub() { @WorkerThread @@ -376,6 +377,19 @@ class SettingsViewModel logsSharingServerUrl.postValue(core.logCollectionUploadServerUrl) createEndToEndEncryptedConferences.postValue(corePreferences.createEndToEndEncryptedMeetingsAndGroupCalls) enableVuMeters.postValue(corePreferences.showMicrophoneAndSpeakerVuMeters) + + val domainsListBuilder = StringBuilder() + val domainsArray = corePreferences.pushNotificationCompatibleDomains + for (item in domainsArray) { + domainsListBuilder.append(item) + domainsListBuilder.append(",") + } + if (domainsListBuilder.isNotEmpty()) { + domainsListBuilder.deleteAt(domainsListBuilder.length - 1) // Remove last ',' + } + val domainsList = domainsListBuilder.toString() + Log.d("$TAG Computed push compatible domains list is [$domainsList]") + pushCompatibleDomainsList.postValue(domainsList) } } @@ -1160,4 +1174,14 @@ class SettingsViewModel enableVuMeters.postValue(newValue) } } + + @UiThread + fun updatePushCompatibleDomainsList() { + coreContext.postOnCoreThread { core -> + val flatValue = pushCompatibleDomainsList.value.orEmpty().trim() + Log.d("$TAG Updating push compatible domains list using user input [$flatValue]") + val newList = flatValue.split(",").toTypedArray() + corePreferences.pushNotificationCompatibleDomains = newList + } + } } diff --git a/app/src/main/res/layout/settings_developer_fragment.xml b/app/src/main/res/layout/settings_developer_fragment.xml index 6ead2a276..c495e43b6 100644 --- a/app/src/main/res/layout/settings_developer_fragment.xml +++ b/app/src/main/res/layout/settings_developer_fragment.xml @@ -236,6 +236,41 @@ app:layout_constraintEnd_toEndOf="parent" app:layout_constraintTop_toBottomOf="@id/e2e_encrypted_conferences_switch" /> + + + + diff --git a/app/src/main/res/values-fr/strings.xml b/app/src/main/res/values-fr/strings.xml index 3120e7c93..f8693f970 100644 --- a/app/src/main/res/values-fr/strings.xml +++ b/app/src/main/res/values-fr/strings.xml @@ -309,6 +309,7 @@ Paramètres développeurs activés Paramètres développeurs déjà activés Activer l\'indicateur des volumes d\'enregistrement et de lecture + Liste des domaines qui supportent les notifications poussées (séparés par des virgules) Mon compte diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 586852f24..0a61b3b92 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -350,6 +350,7 @@ Developer settings enabled Developer settings already enabled Enable record/playback volume vu meters while in call + List of push notifications compatible domains (comma separated) Manage account