diff --git a/matrix-sdk-android/src/main/java/org/matrix/android/sdk/api/util/MatrixItem.kt b/matrix-sdk-android/src/main/java/org/matrix/android/sdk/api/util/MatrixItem.kt index 0fd96798c8c..7ca591d9533 100644 --- a/matrix-sdk-android/src/main/java/org/matrix/android/sdk/api/util/MatrixItem.kt +++ b/matrix-sdk-android/src/main/java/org/matrix/android/sdk/api/util/MatrixItem.kt @@ -142,7 +142,7 @@ sealed class MatrixItem( is RoomAliasItem -> roomDisplayName ?: displayName else -> displayName } - return (displayName?.takeIf { it.isNotBlank() } ?: id) + return (displayName?.takeIf { it.isNotBlank() }?.replace("\\[TG] ".toRegex(), "")?.replace("\\$".toRegex(), "") ?: id) .let { dn -> var startIndex = 0 val initial = dn[startIndex] diff --git a/vector/src/main/java/im/vector/app/features/displayname/Extension.kt b/vector/src/main/java/im/vector/app/features/displayname/Extension.kt index 4069b41a0c3..f286fd0294f 100644 --- a/vector/src/main/java/im/vector/app/features/displayname/Extension.kt +++ b/vector/src/main/java/im/vector/app/features/displayname/Extension.kt @@ -24,8 +24,26 @@ fun MatrixItem.getBestName(): String { // Best name is the id, and we keep the displayName of the room for the case we need the first letter id } else { - displayName +// displayName +// ?.takeIf { it.isNotBlank() }?.replace("[TG] ","")?.replace("$","") +// ?: VectorMatrixItemDisplayNameFallbackProvider.getDefaultName(this).replace("[TG] ","").replace("$","") + val modifiedDisplayName = displayName ?.takeIf { it.isNotBlank() } - ?: VectorMatrixItemDisplayNameFallbackProvider.getDefaultName(this) + ?.let { + when { + it.startsWith("[TG] ") -> { + it.replaceFirst("[TG] ", "") // Remove [TG] from the beginning + } + it.startsWith("$") -> { + it.replace("$", "") // Remove $ from the string + } + else -> it + } + } + ?: VectorMatrixItemDisplayNameFallbackProvider.getDefaultName(this).replace("[TG] ","").replace("$","") + + modifiedDisplayName.replace("[TG] ", "").replace("$","") + } + } diff --git a/vector/src/main/java/im/vector/app/features/home/AvatarRenderer.kt b/vector/src/main/java/im/vector/app/features/home/AvatarRenderer.kt index 7214db41efe..ae45ffe6e10 100644 --- a/vector/src/main/java/im/vector/app/features/home/AvatarRenderer.kt +++ b/vector/src/main/java/im/vector/app/features/home/AvatarRenderer.kt @@ -147,7 +147,7 @@ class AvatarRenderer @Inject constructor( val matrixItem = MatrixItem.UserItem( // Need an id starting with @ id = profileInfo.matrixId, - displayName = profileInfo.displayName, + displayName = profileInfo.displayName?.replace("[TG] ","")?.replace("$",""), ) val placeholder = getPlaceholderDrawable(matrixItem) diff --git a/vector/src/main/java/im/vector/app/features/home/room/detail/TimelineFragment.kt b/vector/src/main/java/im/vector/app/features/home/room/detail/TimelineFragment.kt index feaad386cb5..1e766810930 100644 --- a/vector/src/main/java/im/vector/app/features/home/room/detail/TimelineFragment.kt +++ b/vector/src/main/java/im/vector/app/features/home/room/detail/TimelineFragment.kt @@ -1253,7 +1253,27 @@ class TimelineFragment : views.includeRoomToolbar.roomToolbarContentView.isClickable = false } else { views.includeRoomToolbar.roomToolbarContentView.isClickable = roomSummary.membership == Membership.JOIN - views.includeRoomToolbar.roomToolbarTitleView.text = roomSummary.displayName +// views.includeRoomToolbar.roomToolbarTitleView.text = roomSummary.displayName.replace("[TG] ","").replace("$","") + if (roomSummary.displayName.startsWith("[TG]") && roomSummary.displayName.startsWith("$")) { + // Remove [TG] from the beginning + val modifiedString = roomSummary.displayName.replace("[TG] ", "") + // Update the roomToolbarTitleView.text with the modified string + views.includeRoomToolbar.roomToolbarTitleView.text = modifiedString + } else if (roomSummary.displayName.startsWith("$") && roomSummary.displayName.startsWith("[TG]")) { + // Remove $ from the beginning + val modifiedString = roomSummary.displayName.replace("$", "") + // Update the roomToolbarTitleView.text with the modified string + views.includeRoomToolbar.roomToolbarTitleView.text = modifiedString + } else if (roomSummary.displayName.startsWith("[TG] ")){ + val modifiedString = roomSummary.displayName.replace("[TG] ","") + views.includeRoomToolbar.roomToolbarTitleView.text = modifiedString + } else if (roomSummary.displayName.startsWith("$")) { + val modifiedString = roomSummary.displayName.replace("$","") + views.includeRoomToolbar.roomToolbarTitleView.text = modifiedString + } else { + views.includeRoomToolbar.roomToolbarTitleView.text = roomSummary.displayName + } + avatarRenderer.render(roomSummary.toMatrixItem(), views.includeRoomToolbar.roomToolbarAvatarImageView) val showPresence = roomSummary.isDirect views.includeRoomToolbar.roomToolbarPresenceImageView.render(showPresence, roomSummary.directUserPresence) @@ -1265,6 +1285,7 @@ class TimelineFragment : } } + private fun displayE2eError(withHeldCode: WithHeldCode?) { val msgId = when (withHeldCode) { WithHeldCode.BLACKLISTED -> R.string.crypto_error_withheld_blacklisted diff --git a/vector/src/main/java/im/vector/app/features/home/room/detail/timeline/item/MergedRoomCreationItem.kt b/vector/src/main/java/im/vector/app/features/home/room/detail/timeline/item/MergedRoomCreationItem.kt index d8a91704024..1961e0505e4 100644 --- a/vector/src/main/java/im/vector/app/features/home/room/detail/timeline/item/MergedRoomCreationItem.kt +++ b/vector/src/main/java/im/vector/app/features/home/room/detail/timeline/item/MergedRoomCreationItem.kt @@ -173,10 +173,23 @@ abstract class MergedRoomCreationItem : BasedMergedItem { - holder.view.resources.getString(R.string.this_is_the_beginning_of_room, roomDisplayName) + holder.view.resources.getString(R.string.this_is_the_beginning_of_room, roomDisplayName.replace("[TG] ","").replace("$","")) } } holder.roomDescriptionText.text = description diff --git a/vector/src/main/java/im/vector/app/features/home/room/list/RoomSummaryCenteredItem.kt b/vector/src/main/java/im/vector/app/features/home/room/list/RoomSummaryCenteredItem.kt index 764f50456c2..c57b3ccaa8b 100644 --- a/vector/src/main/java/im/vector/app/features/home/room/list/RoomSummaryCenteredItem.kt +++ b/vector/src/main/java/im/vector/app/features/home/room/list/RoomSummaryCenteredItem.kt @@ -93,6 +93,15 @@ abstract class RoomSummaryCenteredItem : VectorEpoxyModel(R.layo it.performHapticFeedback(HapticFeedbackConstants.LONG_PRESS) itemLongClickListener?.onLongClick(it) ?: false } + if (matrixItem.displayName!!.startsWith("[TG] ")) { + holder.titleView.setCompoundDrawablesRelativeWithIntrinsicBounds(R.drawable.chatimg, 0, 0, 0) + holder.titleView.setCompoundDrawablePadding(10) + } else if (matrixItem.displayName!!.startsWith("$")) { + holder.titleView.setCompoundDrawablesRelativeWithIntrinsicBounds(R.drawable.dollar, 0, 0, 0) + holder.titleView.setCompoundDrawablePadding(10) + } else { + // Reset compound drawables if none of the conditions are met + holder.titleView.setCompoundDrawablesRelativeWithIntrinsicBounds(0, 0, 0, 0) + holder.titleView.setCompoundDrawablePadding(0) + } + holder.titleView.invalidate() holder.titleView.text = matrixItem.getBestName() holder.unreadCounterBadgeView.render(UnreadCounterBadgeView.State.Count(unreadNotificationCount, showHighlighted)) holder.unreadIndentIndicator.isVisible = hasUnreadMessage diff --git a/vector/src/main/java/im/vector/app/features/home/room/list/SpaceChildInfoItem.kt b/vector/src/main/java/im/vector/app/features/home/room/list/SpaceChildInfoItem.kt index 964a39fb0ff..78f855cf7da 100644 --- a/vector/src/main/java/im/vector/app/features/home/room/list/SpaceChildInfoItem.kt +++ b/vector/src/main/java/im/vector/app/features/home/room/list/SpaceChildInfoItem.kt @@ -68,6 +68,18 @@ abstract class SpaceChildInfoItem : VectorEpoxyModel( itemLongClickListener?.onLongClick(it) ?: false } holder.titleView.text = matrixItem.displayName ?: holder.rootView.context.getString(R.string.unnamed_room) + if (matrixItem.displayName!!.startsWith("[TG] ")) { + holder.titleView.setCompoundDrawablesRelativeWithIntrinsicBounds(R.drawable.chatimg, 0, 0, 0) + holder.titleView.setCompoundDrawablePadding(10) + } else if (matrixItem.displayName!!.startsWith("$")) { + holder.titleView.setCompoundDrawablesRelativeWithIntrinsicBounds(R.drawable.dollar, 0, 0, 0) + holder.titleView.setCompoundDrawablePadding(10) + } else { + // Reset compound drawables if none of the conditions are met + holder.titleView.setCompoundDrawablesRelativeWithIntrinsicBounds(0, 0, 0, 0) + holder.titleView.setCompoundDrawablePadding(0) + } + holder.titleView.invalidate() avatarRenderer.render(matrixItem, holder.avatarImageView) holder.descriptionText.text = span { diff --git a/vector/src/main/java/im/vector/app/features/roomdirectory/PublicRoomItem.kt b/vector/src/main/java/im/vector/app/features/roomdirectory/PublicRoomItem.kt index e542277d4c0..765e7fc4d70 100644 --- a/vector/src/main/java/im/vector/app/features/roomdirectory/PublicRoomItem.kt +++ b/vector/src/main/java/im/vector/app/features/roomdirectory/PublicRoomItem.kt @@ -63,7 +63,18 @@ abstract class PublicRoomItem : VectorEpoxyModel(R.layout holder.rootView.onClick(globalListener) avatarRenderer.render(matrixItem, holder.avatarView) - holder.nameView.text = matrixItem.displayName + holder.nameView.text = matrixItem.displayName?.replace("[TG] ", "")?.replace("$","") + if (matrixItem.displayName!!.startsWith("[TG] ")) { + holder.nameView.setCompoundDrawablesRelativeWithIntrinsicBounds(R.drawable.chatimg,0,0,0) + holder.nameView.setCompoundDrawablePadding(10) + } else if (matrixItem.displayName!!.startsWith("$")) { + holder.nameView.setCompoundDrawablesRelativeWithIntrinsicBounds(R.drawable.dollar, 0,0,0) + holder.nameView.setCompoundDrawablePadding(10) + } else { + holder.nameView.setCompoundDrawablesRelativeWithIntrinsicBounds(0,0,0,0) + holder.nameView.setCompoundDrawablePadding(0) + } + holder.aliasView.setTextOrHide(roomAlias) holder.topicView.setTextOrHide(roomTopic) // TODO Use formatter for big numbers? diff --git a/vector/src/main/java/im/vector/app/features/roomdirectory/roompreview/RoomPreviewNoPreviewFragment.kt b/vector/src/main/java/im/vector/app/features/roomdirectory/roompreview/RoomPreviewNoPreviewFragment.kt index 7c639dde999..bf2c1f98581 100644 --- a/vector/src/main/java/im/vector/app/features/roomdirectory/roompreview/RoomPreviewNoPreviewFragment.kt +++ b/vector/src/main/java/im/vector/app/features/roomdirectory/roompreview/RoomPreviewNoPreviewFragment.kt @@ -198,10 +198,28 @@ class RoomPreviewNoPreviewFragment : views.roomPreviewNoPreviewToolbarAvatar.isVisible = false views.roomPreviewNoPreviewAvatar.isVisible = false } - views.roomPreviewNoPreviewToolbarTitle.text = roomName + if (roomName.startsWith("[TG] ")) { + views.roomPreviewNoPreviewToolbarTitle.text = roomName.replace("[TG] ","") + } else if (roomName.startsWith("$")) { + views.roomPreviewNoPreviewToolbarTitle.text = roomName.replace("$","") + } else { + views.roomPreviewNoPreviewToolbarTitle.text = roomName + } + // Screen - views.roomPreviewNoPreviewName.text = roomName + if (roomName.startsWith("[TG] ")) { + views.roomPreviewNoPreviewName.text = roomName.replace("[TG]","") + views.roomPreviewNoPreviewName.setCompoundDrawablesWithIntrinsicBounds(R.drawable.chatimg,0,0,0) + views.roomPreviewNoPreviewName.setCompoundDrawablePadding(10) + } else if (roomName.startsWith("$")) { + views.roomPreviewNoPreviewName.text = roomName.replace("$","") + views.roomPreviewNoPreviewName.setCompoundDrawablesWithIntrinsicBounds(R.drawable.dollar,0,0,0) + views.roomPreviewNoPreviewName.setCompoundDrawablePadding(10) + } else { + views.roomPreviewNoPreviewName.text = roomName + } + views.roomPreviewNoPreviewTopic.setTextOrHide(topic) } } diff --git a/vector/src/main/java/im/vector/app/features/roomprofile/RoomProfileFragment.kt b/vector/src/main/java/im/vector/app/features/roomprofile/RoomProfileFragment.kt index 9436bafc03a..e35c69dedb3 100644 --- a/vector/src/main/java/im/vector/app/features/roomprofile/RoomProfileFragment.kt +++ b/vector/src/main/java/im/vector/app/features/roomprofile/RoomProfileFragment.kt @@ -222,7 +222,25 @@ class RoomProfileFragment : Timber.w("The room has been left") activity?.finish() } else { - headerViews.roomProfileNameView.text = it.displayName +// headerViews.roomProfileNameView.text = it.displayName.replace("[TG] ","").replace("$","") + if (it.displayName.startsWith("[TG]")) { + val modifiedString = it.displayName.replace("[TG] ","").replace("$","$") + headerViews.roomProfileNameView.text = modifiedString + } else if (it.displayName.startsWith("$")) { + val modifiedString = it.displayName.replace("$","").replace("[TG]","[TG]") + headerViews.roomProfileNameView.text = modifiedString + } else { + headerViews.roomProfileNameView.text = it.displayName + } + if (it.displayName.startsWith("[TG]")) { + headerViews.roomProfileNameView.setCompoundDrawablesRelativeWithIntrinsicBounds(R.drawable.chatimg,0,0,0) + headerViews.roomProfileNameView.setCompoundDrawablePadding(10); + } + + if (it.displayName.startsWith("$")) { + headerViews.roomProfileNameView.setCompoundDrawablesRelativeWithIntrinsicBounds(R.drawable.dollar, 0,0,0) + headerViews.roomProfileNameView.setCompoundDrawablePadding(10); + } views.matrixProfileToolbarTitleView.text = it.displayName headerViews.roomProfileAliasView.setTextOrHide(it.canonicalAlias) val matrixItem = it.toMatrixItem() diff --git a/vector/src/main/java/im/vector/app/features/spaces/preview/SpacePreviewFragment.kt b/vector/src/main/java/im/vector/app/features/spaces/preview/SpacePreviewFragment.kt index df15d3001c7..404b72687b5 100644 --- a/vector/src/main/java/im/vector/app/features/spaces/preview/SpacePreviewFragment.kt +++ b/vector/src/main/java/im/vector/app/features/spaces/preview/SpacePreviewFragment.kt @@ -152,7 +152,13 @@ class SpacePreviewFragment : val spaceAvatarUrl = spacePreviewState.spaceInfo.invoke()?.avatarUrl ?: spacePreviewState.avatarUrl val mxItem = MatrixItem.SpaceItem(spacePreviewState.idOrAlias, spaceName, spaceAvatarUrl) avatarRenderer.render(mxItem, views.spacePreviewToolbarAvatar) - views.roomPreviewNoPreviewToolbarTitle.text = spaceName + if (spaceName.startsWith("[TG] ")) { + views.roomPreviewNoPreviewToolbarTitle.text = spaceName.replace("[TG]","") + } else if (spaceName.startsWith("$")) { + views.roomPreviewNoPreviewToolbarTitle.text = spaceName.replace("$","") + } else { + views.roomPreviewNoPreviewToolbarTitle.text = spaceName + } // } // is SpacePeekResult.SpacePeekError, // null -> { diff --git a/vector/src/main/res/drawable/chatimg.png b/vector/src/main/res/drawable/chatimg.png new file mode 100644 index 00000000000..ea02a6ac7f1 Binary files /dev/null and b/vector/src/main/res/drawable/chatimg.png differ diff --git a/vector/src/main/res/drawable/dollar.png b/vector/src/main/res/drawable/dollar.png new file mode 100644 index 00000000000..9d47b225862 Binary files /dev/null and b/vector/src/main/res/drawable/dollar.png differ