Cleanup and link

This commit is contained in:
David Langley 2021-08-11 14:31:00 +01:00
parent 92a44cd9d6
commit 00275d9367
11 changed files with 51 additions and 39 deletions

View file

@ -723,7 +723,6 @@ interface FragmentModule {
@FragmentKey(RoomNotificationSettingsFragment::class) @FragmentKey(RoomNotificationSettingsFragment::class)
fun bindRoomNotificationSettingsFragment(fragment: RoomNotificationSettingsFragment): Fragment fun bindRoomNotificationSettingsFragment(fragment: RoomNotificationSettingsFragment): Fragment
@Binds @Binds
@IntoMap @IntoMap
@FragmentKey(SearchFragment::class) @FragmentKey(SearchFragment::class)

View file

@ -36,8 +36,6 @@ abstract class NotificationSettingsFooterItem : VectorEpoxyModel<NotificationSet
override fun bind(holder: Holder) { override fun bind(holder: Holder) {
super.bind(holder) super.bind(holder)
val accountSettingsString = holder.view.context.getString(R.string.room_settings_room_notifications_account_settings) val accountSettingsString = holder.view.context.getString(R.string.room_settings_room_notifications_account_settings)
val manageNotificationsString = StringBuilder(holder.view.context.getString(R.string.room_settings_room_notifications_manage_notifications, accountSettingsString)) val manageNotificationsString = StringBuilder(holder.view.context.getString(R.string.room_settings_room_notifications_manage_notifications, accountSettingsString))
if (encrypted) { if (encrypted) {

View file

@ -28,7 +28,6 @@ import im.vector.app.core.epoxy.VectorEpoxyHolder
import im.vector.app.core.epoxy.VectorEpoxyModel import im.vector.app.core.epoxy.VectorEpoxyModel
import im.vector.app.core.epoxy.onClick import im.vector.app.core.epoxy.onClick
@EpoxyModelClass(layout = R.layout.item_radio) @EpoxyModelClass(layout = R.layout.item_radio)
abstract class RadioButtonItem : VectorEpoxyModel<RadioButtonItem.Holder>() { abstract class RadioButtonItem : VectorEpoxyModel<RadioButtonItem.Holder>() {

View file

@ -36,8 +36,9 @@ abstract class TextHeaderItem : VectorEpoxyModel<TextHeaderItem.Holder>() {
override fun bind(holder: Holder) { override fun bind(holder: Holder) {
super.bind(holder) super.bind(holder)
if (textRes != null) { val textResource = textRes
holder.textView.setText(textRes!!) if (textResource != null) {
holder.textView.setText(textResource)
} else { } else {
holder.textView.text = text holder.textView.text = text
} }

View file

@ -483,7 +483,6 @@ class RoomListFragment @Inject constructor(
bottomSheet.show(childFragmentManager, "ROOM_LIST_QUICK_ACTIONS") bottomSheet.show(childFragmentManager, "ROOM_LIST_QUICK_ACTIONS")
return true return true
} }

View file

@ -0,0 +1,24 @@
/*
* Copyright (c) 2021 New Vector Ltd
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package im.vector.app.features.home.room.list.actions
import im.vector.app.features.roomprofile.notifications.RoomNotificationSettingsViewState
data class RoomListQuickActionViewState(
val roomListActionsArgs: RoomListActionsArgs,
val notificationSettingsViewState: RoomNotificationSettingsViewState
)

View file

@ -34,7 +34,6 @@ import im.vector.app.features.navigation.Navigator
import im.vector.app.features.roomprofile.notifications.RoomNotificationSettingsAction import im.vector.app.features.roomprofile.notifications.RoomNotificationSettingsAction
import im.vector.app.features.roomprofile.notifications.RoomNotificationSettingsViewEvents import im.vector.app.features.roomprofile.notifications.RoomNotificationSettingsViewEvents
import im.vector.app.features.roomprofile.notifications.RoomNotificationSettingsViewModel import im.vector.app.features.roomprofile.notifications.RoomNotificationSettingsViewModel
import im.vector.app.features.roomprofile.notifications.RoomNotificationSettingsViewState
import kotlinx.parcelize.Parcelize import kotlinx.parcelize.Parcelize
import org.matrix.android.sdk.api.session.room.notification.RoomNotificationState import org.matrix.android.sdk.api.session.room.notification.RoomNotificationState
import javax.inject.Inject import javax.inject.Inject
@ -51,11 +50,6 @@ data class RoomListActionsArgs(
} }
} }
data class RoomListQuickActionViewState(
val roomListActionsArgs: RoomListActionsArgs,
val notificationSettingsViewState: RoomNotificationSettingsViewState
)
/** /**
* Bottom sheet fragment that shows room information with list of contextual actions * Bottom sheet fragment that shows room information with list of contextual actions
*/ */
@ -98,7 +92,7 @@ class RoomListQuickActionsBottomSheet :
roomListActionsEpoxyController.listener = this roomListActionsEpoxyController.listener = this
viewModel.observeViewEvents { viewModel.observeViewEvents {
when(it){ when (it) {
is RoomNotificationSettingsViewEvents.Failure -> listener?.handleFailure(it.throwable) is RoomNotificationSettingsViewEvents.Failure -> listener?.handleFailure(it.throwable)
} }
} }

View file

@ -43,20 +43,12 @@ class RoomListQuickActionsEpoxyController @Inject constructor(
var listener: Listener? = null var listener: Listener? = null
@StringRes
private fun titleForNotificationState(notificationState: RoomNotificationState): Int? = when(notificationState) {
RoomNotificationState.ALL_MESSAGES_NOISY -> R.string.room_settings_all_messages
RoomNotificationState.MENTIONS_ONLY -> R.string.room_settings_mention_and_keyword_only
RoomNotificationState.MUTE -> R.string.room_settings_none
else -> null
}
override fun buildModels(state: RoomListQuickActionViewState) { override fun buildModels(state: RoomListQuickActionViewState) {
val notificationViewState = state.notificationSettingsViewState val notificationViewState = state.notificationSettingsViewState
val roomSummary = notificationViewState.roomSummary() ?: return val roomSummary = notificationViewState.roomSummary() ?: return
val host = this val host = this
val showFull = state.roomListActionsArgs.mode == RoomListActionsArgs.Mode.FULL val showFull = state.roomListActionsArgs.mode == RoomListActionsArgs.Mode.FULL
var isV2 = BuildConfig.USE_NOTIFICATION_SETTINGS_V2 val isV2 = BuildConfig.USE_NOTIFICATION_SETTINGS_V2
if (showFull || isV2) { if (showFull || isV2) {
// Preview, favorite, settings // Preview, favorite, settings
@ -102,9 +94,15 @@ class RoomListQuickActionsEpoxyController @Inject constructor(
if (showFull || isV2) { if (showFull || isV2) {
RoomListQuickActionsSharedAction.Leave(roomSummary.roomId, showIcon = !isV2).toBottomSheetItem(5) RoomListQuickActionsSharedAction.Leave(roomSummary.roomId, showIcon = !isV2).toBottomSheetItem(5)
} }
} }
@StringRes
private fun titleForNotificationState(notificationState: RoomNotificationState): Int? = when (notificationState) {
RoomNotificationState.ALL_MESSAGES_NOISY -> R.string.room_settings_all_messages
RoomNotificationState.MENTIONS_ONLY -> R.string.room_settings_mention_and_keyword_only
RoomNotificationState.MUTE -> R.string.room_settings_none
else -> null
}
private fun RoomListQuickActionsSharedAction.toBottomSheetItem(index: Int, roomNotificationState: RoomNotificationState? = null) { private fun RoomListQuickActionsSharedAction.toBottomSheetItem(index: Int, roomNotificationState: RoomNotificationState? = null) {
val host = this@RoomListQuickActionsEpoxyController val host = this@RoomListQuickActionsEpoxyController
val selected = when (this) { val selected = when (this) {
@ -117,9 +115,9 @@ class RoomListQuickActionsEpoxyController @Inject constructor(
return bottomSheetActionItem { return bottomSheetActionItem {
id("action_$index") id("action_$index")
selected(selected) selected(selected)
if(iconResId != null){ if (iconResId != null) {
iconRes(iconResId) iconRes(iconResId)
} else{ } else {
showIcon(false) showIcon(false)
} }
textRes(titleRes) textRes(titleRes)

View file

@ -21,7 +21,6 @@ import androidx.annotation.StringRes
import im.vector.app.R import im.vector.app.R
import im.vector.app.core.platform.VectorSharedAction import im.vector.app.core.platform.VectorSharedAction
sealed class RoomListQuickActionsSharedAction( sealed class RoomListQuickActionsSharedAction(
@StringRes val titleRes: Int, @StringRes val titleRes: Int,
@DrawableRes val iconResId: Int?, @DrawableRes val iconResId: Int?,
@ -61,7 +60,7 @@ sealed class RoomListQuickActionsSharedAction(
R.string.room_list_quick_actions_favorite_add, R.string.room_list_quick_actions_favorite_add,
R.drawable.ic_star_24dp) R.drawable.ic_star_24dp)
data class Leave(val roomId: String, val showIcon: Boolean=true) : RoomListQuickActionsSharedAction( data class Leave(val roomId: String, val showIcon: Boolean = true) : RoomListQuickActionsSharedAction(
R.string.room_list_quick_actions_leave, R.string.room_list_quick_actions_leave,
if (showIcon) R.drawable.ic_room_actions_leave else null, if (showIcon) R.drawable.ic_room_actions_leave else null,
true true

View file

@ -38,14 +38,6 @@ class RoomNotificationSettingsController @Inject constructor() : TypedEpoxyContr
setData(null) setData(null)
} }
@StringRes
private fun titleForNotificationState(notificationState: RoomNotificationState): Int? = when(notificationState) {
RoomNotificationState.ALL_MESSAGES_NOISY -> R.string.room_settings_all_messages
RoomNotificationState.MENTIONS_ONLY -> R.string.room_settings_mention_and_keyword_only
RoomNotificationState.MUTE -> R.string.room_settings_none
else -> null
}
override fun buildModels(data: RoomNotificationSettingsViewState?) { override fun buildModels(data: RoomNotificationSettingsViewState?) {
val host = this val host = this
data ?: return data ?: return
@ -73,4 +65,12 @@ class RoomNotificationSettingsController @Inject constructor() : TypedEpoxyContr
} }
} }
} }
@StringRes
private fun titleForNotificationState(notificationState: RoomNotificationState): Int? = when (notificationState) {
RoomNotificationState.ALL_MESSAGES_NOISY -> R.string.room_settings_all_messages
RoomNotificationState.MENTIONS_ONLY -> R.string.room_settings_mention_and_keyword_only
RoomNotificationState.MUTE -> R.string.room_settings_none
else -> null
}
} }

View file

@ -30,13 +30,13 @@ data class RoomNotificationSettingsViewState(
val roomSummary: Async<RoomSummary> = Uninitialized, val roomSummary: Async<RoomSummary> = Uninitialized,
val isLoading: Boolean = false, val isLoading: Boolean = false,
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)
constructor(args: RoomListActionsArgs) : this(roomId = args.roomId) constructor(args: RoomListActionsArgs) : this(roomId = args.roomId)
} }
data class AvatarData ( data class AvatarData(
val displayName: String, val displayName: String,
val avatarUrl: String val avatarUrl: String
) )
@ -61,6 +61,7 @@ val RoomNotificationSettingsViewState.notificationOptions: List<RoomNotification
get() { get() {
return if (roomEncrypted) { return if (roomEncrypted) {
listOf(RoomNotificationState.ALL_MESSAGES_NOISY, RoomNotificationState.MUTE) listOf(RoomNotificationState.ALL_MESSAGES_NOISY, RoomNotificationState.MUTE)
} else } else {
listOf(RoomNotificationState.ALL_MESSAGES_NOISY, RoomNotificationState.MENTIONS_ONLY, RoomNotificationState.MUTE) listOf(RoomNotificationState.ALL_MESSAGES_NOISY, RoomNotificationState.MENTIONS_ONLY, RoomNotificationState.MUTE)
}
} }