mirror of
https://github.com/element-hq/element-android
synced 2024-11-28 21:48:50 +03:00
change notification state options as outlined in v2
This commit is contained in:
parent
90e04d4358
commit
57c32502e5
3 changed files with 27 additions and 9 deletions
|
@ -41,11 +41,11 @@ class RoomNotificationSettingsController @Inject constructor() : TypedEpoxyContr
|
||||||
}
|
}
|
||||||
|
|
||||||
@StringRes
|
@StringRes
|
||||||
private fun titleForNotificationState(notificationState: RoomNotificationState) = when(notificationState) {
|
private fun titleForNotificationState(notificationState: RoomNotificationState): Int? = when(notificationState) {
|
||||||
RoomNotificationState.ALL_MESSAGES_NOISY -> R.string.room_settings_all_messages_noisy
|
RoomNotificationState.ALL_MESSAGES_NOISY -> R.string.room_settings_all_messages
|
||||||
RoomNotificationState.ALL_MESSAGES -> R.string.room_settings_all_messages
|
RoomNotificationState.MENTIONS_ONLY -> R.string.room_settings_mention_and_keyword_only
|
||||||
RoomNotificationState.MENTIONS_ONLY -> R.string.room_settings_mention_only
|
RoomNotificationState.MUTE -> R.string.room_settings_none
|
||||||
RoomNotificationState.MUTE -> R.string.room_settings_mute
|
else -> null
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun buildModels(data: RoomNotificationSettingsViewState?) {
|
override fun buildModels(data: RoomNotificationSettingsViewState?) {
|
||||||
|
@ -61,7 +61,7 @@ class RoomNotificationSettingsController @Inject constructor() : TypedEpoxyContr
|
||||||
radioButtonItem {
|
radioButtonItem {
|
||||||
id(notificationState.name)
|
id(notificationState.name)
|
||||||
titleRes(title)
|
titleRes(title)
|
||||||
selected(data.notificationState() == notificationState)
|
selected(data.notificationStateMapped() == notificationState)
|
||||||
listener {
|
listener {
|
||||||
host.callback?.didSelectRoomNotificationState(notificationState)
|
host.callback?.didSelectRoomNotificationState(notificationState)
|
||||||
}
|
}
|
||||||
|
|
|
@ -18,6 +18,7 @@ package im.vector.app.features.roomprofile.notifications
|
||||||
|
|
||||||
import com.airbnb.mvrx.Async
|
import com.airbnb.mvrx.Async
|
||||||
import com.airbnb.mvrx.MvRxState
|
import com.airbnb.mvrx.MvRxState
|
||||||
|
import com.airbnb.mvrx.Success
|
||||||
import com.airbnb.mvrx.Uninitialized
|
import com.airbnb.mvrx.Uninitialized
|
||||||
import im.vector.app.features.roomprofile.RoomProfileArgs
|
import im.vector.app.features.roomprofile.RoomProfileArgs
|
||||||
import org.matrix.android.sdk.api.session.room.model.RoomSummary
|
import org.matrix.android.sdk.api.session.room.model.RoomSummary
|
||||||
|
@ -30,7 +31,6 @@ data class RoomNotificationSettingsViewState(
|
||||||
val roomEncrypted: Boolean = false,
|
val roomEncrypted: Boolean = false,
|
||||||
val notificationState: Async<RoomNotificationState> = Uninitialized,
|
val notificationState: Async<RoomNotificationState> = Uninitialized,
|
||||||
) : MvRxState {
|
) : MvRxState {
|
||||||
|
|
||||||
constructor(args: RoomProfileArgs) : this(roomId = args.roomId)
|
constructor(args: RoomProfileArgs) : this(roomId = args.roomId)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -39,10 +39,26 @@ data class AvatarData (
|
||||||
val avatarUrl: String
|
val avatarUrl: String
|
||||||
)
|
)
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Used to map this old room notification settings to the new options in v2.
|
||||||
|
*/
|
||||||
|
val RoomNotificationSettingsViewState.notificationStateMapped: Async<RoomNotificationState>
|
||||||
|
get() {
|
||||||
|
if ((roomEncrypted && notificationState() == RoomNotificationState.MENTIONS_ONLY) || notificationState() == RoomNotificationState.ALL_MESSAGES) {
|
||||||
|
/** if in an encrypted room, mentions notifications are not supported so show "All Messages" as selected.
|
||||||
|
* Also in the new settings there is no notion of notifications without sound so it maps to noisy also
|
||||||
|
*/
|
||||||
|
return Success(RoomNotificationState.ALL_MESSAGES_NOISY)
|
||||||
|
}
|
||||||
|
return notificationState
|
||||||
|
}
|
||||||
|
/**
|
||||||
|
* Used to enumerate the new settings in notification settings v2. Notifications without sound and mentions in encrypted rooms not supported.
|
||||||
|
*/
|
||||||
val RoomNotificationSettingsViewState.notificationOptions: List<RoomNotificationState>
|
val RoomNotificationSettingsViewState.notificationOptions: List<RoomNotificationState>
|
||||||
get() {
|
get() {
|
||||||
return if (roomEncrypted) {
|
return if (roomEncrypted) {
|
||||||
listOf(RoomNotificationState.ALL_MESSAGES_NOISY, RoomNotificationState.ALL_MESSAGES, RoomNotificationState.MUTE)
|
listOf(RoomNotificationState.ALL_MESSAGES_NOISY, RoomNotificationState.MUTE)
|
||||||
} else
|
} else
|
||||||
RoomNotificationState.values().asList()
|
listOf(RoomNotificationState.ALL_MESSAGES_NOISY, RoomNotificationState.MENTIONS_ONLY, RoomNotificationState.MUTE)
|
||||||
}
|
}
|
||||||
|
|
|
@ -1037,6 +1037,8 @@
|
||||||
<string name="room_settings_all_messages">All messages</string>
|
<string name="room_settings_all_messages">All messages</string>
|
||||||
<string name="room_settings_mention_only">Mentions only</string>
|
<string name="room_settings_mention_only">Mentions only</string>
|
||||||
<string name="room_settings_mute">Mute</string>
|
<string name="room_settings_mute">Mute</string>
|
||||||
|
<string name="room_settings_mention_and_keyword_only">Mentions & Keywords only</string>
|
||||||
|
<string name="room_settings_none">None</string>
|
||||||
<string name="room_settings_favourite">Favourite</string>
|
<string name="room_settings_favourite">Favourite</string>
|
||||||
<string name="room_settings_de_prioritize">De-prioritize</string>
|
<string name="room_settings_de_prioritize">De-prioritize</string>
|
||||||
<string name="room_settings_direct_chat">Direct Chat</string>
|
<string name="room_settings_direct_chat">Direct Chat</string>
|
||||||
|
|
Loading…
Reference in a new issue