diff --git a/app/src/main/java/org/thoughtcrime/securesms/components/settings/conversation/sounds/custom/CustomNotificationsSettingsFragment.kt b/app/src/main/java/org/thoughtcrime/securesms/components/settings/conversation/sounds/custom/CustomNotificationsSettingsFragment.kt index 7bc4c7cf76..8edaa73320 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/components/settings/conversation/sounds/custom/CustomNotificationsSettingsFragment.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/components/settings/conversation/sounds/custom/CustomNotificationsSettingsFragment.kt @@ -65,8 +65,6 @@ class CustomNotificationsSettingsFragment : DSLSettingsFragment(R.string.CustomN private fun getConfiguration(state: CustomNotificationsSettingsState): DSLConfiguration { return configure { - val controlsEnabled = state.hasCustomNotifications && state.isInitialLoadComplete - sectionHeaderPref(R.string.CustomNotificationsDialogFragment__messages) if (NotificationChannels.supported()) { @@ -81,21 +79,21 @@ class CustomNotificationsSettingsFragment : DSLSettingsFragment(R.string.CustomN clickPref( title = DSLSettingsText.from(R.string.CustomNotificationsDialogFragment__notification_sound), summary = DSLSettingsText.from(getRingtoneSummary(requireContext(), state.messageSound, Settings.System.DEFAULT_NOTIFICATION_URI)), - isEnabled = controlsEnabled, + isEnabled = state.controlsEnabled, onClick = { requestSound(state.messageSound, false) } ) if (NotificationChannels.supported()) { switchPref( title = DSLSettingsText.from(R.string.CustomNotificationsDialogFragment__vibrate), - isEnabled = controlsEnabled, + isEnabled = state.controlsEnabled, isChecked = state.messageVibrateEnabled, onClick = { viewModel.setMessageVibrate(RecipientDatabase.VibrateState.fromBoolean(!state.messageVibrateEnabled)) } ) } else { radioListPref( title = DSLSettingsText.from(R.string.CustomNotificationsDialogFragment__vibrate), - isEnabled = controlsEnabled, + isEnabled = state.controlsEnabled, listItems = vibrateLabels, selected = state.messageVibrateState.id, onSelected = { @@ -112,13 +110,13 @@ class CustomNotificationsSettingsFragment : DSLSettingsFragment(R.string.CustomN clickPref( title = DSLSettingsText.from(R.string.CustomNotificationsDialogFragment__ringtone), summary = DSLSettingsText.from(getRingtoneSummary(requireContext(), state.callSound, Settings.System.DEFAULT_RINGTONE_URI)), - isEnabled = controlsEnabled, + isEnabled = state.controlsEnabled, onClick = { requestSound(state.callSound, true) } ) radioListPref( title = DSLSettingsText.from(R.string.CustomNotificationsDialogFragment__vibrate), - isEnabled = controlsEnabled, + isEnabled = state.controlsEnabled, listItems = vibrateLabels, selected = state.callVibrateState.id, onSelected = { diff --git a/app/src/main/java/org/thoughtcrime/securesms/components/settings/conversation/sounds/custom/CustomNotificationsSettingsState.kt b/app/src/main/java/org/thoughtcrime/securesms/components/settings/conversation/sounds/custom/CustomNotificationsSettingsState.kt index 2c919652fb..38bfd01368 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/components/settings/conversation/sounds/custom/CustomNotificationsSettingsState.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/components/settings/conversation/sounds/custom/CustomNotificationsSettingsState.kt @@ -6,6 +6,7 @@ import org.thoughtcrime.securesms.database.RecipientDatabase data class CustomNotificationsSettingsState( val isInitialLoadComplete: Boolean = false, val hasCustomNotifications: Boolean = false, + val controlsEnabled: Boolean = false, val messageVibrateState: RecipientDatabase.VibrateState = RecipientDatabase.VibrateState.DEFAULT, val messageVibrateEnabled: Boolean = false, val messageSound: Uri? = null, diff --git a/app/src/main/java/org/thoughtcrime/securesms/components/settings/conversation/sounds/custom/CustomNotificationsSettingsViewModel.kt b/app/src/main/java/org/thoughtcrime/securesms/components/settings/conversation/sounds/custom/CustomNotificationsSettingsViewModel.kt index 5ca3e67454..355515f4ef 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/components/settings/conversation/sounds/custom/CustomNotificationsSettingsViewModel.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/components/settings/conversation/sounds/custom/CustomNotificationsSettingsViewModel.kt @@ -22,12 +22,19 @@ class CustomNotificationsSettingsViewModel( init { repository.initialize(recipientId) { - store.update { it.copy(isInitialLoadComplete = true) } + store.update { + it.copy( + isInitialLoadComplete = true, + controlsEnabled = (!NotificationChannels.supported() || it.hasCustomNotifications) + ) + } } store.update(Recipient.live(recipientId).liveData) { recipient, state -> + val recipientHasCustomNotifications = NotificationChannels.supported() && recipient.notificationChannel != null state.copy( - hasCustomNotifications = NotificationChannels.supported() && recipient.notificationChannel != null, + hasCustomNotifications = recipientHasCustomNotifications, + controlsEnabled = (!NotificationChannels.supported() || recipientHasCustomNotifications) && state.isInitialLoadComplete, messageSound = recipient.messageRingtone, messageVibrateState = recipient.messageVibrate, messageVibrateEnabled = when (recipient.messageVibrate) {