diff --git a/vector/src/main/java/im/vector/riotx/features/home/room/detail/timeline/item/AbsMessageItem.kt b/vector/src/main/java/im/vector/riotx/features/home/room/detail/timeline/item/AbsMessageItem.kt index cdcfceef..88697db4 100644 --- a/vector/src/main/java/im/vector/riotx/features/home/room/detail/timeline/item/AbsMessageItem.kt +++ b/vector/src/main/java/im/vector/riotx/features/home/room/detail/timeline/item/AbsMessageItem.kt @@ -23,6 +23,7 @@ import android.view.ViewGroup import android.view.ViewStub import android.widget.ImageView import android.widget.TextView +import androidx.annotation.IdRes import androidx.constraintlayout.helper.widget.Flow import androidx.core.view.children import androidx.core.view.isGone @@ -165,8 +166,7 @@ abstract class AbsMessageItem : BaseEventItem() { textView?.setTextColor(colorProvider.getMessageTextColor(informationData.sendState)) } - abstract class Holder : BaseHolder() { - + abstract class Holder(@IdRes stubId: Int) : BaseHolder(stubId) { val avatarImageView by bind(R.id.messageAvatarImageView) val memberNameView by bind(R.id.messageMemberNameView) val timeView by bind(R.id.messageTimeView) diff --git a/vector/src/main/java/im/vector/riotx/features/home/room/detail/timeline/item/BaseEventItem.kt b/vector/src/main/java/im/vector/riotx/features/home/room/detail/timeline/item/BaseEventItem.kt index 3a7d09e2..843f52b3 100644 --- a/vector/src/main/java/im/vector/riotx/features/home/room/detail/timeline/item/BaseEventItem.kt +++ b/vector/src/main/java/im/vector/riotx/features/home/room/detail/timeline/item/BaseEventItem.kt @@ -26,6 +26,9 @@ import im.vector.riotx.core.epoxy.VectorEpoxyModel import im.vector.riotx.core.platform.CheckableView import im.vector.riotx.core.utils.DimensionUtils.dpToPx +/** + * Children must override getViewType() + */ abstract class BaseEventItem : VectorEpoxyModel() { var avatarStyle: AvatarStyle = AvatarStyle.SMALL @@ -43,31 +46,18 @@ abstract class BaseEventItem : VectorEpoxyModel holder.checkableBackground.isChecked = highlighted } - - override fun getViewType(): Int { - return getStubType() - } - - abstract fun getStubType(): Int - - - abstract class BaseHolder : VectorEpoxyHolder() { - + abstract class BaseHolder(@IdRes val stubId: Int) : VectorEpoxyHolder() { val leftGuideline by bind(R.id.messageStartGuideline) val checkableBackground by bind(R.id.messageSelectedBackground) - @IdRes - abstract fun getStubId(): Int - override fun bindView(itemView: View) { super.bindView(itemView) inflateStub() } private fun inflateStub() { - view.findViewById(getStubId()).inflate() + view.findViewById(stubId).inflate() } - } companion object { diff --git a/vector/src/main/java/im/vector/riotx/features/home/room/detail/timeline/item/DefaultItem.kt b/vector/src/main/java/im/vector/riotx/features/home/room/detail/timeline/item/DefaultItem.kt index cc50493a..0b30facf 100644 --- a/vector/src/main/java/im/vector/riotx/features/home/room/detail/timeline/item/DefaultItem.kt +++ b/vector/src/main/java/im/vector/riotx/features/home/room/detail/timeline/item/DefaultItem.kt @@ -31,11 +31,9 @@ abstract class DefaultItem : BaseEventItem() { holder.messageView.text = text } - override fun getStubType(): Int = STUB_ID - - class Holder : BaseHolder() { - override fun getStubId(): Int = STUB_ID + override fun getViewType() = STUB_ID + class Holder : BaseHolder(STUB_ID) { val messageView by bind(R.id.stateMessageView) } diff --git a/vector/src/main/java/im/vector/riotx/features/home/room/detail/timeline/item/MergedHeaderItem.kt b/vector/src/main/java/im/vector/riotx/features/home/room/detail/timeline/item/MergedHeaderItem.kt index 0ad13fcf..4f26f9bb 100644 --- a/vector/src/main/java/im/vector/riotx/features/home/room/detail/timeline/item/MergedHeaderItem.kt +++ b/vector/src/main/java/im/vector/riotx/features/home/room/detail/timeline/item/MergedHeaderItem.kt @@ -46,7 +46,7 @@ data class MergedHeaderItem(private val isCollapsed: Boolean, return Holder() } - override fun getStubType(): Int = STUB_ID + override fun getViewType() = STUB_ID override fun bind(holder: Holder) { super.bind(holder) @@ -84,8 +84,7 @@ data class MergedHeaderItem(private val isCollapsed: Boolean, val avatarUrl: String? ) - class Holder : BaseHolder() { - override fun getStubId(): Int = STUB_ID + class Holder : BaseHolder(STUB_ID) { val expandView by bind(R.id.itemMergedExpandTextView) val summaryView by bind(R.id.itemMergedSummaryTextView) @@ -95,6 +94,6 @@ data class MergedHeaderItem(private val isCollapsed: Boolean, } companion object { - private val STUB_ID = R.id.messageContentMergedheaderStub + private const val STUB_ID = R.id.messageContentMergedheaderStub } } \ No newline at end of file diff --git a/vector/src/main/java/im/vector/riotx/features/home/room/detail/timeline/item/MessageFileItem.kt b/vector/src/main/java/im/vector/riotx/features/home/room/detail/timeline/item/MessageFileItem.kt index e63881e2..45e57b59 100644 --- a/vector/src/main/java/im/vector/riotx/features/home/room/detail/timeline/item/MessageFileItem.kt +++ b/vector/src/main/java/im/vector/riotx/features/home/room/detail/timeline/item/MessageFileItem.kt @@ -46,19 +46,16 @@ abstract class MessageFileItem : AbsMessageItem() { holder.filenameView.paintFlags = (holder.filenameView.paintFlags or Paint.UNDERLINE_TEXT_FLAG) } - override fun getStubType(): Int = STUB_ID - - class Holder : AbsMessageItem.Holder() { - override fun getStubId(): Int = STUB_ID + override fun getViewType() = STUB_ID + class Holder : AbsMessageItem.Holder(STUB_ID) { val fileLayout by bind(R.id.messageFileLayout) val fileImageView by bind(R.id.messageFileImageView) val filenameView by bind(R.id.messageFilenameView) - } companion object { - private val STUB_ID = R.id.messageContentFileStub + private const val STUB_ID = R.id.messageContentFileStub } } \ No newline at end of file diff --git a/vector/src/main/java/im/vector/riotx/features/home/room/detail/timeline/item/MessageImageVideoItem.kt b/vector/src/main/java/im/vector/riotx/features/home/room/detail/timeline/item/MessageImageVideoItem.kt index b3cbaab0..d551e44c 100644 --- a/vector/src/main/java/im/vector/riotx/features/home/room/detail/timeline/item/MessageImageVideoItem.kt +++ b/vector/src/main/java/im/vector/riotx/features/home/room/detail/timeline/item/MessageImageVideoItem.kt @@ -57,23 +57,17 @@ abstract class MessageImageVideoItem : AbsMessageItem(R.id.messageMediaUploadProgressLayout) val imageView by bind(R.id.messageThumbnailView) val playContentView by bind(R.id.messageMediaPlayView) val mediaContentView by bind(R.id.messageContentMedia) - } - companion object { - private val STUB_ID = R.id.messageContentMediaStub + private const val STUB_ID = R.id.messageContentMediaStub } - } \ No newline at end of file diff --git a/vector/src/main/java/im/vector/riotx/features/home/room/detail/timeline/item/MessageTextItem.kt b/vector/src/main/java/im/vector/riotx/features/home/room/detail/timeline/item/MessageTextItem.kt index 7b7d3cbf..b5074882 100644 --- a/vector/src/main/java/im/vector/riotx/features/home/room/detail/timeline/item/MessageTextItem.kt +++ b/vector/src/main/java/im/vector/riotx/features/home/room/detail/timeline/item/MessageTextItem.kt @@ -85,12 +85,13 @@ abstract class MessageTextItem : AbsMessageItem() { } } - override fun getStubType(): Int = R.id.messageContentTextStub + override fun getViewType() = STUB_ID - class Holder : AbsMessageItem.Holder() { + class Holder : AbsMessageItem.Holder(STUB_ID) { val messageView by bind(R.id.messageTextView) - override fun getStubId(): Int = R.id.messageContentTextStub - } + companion object { + private const val STUB_ID = R.id.messageContentTextStub + } } \ No newline at end of file diff --git a/vector/src/main/java/im/vector/riotx/features/home/room/detail/timeline/item/NoticeItem.kt b/vector/src/main/java/im/vector/riotx/features/home/room/detail/timeline/item/NoticeItem.kt index 08645357..2879073f 100644 --- a/vector/src/main/java/im/vector/riotx/features/home/room/detail/timeline/item/NoticeItem.kt +++ b/vector/src/main/java/im/vector/riotx/features/home/room/detail/timeline/item/NoticeItem.kt @@ -57,10 +57,9 @@ abstract class NoticeItem : BaseEventItem() { holder.view.setOnLongClickListener(longClickListener) } - override fun getStubType(): Int = STUB_ID + override fun getViewType() = STUB_ID - class Holder : BaseHolder() { - override fun getStubId(): Int = STUB_ID + class Holder : BaseHolder(STUB_ID) { val avatarImageView by bind(R.id.itemNoticeAvatarView) val noticeTextView by bind(R.id.itemNoticeTextView) } diff --git a/vector/src/main/java/im/vector/riotx/features/home/room/detail/timeline/item/RedactedMessageItem.kt b/vector/src/main/java/im/vector/riotx/features/home/room/detail/timeline/item/RedactedMessageItem.kt index f3979c54..88e2be2b 100644 --- a/vector/src/main/java/im/vector/riotx/features/home/room/detail/timeline/item/RedactedMessageItem.kt +++ b/vector/src/main/java/im/vector/riotx/features/home/room/detail/timeline/item/RedactedMessageItem.kt @@ -22,15 +22,13 @@ import im.vector.riotx.R @EpoxyModelClass(layout = R.layout.item_timeline_event_base) abstract class RedactedMessageItem : AbsMessageItem() { - override fun getStubType(): Int = STUB_ID + override fun getViewType() = STUB_ID override fun shouldShowReactionAtBottom() = false - class Holder : AbsMessageItem.Holder() { - override fun getStubId(): Int = STUB_ID - } + class Holder : AbsMessageItem.Holder(STUB_ID) companion object { - private val STUB_ID = R.id.messageContentRedactedStub + private const val STUB_ID = R.id.messageContentRedactedStub } -} \ No newline at end of file +}