diff --git a/vector/src/main/java/im/vector/riotx/core/epoxy/profiles/ProfileActionItem.kt b/vector/src/main/java/im/vector/riotx/core/epoxy/profiles/ProfileActionItem.kt index 0a7dcb0de7..404570568d 100644 --- a/vector/src/main/java/im/vector/riotx/core/epoxy/profiles/ProfileActionItem.kt +++ b/vector/src/main/java/im/vector/riotx/core/epoxy/profiles/ProfileActionItem.kt @@ -43,11 +43,14 @@ abstract class ProfileActionItem : VectorEpoxyModel() @EpoxyAttribute var destructive: Boolean = false @EpoxyAttribute - lateinit var listener: View.OnClickListener + var listener: View.OnClickListener? = null override fun bind(holder: Holder) { super.bind(holder) holder.view.setOnClickListener(listener) + if (listener == null) { + holder.view.isClickable = false + } holder.editable.isVisible = editable holder.title.text = title val tintColor = if (destructive) { diff --git a/vector/src/main/java/im/vector/riotx/core/epoxy/profiles/ProfileItemExtensions.kt b/vector/src/main/java/im/vector/riotx/core/epoxy/profiles/ProfileItemExtensions.kt index 32060f577d..ab68bdc4ce 100644 --- a/vector/src/main/java/im/vector/riotx/core/epoxy/profiles/ProfileItemExtensions.kt +++ b/vector/src/main/java/im/vector/riotx/core/epoxy/profiles/ProfileItemExtensions.kt @@ -19,6 +19,7 @@ package im.vector.riotx.core.epoxy.profiles import androidx.annotation.DrawableRes import com.airbnb.epoxy.EpoxyController +import im.vector.riotx.core.epoxy.ClickListener import im.vector.riotx.core.epoxy.dividerItem fun EpoxyController.buildProfileSection(title: String) { @@ -37,7 +38,7 @@ fun EpoxyController.buildProfileAction( @DrawableRes icon: Int = 0, destructive: Boolean = false, divider: Boolean = true, - action: () -> Unit + action: ClickListener? = null ) { profileActionItem { iconRes(icon) @@ -47,7 +48,7 @@ fun EpoxyController.buildProfileAction( destructive(destructive) title(title) listener { _ -> - action() + action?.invoke() } } diff --git a/vector/src/main/java/im/vector/riotx/features/roomprofile/settings/RoomSettingsController.kt b/vector/src/main/java/im/vector/riotx/features/roomprofile/settings/RoomSettingsController.kt index b9a20ef915..fdd127e68b 100644 --- a/vector/src/main/java/im/vector/riotx/features/roomprofile/settings/RoomSettingsController.kt +++ b/vector/src/main/java/im/vector/riotx/features/roomprofile/settings/RoomSettingsController.kt @@ -49,15 +49,13 @@ class RoomSettingsController @Inject constructor( stringProvider.getString(R.string.settings) ) - // Only enable encryption for the moment if (roomSummary.isEncrypted) { buildProfileAction( id = "encryption", title = stringProvider.getString(R.string.room_settings_addresses_e2e_enabled), dividerColor = dividerColor, divider = false, - editable = false, - action = {} + editable = false ) } else { buildProfileAction( diff --git a/vector/src/main/java/im/vector/riotx/features/roomprofile/settings/RoomSettingsFragment.kt b/vector/src/main/java/im/vector/riotx/features/roomprofile/settings/RoomSettingsFragment.kt index d75821b7da..498292bd52 100644 --- a/vector/src/main/java/im/vector/riotx/features/roomprofile/settings/RoomSettingsFragment.kt +++ b/vector/src/main/java/im/vector/riotx/features/roomprofile/settings/RoomSettingsFragment.kt @@ -18,6 +18,7 @@ package im.vector.riotx.features.roomprofile.settings import android.os.Bundle import android.view.View +import androidx.appcompat.app.AlertDialog import androidx.core.view.isVisible import com.airbnb.mvrx.Loading import com.airbnb.mvrx.args @@ -70,7 +71,14 @@ class RoomSettingsFragment @Inject constructor( } override fun onEnableEncryptionClicked() { - viewModel.handle(RoomSettingsAction.EnableEncryption) + AlertDialog.Builder(requireActivity()) + .setTitle(R.string.room_settings_enable_encryption_dialog_title) + .setMessage(R.string.room_settings_enable_encryption_dialog_content) + .setNegativeButton(R.string.cancel, null) + .setPositiveButton(R.string.room_settings_enable_encryption_dialog_submit) { _, _ -> + viewModel.handle(RoomSettingsAction.EnableEncryption) + } + .show() } private fun renderRoomSummary(state: RoomSettingsViewState) { diff --git a/vector/src/main/res/values/strings_riotX.xml b/vector/src/main/res/values/strings_riotX.xml index 453235e0ce..4ca908128e 100644 --- a/vector/src/main/res/values/strings_riotX.xml +++ b/vector/src/main/res/values/strings_riotX.xml @@ -41,6 +41,10 @@ Message editor Enable end-to-end encryption - Warning: once encryption is enabled in a room, it cannot be disabled + Once enabled, encryption cannot be disabled. + + Enable encryption? + Once enabled, encryption for a room cannot be disabled. Messages sent in an encrypted room cannot be seen by the server, only by the participants of the room. Enabling encryption may prevent many bots and bridges from working correctly. + Enable encryption