Added developer setting to change push notification compatible domains list

This commit is contained in:
Sylvain Berfini 2025-06-17 17:33:20 +02:00
parent c62f549521
commit 1307ec5471
6 changed files with 69 additions and 3 deletions

View file

@ -307,13 +307,17 @@ class CorePreferences
config.setBool("ui", "show_mic_speaker_vu_meter", value)
}
@get:WorkerThread @set:WorkerThread
var pushNotificationCompatibleDomains: Array<String>
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<String>
get() = config.getStringList("app", "push_notification_domains", arrayOf("sip.linphone.org"))
@get:WorkerThread
val darkModeAllowed: Boolean
get() = config.getBool("ui", "dark_mode_allowed", true)

View file

@ -63,6 +63,7 @@ class SettingsDeveloperFragment : GenericMainFragment() {
override fun onPause() {
viewModel.updateSharingServersUrl()
viewModel.updatePushCompatibleDomainsList()
super.onPause()
}

View file

@ -245,6 +245,7 @@ class SettingsViewModel
val logsSharingServerUrl = MutableLiveData<String>()
val createEndToEndEncryptedConferences = MutableLiveData<Boolean>()
val enableVuMeters = MutableLiveData<Boolean>()
val pushCompatibleDomainsList = MutableLiveData<String>()
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
}
}
}

View file

@ -236,6 +236,41 @@
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toBottomOf="@id/e2e_encrypted_conferences_switch" />
<androidx.appcompat.widget.AppCompatTextView
style="@style/settings_title_style"
android:id="@+id/push_compatible_domains_list_label"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginStart="16dp"
android:layout_marginEnd="16dp"
android:layout_marginTop="16dp"
android:paddingTop="8dp"
android:paddingBottom="8dp"
android:text="@string/settings_developer_push_compatible_domains_list_title"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toBottomOf="@id/enable_vu_meters_switch"/>
<androidx.appcompat.widget.AppCompatEditText
style="@style/default_text_style"
android:id="@+id/push_compatible_domains_list"
android:layout_width="0dp"
android:layout_height="50dp"
android:layout_marginEnd="16dp"
android:paddingStart="20dp"
android:paddingEnd="20dp"
android:text="@={viewModel.pushCompatibleDomainsList}"
android:textSize="14sp"
android:maxLines="1"
android:background="@drawable/edit_text_background"
android:inputType="text|textNoSuggestions"
android:hint="@string/settings_developer_push_compatible_domains_list_title"
app:layout_constraintHorizontal_bias="0"
app:layout_constraintWidth_max="@dimen/text_input_max_width"
app:layout_constraintTop_toBottomOf="@id/push_compatible_domains_list_label"
app:layout_constraintStart_toStartOf="@id/push_compatible_domains_list_label"
app:layout_constraintEnd_toEndOf="parent"/>
</androidx.constraintlayout.widget.ConstraintLayout>
</ScrollView>

View file

@ -309,6 +309,7 @@
<string name="settings_developer_enabled_toast">Paramètres développeurs activés</string>
<string name="settings_developer_already_enabled_toast">Paramètres développeurs déjà activés</string>
<string name="settings_developer_enable_vu_meters_title">Activer l\'indicateur des volumes d\'enregistrement et de lecture</string>
<string name="settings_developer_push_compatible_domains_list_title">Liste des domaines qui supportent les notifications poussées (séparés par des virgules)</string>
<!-- Account profile & settings -->
<string name="manage_account_title">Mon compte</string>

View file

@ -350,6 +350,7 @@
<string name="settings_developer_enabled_toast">Developer settings enabled</string>
<string name="settings_developer_already_enabled_toast">Developer settings already enabled</string>
<string name="settings_developer_enable_vu_meters_title">Enable record/playback volume vu meters while in call</string>
<string name="settings_developer_push_compatible_domains_list_title">List of push notifications compatible domains (comma separated)</string>
<!-- Account profile & settings -->
<string name="manage_account_title">Manage account</string>