mirror of
https://github.com/vector-im/element-android.git
synced 2024-11-17 02:15:17 +08:00
Reduce code smell
This commit is contained in:
parent
398e98ae85
commit
d42a3da5b7
@ -16,6 +16,7 @@
|
|||||||
|
|
||||||
package im.vector.app.features.home.room.detail.timeline.item
|
package im.vector.app.features.home.room.detail.timeline.item
|
||||||
|
|
||||||
|
import android.content.res.Resources
|
||||||
import android.text.SpannableString
|
import android.text.SpannableString
|
||||||
import android.text.method.MovementMethod
|
import android.text.method.MovementMethod
|
||||||
import android.text.style.ClickableSpan
|
import android.text.style.ClickableSpan
|
||||||
@ -25,7 +26,6 @@ import android.widget.ImageView
|
|||||||
import android.widget.TextView
|
import android.widget.TextView
|
||||||
import androidx.constraintlayout.widget.ConstraintLayout
|
import androidx.constraintlayout.widget.ConstraintLayout
|
||||||
import androidx.core.content.ContextCompat
|
import androidx.core.content.ContextCompat
|
||||||
import androidx.core.view.isGone
|
|
||||||
import androidx.core.view.isVisible
|
import androidx.core.view.isVisible
|
||||||
import androidx.core.view.updateLayoutParams
|
import androidx.core.view.updateLayoutParams
|
||||||
import com.airbnb.epoxy.EpoxyAttribute
|
import com.airbnb.epoxy.EpoxyAttribute
|
||||||
@ -39,6 +39,7 @@ import im.vector.app.features.home.room.detail.RoomDetailAction
|
|||||||
import im.vector.app.features.home.room.detail.timeline.TimelineEventController
|
import im.vector.app.features.home.room.detail.timeline.TimelineEventController
|
||||||
import im.vector.app.features.home.room.detail.timeline.tools.linkify
|
import im.vector.app.features.home.room.detail.timeline.tools.linkify
|
||||||
import me.gujun.android.span.span
|
import me.gujun.android.span.span
|
||||||
|
import org.matrix.android.sdk.api.extensions.orFalse
|
||||||
import org.matrix.android.sdk.api.session.room.model.RoomSummary
|
import org.matrix.android.sdk.api.session.room.model.RoomSummary
|
||||||
import org.matrix.android.sdk.api.session.room.model.localecho.RoomLocalEcho
|
import org.matrix.android.sdk.api.session.room.model.localecho.RoomLocalEcho
|
||||||
import org.matrix.android.sdk.api.util.toMatrixItem
|
import org.matrix.android.sdk.api.util.toMatrixItem
|
||||||
@ -62,44 +63,45 @@ abstract class MergedRoomCreationItem : BasedMergedItem<MergedRoomCreationItem.H
|
|||||||
}
|
}
|
||||||
|
|
||||||
private fun bindMergedViews(holder: Holder) {
|
private fun bindMergedViews(holder: Holder) {
|
||||||
val isLocalRoom = RoomLocalEcho.isLocalEchoId(attributes.roomSummary?.roomId.orEmpty())
|
holder.mergedView.isVisible = !attributes.isLocalRoom
|
||||||
holder.mergedView.isVisible = !isLocalRoom
|
|
||||||
if (attributes.isCollapsed) {
|
if (attributes.isCollapsed) {
|
||||||
// Take the oldest data
|
// Take the oldest data
|
||||||
val data = distinctMergeData.lastOrNull()
|
val data = distinctMergeData.lastOrNull()
|
||||||
|
holder.summaryView.text = getSummaryText(holder.expandView.resources, data)
|
||||||
val createdFromCurrentUser = data?.userId == attributes.currentUserId
|
|
||||||
val summary = if (createdFromCurrentUser) {
|
|
||||||
if (data?.isDirectRoom == true) {
|
|
||||||
holder.expandView.resources.getString(R.string.direct_room_created_summary_item_by_you)
|
|
||||||
} else {
|
|
||||||
holder.expandView.resources.getString(R.string.room_created_summary_item_by_you)
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
if (data?.isDirectRoom == true) {
|
|
||||||
holder.expandView.resources.getString(R.string.direct_room_created_summary_item, data.memberName)
|
|
||||||
} else {
|
|
||||||
holder.expandView.resources.getString(R.string.room_created_summary_item, data?.memberName ?: data?.userId ?: "")
|
|
||||||
}
|
|
||||||
}
|
|
||||||
holder.summaryView.text = summary
|
|
||||||
holder.summaryView.visibility = View.VISIBLE
|
holder.summaryView.visibility = View.VISIBLE
|
||||||
holder.avatarView.visibility = View.VISIBLE
|
|
||||||
if (data != null) {
|
if (data != null) {
|
||||||
holder.avatarView.visibility = View.VISIBLE
|
holder.avatarView.visibility = View.VISIBLE
|
||||||
attributes.avatarRenderer.render(data.toMatrixItem(), holder.avatarView)
|
attributes.avatarRenderer.render(data.toMatrixItem(), holder.avatarView)
|
||||||
} else {
|
} else {
|
||||||
holder.avatarView.visibility = View.GONE
|
holder.avatarView.visibility = View.GONE
|
||||||
}
|
}
|
||||||
|
|
||||||
bindEncryptionTile(holder, data)
|
bindEncryptionTile(holder, data)
|
||||||
} else {
|
} else {
|
||||||
holder.avatarView.visibility = View.INVISIBLE
|
holder.avatarView.visibility = View.INVISIBLE
|
||||||
holder.summaryView.visibility = View.GONE
|
holder.summaryView.visibility = View.GONE
|
||||||
holder.encryptionTile.isGone = true
|
holder.encryptionTile.visibility = View.GONE
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private fun getSummaryText(resources: Resources, data: Data?): String {
|
||||||
|
val createdFromCurrentUser = data?.userId == attributes.currentUserId
|
||||||
|
val isDirectRoom = data?.isDirectRoom.orFalse()
|
||||||
|
val summary = if (createdFromCurrentUser) {
|
||||||
|
if (isDirectRoom) {
|
||||||
|
resources.getString(R.string.direct_room_created_summary_item_by_you)
|
||||||
|
} else {
|
||||||
|
resources.getString(R.string.room_created_summary_item_by_you)
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
if (isDirectRoom) {
|
||||||
|
resources.getString(R.string.direct_room_created_summary_item, data?.memberName.orEmpty())
|
||||||
|
} else {
|
||||||
|
resources.getString(R.string.room_created_summary_item, data?.memberName.orEmpty())
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return summary
|
||||||
|
}
|
||||||
|
|
||||||
private fun bindEncryptionTile(holder: Holder, data: Data?) {
|
private fun bindEncryptionTile(holder: Holder, data: Data?) {
|
||||||
if (attributes.hasEncryptionEvent) {
|
if (attributes.hasEncryptionEvent) {
|
||||||
holder.encryptionTile.isVisible = true
|
holder.encryptionTile.isVisible = true
|
||||||
@ -108,17 +110,7 @@ abstract class MergedRoomCreationItem : BasedMergedItem<MergedRoomCreationItem.H
|
|||||||
}
|
}
|
||||||
if (attributes.isEncryptionAlgorithmSecure) {
|
if (attributes.isEncryptionAlgorithmSecure) {
|
||||||
holder.e2eTitleTextView.text = holder.expandView.resources.getString(R.string.encryption_enabled)
|
holder.e2eTitleTextView.text = holder.expandView.resources.getString(R.string.encryption_enabled)
|
||||||
holder.e2eTitleDescriptionView.text = when {
|
holder.e2eTitleDescriptionView.text = getE2ESecureDescriptionText(holder.expandView.resources, data)
|
||||||
data?.isDirectRoom == true && RoomLocalEcho.isLocalEchoId(data.roomId.orEmpty()) -> {
|
|
||||||
holder.expandView.resources.getString(R.string.direct_room_encryption_enabled_tile_description_future)
|
|
||||||
}
|
|
||||||
data?.isDirectRoom == true -> {
|
|
||||||
holder.expandView.resources.getString(R.string.direct_room_encryption_enabled_tile_description)
|
|
||||||
}
|
|
||||||
else -> {
|
|
||||||
holder.expandView.resources.getString(R.string.encryption_enabled_tile_description)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
holder.e2eTitleDescriptionView.textAlignment = View.TEXT_ALIGNMENT_CENTER
|
holder.e2eTitleDescriptionView.textAlignment = View.TEXT_ALIGNMENT_CENTER
|
||||||
holder.e2eTitleTextView.setCompoundDrawablesWithIntrinsicBounds(
|
holder.e2eTitleTextView.setCompoundDrawablesWithIntrinsicBounds(
|
||||||
ContextCompat.getDrawable(holder.view.context, R.drawable.ic_shield_black),
|
ContextCompat.getDrawable(holder.view.context, R.drawable.ic_shield_black),
|
||||||
@ -137,17 +129,32 @@ abstract class MergedRoomCreationItem : BasedMergedItem<MergedRoomCreationItem.H
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private fun getE2ESecureDescriptionText(resources: Resources, data: Data?): String {
|
||||||
|
val isDirectRoom = data?.isDirectRoom.orFalse()
|
||||||
|
return when {
|
||||||
|
isDirectRoom -> {
|
||||||
|
if (attributes.isLocalRoom) {
|
||||||
|
resources.getString(R.string.direct_room_encryption_enabled_tile_description_future)
|
||||||
|
} else {
|
||||||
|
resources.getString(R.string.direct_room_encryption_enabled_tile_description)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else -> {
|
||||||
|
resources.getString(R.string.encryption_enabled_tile_description)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
private fun bindCreationSummaryTile(holder: Holder) {
|
private fun bindCreationSummaryTile(holder: Holder) {
|
||||||
val roomSummary = attributes.roomSummary
|
val roomSummary = attributes.roomSummary
|
||||||
val roomDisplayName = roomSummary?.displayName
|
val roomDisplayName = roomSummary?.displayName
|
||||||
holder.roomNameText.setTextOrHide(roomDisplayName)
|
holder.roomNameText.setTextOrHide(roomDisplayName)
|
||||||
val isDirect = roomSummary?.isDirect == true
|
val isDirect = roomSummary?.isDirect == true
|
||||||
val isLocalRoom = RoomLocalEcho.isLocalEchoId(roomSummary?.roomId.orEmpty())
|
|
||||||
val membersCount = roomSummary?.otherMemberIds?.size ?: 0
|
val membersCount = roomSummary?.otherMemberIds?.size ?: 0
|
||||||
|
|
||||||
when {
|
when {
|
||||||
isDirect -> {
|
isDirect -> {
|
||||||
if (isLocalRoom) {
|
if (attributes.isLocalRoom) {
|
||||||
holder.roomDescriptionText.text = holder.view.resources.getString(
|
holder.roomDescriptionText.text = holder.view.resources.getString(
|
||||||
R.string.send_your_first_msg_to_invite,
|
R.string.send_your_first_msg_to_invite,
|
||||||
roomSummary?.displayName.orEmpty()
|
roomSummary?.displayName.orEmpty()
|
||||||
@ -261,5 +268,8 @@ abstract class MergedRoomCreationItem : BasedMergedItem<MergedRoomCreationItem.H
|
|||||||
val canChangeAvatar: Boolean = false,
|
val canChangeAvatar: Boolean = false,
|
||||||
val canChangeName: Boolean = false,
|
val canChangeName: Boolean = false,
|
||||||
val canChangeTopic: Boolean = false
|
val canChangeTopic: Boolean = false
|
||||||
) : BasedMergedItem.Attributes
|
) : BasedMergedItem.Attributes {
|
||||||
|
|
||||||
|
val isLocalRoom = RoomLocalEcho.isLocalEchoId(roomSummary?.roomId.orEmpty())
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user