Skip to content

Commit 3b887fd

Browse files
committed
Test room alias links and fix bug found with PillDisplayHander not handling them
1 parent 36b97b1 commit 3b887fd

File tree

2 files changed

+26
-0
lines changed

2 files changed

+26
-0
lines changed

vector/src/main/java/im/vector/app/features/home/room/detail/composer/mentions/PillDisplayHandler.kt

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@ import org.matrix.android.sdk.api.session.room.model.RoomSummary
2727
import org.matrix.android.sdk.api.util.MatrixItem
2828
import org.matrix.android.sdk.api.util.toEveryoneInRoomMatrixItem
2929
import org.matrix.android.sdk.api.util.toMatrixItem
30+
import org.matrix.android.sdk.api.util.toRoomAliasMatrixItem
3031

3132
/**
3233
* A rich text editor [LinkDisplayHandler] and [KeywordDisplayHandler]
@@ -53,6 +54,7 @@ internal class PillDisplayHandler(
5354
when {
5455
room == null -> MatrixItem.RoomItem(roomId, roomId, null)
5556
text == MatrixItem.NOTIFY_EVERYONE -> room.toEveryoneInRoomMatrixItem()
57+
permalink.isRoomAlias -> room.toRoomAliasMatrixItem()
5658
else -> room.toMatrixItem()
5759
}
5860
}

vector/src/test/java/im/vector/app/features/home/room/detail/composer/mentions/PillDisplayHandlerTest.kt

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -57,7 +57,10 @@ internal class PillDisplayHandlerTest {
5757
const val KNOWN_MATRIX_USER_NAME = "known user"
5858
const val CUSTOM_DOMAIN_MATRIX_ROOM_URL = "https://customdomain/#/room/$KNOWN_MATRIX_ROOM_ID"
5959
const val CUSTOM_DOMAIN_MATRIX_USER_URL = "https://customdomain.com/#/user/$KNOWN_MATRIX_USER_ID"
60+
const val KNOWN_MATRIX_ROOM_ALIAS = "#known-alias:matrix.org"
61+
const val KNOWN_MATRIX_ROOM_ALIAS_URL = "https://matrix.to/#/$KNOWN_MATRIX_ROOM_ALIAS"
6062
}
63+
https://matrix.to/#/#rich-text-editor:matrix.org
6164

6265
@Before
6366
fun setUp() {
@@ -66,6 +69,7 @@ internal class PillDisplayHandlerTest {
6669
every { mockGetRoom(UNKNOWN_MATRIX_ROOM_ID) } returns null
6770
every { mockGetRoom(KNOWN_MATRIX_ROOM_ID) } returns createFakeRoom(KNOWN_MATRIX_ROOM_ID, KNOWN_MATRIX_ROOM_NAME, KNOWN_MATRIX_ROOM_AVATAR)
6871
every { mockGetRoom(ROOM_ID) } returns createFakeRoom(ROOM_ID, KNOWN_MATRIX_ROOM_NAME, KNOWN_MATRIX_ROOM_AVATAR)
72+
every { mockGetRoom(KNOWN_MATRIX_ROOM_ALIAS) } returns createFakeRoomWithAlias(KNOWN_MATRIX_ROOM_ALIAS, KNOWN_MATRIX_ROOM_ID, KNOWN_MATRIX_ROOM_NAME, KNOWN_MATRIX_ROOM_AVATAR)
6973
}
7074

7175
@Test
@@ -175,6 +179,16 @@ internal class PillDisplayHandlerTest {
175179
assertEquals(MatrixItem.RoomItem(KNOWN_MATRIX_ROOM_ID, KNOWN_MATRIX_ROOM_NAME, KNOWN_MATRIX_ROOM_AVATAR), matrixItem)
176180
}
177181

182+
@Test
183+
fun `when resolve known room with alias link, then it returns named custom pill`() {
184+
val subject = createSubject()
185+
186+
val matrixItem = subject.resolveLinkDisplay("text", KNOWN_MATRIX_ROOM_ALIAS_URL)
187+
.getMatrixItem()
188+
189+
assertEquals(MatrixItem.RoomAliasItem(KNOWN_MATRIX_ROOM_ALIAS, KNOWN_MATRIX_ROOM_NAME, KNOWN_MATRIX_ROOM_AVATAR), matrixItem)
190+
}
191+
178192
private fun TextDisplay.getMatrixItem(): MatrixItem? {
179193
val customSpan = this as? TextDisplay.Custom
180194
assertNotNull("The URL did not resolve to a custom link display method", customSpan)
@@ -206,6 +220,16 @@ internal class PillDisplayHandlerTest {
206220
isEncrypted = false
207221
)
208222

223+
private fun createFakeRoomWithAlias(roomAlias: String, roomId: String, roomName: String, avatarUrl: String): RoomSummary = RoomSummary(
224+
roomId = roomId,
225+
displayName = roomName,
226+
avatarUrl = avatarUrl,
227+
encryptionEventTs = null,
228+
typingUsers = emptyList(),
229+
isEncrypted = false,
230+
canonicalAlias = roomAlias
231+
)
232+
209233
data class MatrixItemHolderSpan(
210234
val matrixItem: MatrixItem
211235
) : ReplacementSpan() {

0 commit comments

Comments
 (0)