Make TimelineItemAction an enum class.

This commit is contained in:
Benoit Marty 2024-12-17 11:32:23 +01:00
parent 52091cb4ae
commit dc1a7b80ff
2 changed files with 21 additions and 21 deletions

View file

@ -14,26 +14,26 @@ import io.element.android.libraries.designsystem.icons.CompoundDrawables
import io.element.android.libraries.ui.strings.CommonStrings import io.element.android.libraries.ui.strings.CommonStrings
@Immutable @Immutable
sealed class TimelineItemAction( enum class TimelineItemAction(
@StringRes val titleRes: Int, @StringRes val titleRes: Int,
@DrawableRes val icon: Int, @DrawableRes val icon: Int,
val destructive: Boolean = false val destructive: Boolean = false
) { ) {
data object ViewInTimeline : TimelineItemAction(CommonStrings.action_view_in_timeline, CompoundDrawables.ic_compound_visibility_on) ViewInTimeline(CommonStrings.action_view_in_timeline, CompoundDrawables.ic_compound_visibility_on),
data object Forward : TimelineItemAction(CommonStrings.action_forward, CompoundDrawables.ic_compound_forward) Forward(CommonStrings.action_forward, CompoundDrawables.ic_compound_forward),
data object CopyText : TimelineItemAction(CommonStrings.action_copy_text, CompoundDrawables.ic_compound_copy) CopyText(CommonStrings.action_copy_text, CompoundDrawables.ic_compound_copy),
data object CopyCaption : TimelineItemAction(CommonStrings.action_copy_caption, CompoundDrawables.ic_compound_copy) CopyCaption(CommonStrings.action_copy_caption, CompoundDrawables.ic_compound_copy),
data object CopyLink : TimelineItemAction(CommonStrings.action_copy_link_to_message, CompoundDrawables.ic_compound_link) CopyLink(CommonStrings.action_copy_link_to_message, CompoundDrawables.ic_compound_link),
data object Redact : TimelineItemAction(CommonStrings.action_remove, CompoundDrawables.ic_compound_delete, destructive = true) Redact(CommonStrings.action_remove, CompoundDrawables.ic_compound_delete, destructive = true),
data object Reply : TimelineItemAction(CommonStrings.action_reply, CompoundDrawables.ic_compound_reply) Reply(CommonStrings.action_reply, CompoundDrawables.ic_compound_reply),
data object ReplyInThread : TimelineItemAction(CommonStrings.action_reply_in_thread, CompoundDrawables.ic_compound_reply) ReplyInThread(CommonStrings.action_reply_in_thread, CompoundDrawables.ic_compound_reply),
data object Edit : TimelineItemAction(CommonStrings.action_edit, CompoundDrawables.ic_compound_edit) Edit(CommonStrings.action_edit, CompoundDrawables.ic_compound_edit),
data object EditCaption : TimelineItemAction(CommonStrings.action_edit_caption, CompoundDrawables.ic_compound_edit) EditCaption(CommonStrings.action_edit_caption, CompoundDrawables.ic_compound_edit),
data object AddCaption : TimelineItemAction(CommonStrings.action_add_caption, CompoundDrawables.ic_compound_edit) AddCaption(CommonStrings.action_add_caption, CompoundDrawables.ic_compound_edit),
data object RemoveCaption : TimelineItemAction(CommonStrings.action_remove_caption, CompoundDrawables.ic_compound_close, destructive = true) RemoveCaption(CommonStrings.action_remove_caption, CompoundDrawables.ic_compound_close, destructive = true),
data object ViewSource : TimelineItemAction(CommonStrings.action_view_source, CompoundDrawables.ic_compound_code) ViewSource(CommonStrings.action_view_source, CompoundDrawables.ic_compound_code),
data object ReportContent : TimelineItemAction(CommonStrings.action_report_content, CompoundDrawables.ic_compound_chat_problem, destructive = true) ReportContent(CommonStrings.action_report_content, CompoundDrawables.ic_compound_chat_problem, destructive = true),
data object EndPoll : TimelineItemAction(CommonStrings.action_end_poll, CompoundDrawables.ic_compound_polls_end) EndPoll(CommonStrings.action_end_poll, CompoundDrawables.ic_compound_polls_end),
data object Pin : TimelineItemAction(CommonStrings.action_pin, CompoundDrawables.ic_compound_pin) Pin(CommonStrings.action_pin, CompoundDrawables.ic_compound_pin),
data object Unpin : TimelineItemAction(CommonStrings.action_unpin, CompoundDrawables.ic_compound_unpin) Unpin(CommonStrings.action_unpin, CompoundDrawables.ic_compound_unpin),
} }

View file

@ -14,9 +14,9 @@ class PinnedMessagesListTimelineActionPostProcessor : TimelineItemActionPostProc
override fun process(actions: List<TimelineItemAction>): List<TimelineItemAction> { override fun process(actions: List<TimelineItemAction>): List<TimelineItemAction> {
return buildList { return buildList {
add(TimelineItemAction.ViewInTimeline) add(TimelineItemAction.ViewInTimeline)
actions.firstOrNull { it is TimelineItemAction.Unpin }?.let(::add) actions.firstOrNull { it == TimelineItemAction.Unpin }?.let(::add)
actions.firstOrNull { it is TimelineItemAction.Forward }?.let(::add) actions.firstOrNull { it == TimelineItemAction.Forward }?.let(::add)
actions.firstOrNull { it is TimelineItemAction.ViewSource }?.let(::add) actions.firstOrNull { it == TimelineItemAction.ViewSource }?.let(::add)
} }
} }
} }