From a00e6fbb33b8d4bb0cdd83b9c59c619aa9b4d6ae Mon Sep 17 00:00:00 2001 From: Chris Smith Date: Fri, 7 Jul 2023 11:50:32 +0100 Subject: [PATCH] Introduce MatrixClient.isMe for checking sessionID --- .../impl/members/details/RoomMemberDetailsPresenter.kt | 2 +- .../impl/DefaultRoomLastMessageFormatter.kt | 2 +- .../eventformatter/impl/DefaultTimelineEventFormatter.kt | 2 +- .../eventformatter/impl/RoomMembershipContentFormatter.kt | 2 +- .../element/android/libraries/matrix/api/MatrixClient.kt | 2 ++ .../libraries/usersearch/impl/MatrixUserRepository.kt | 8 +++----- 6 files changed, 9 insertions(+), 9 deletions(-) diff --git a/features/roomdetails/impl/src/main/kotlin/io/element/android/features/roomdetails/impl/members/details/RoomMemberDetailsPresenter.kt b/features/roomdetails/impl/src/main/kotlin/io/element/android/features/roomdetails/impl/members/details/RoomMemberDetailsPresenter.kt index 7ef6cd4aa4..9d3c391ace 100644 --- a/features/roomdetails/impl/src/main/kotlin/io/element/android/features/roomdetails/impl/members/details/RoomMemberDetailsPresenter.kt +++ b/features/roomdetails/impl/src/main/kotlin/io/element/android/features/roomdetails/impl/members/details/RoomMemberDetailsPresenter.kt @@ -100,7 +100,7 @@ class RoomMemberDetailsPresenter @AssistedInject constructor( avatarUrl = userAvatar, isBlocked = isBlocked.value, displayConfirmationDialog = confirmationDialog, - isCurrentUser = roomMember?.userId == client.sessionId, + isCurrentUser = client.isMe(roomMember?.userId), eventSink = ::handleEvents ) } diff --git a/libraries/eventformatter/impl/src/main/kotlin/io/element/android/libraries/eventformatter/impl/DefaultRoomLastMessageFormatter.kt b/libraries/eventformatter/impl/src/main/kotlin/io/element/android/libraries/eventformatter/impl/DefaultRoomLastMessageFormatter.kt index 2e828f8793..f1af61c8e7 100644 --- a/libraries/eventformatter/impl/src/main/kotlin/io/element/android/libraries/eventformatter/impl/DefaultRoomLastMessageFormatter.kt +++ b/libraries/eventformatter/impl/src/main/kotlin/io/element/android/libraries/eventformatter/impl/DefaultRoomLastMessageFormatter.kt @@ -62,7 +62,7 @@ class DefaultRoomLastMessageFormatter @Inject constructor( ) : RoomLastMessageFormatter { override fun format(event: EventTimelineItem, isDmRoom: Boolean): CharSequence? { - val isOutgoing = event.sender == matrixClient.sessionId + val isOutgoing = matrixClient.isMe(event.sender) val senderDisplayName = (event.senderProfile as? ProfileTimelineDetails.Ready)?.displayName ?: event.sender.value return when (val content = event.content) { is MessageContent -> processMessageContents(content, senderDisplayName, isDmRoom) diff --git a/libraries/eventformatter/impl/src/main/kotlin/io/element/android/libraries/eventformatter/impl/DefaultTimelineEventFormatter.kt b/libraries/eventformatter/impl/src/main/kotlin/io/element/android/libraries/eventformatter/impl/DefaultTimelineEventFormatter.kt index 945df3df7a..8f89233a31 100644 --- a/libraries/eventformatter/impl/src/main/kotlin/io/element/android/libraries/eventformatter/impl/DefaultTimelineEventFormatter.kt +++ b/libraries/eventformatter/impl/src/main/kotlin/io/element/android/libraries/eventformatter/impl/DefaultTimelineEventFormatter.kt @@ -49,7 +49,7 @@ class DefaultTimelineEventFormatter @Inject constructor( ) : TimelineEventFormatter { override fun format(event: EventTimelineItem): CharSequence? { - val isOutgoing = event.sender == matrixClient.sessionId + val isOutgoing = matrixClient.isMe(event.sender) val senderDisplayName = (event.senderProfile as? ProfileTimelineDetails.Ready)?.displayName ?: event.sender.value return when (val content = event.content) { is RoomMembershipContent -> { diff --git a/libraries/eventformatter/impl/src/main/kotlin/io/element/android/libraries/eventformatter/impl/RoomMembershipContentFormatter.kt b/libraries/eventformatter/impl/src/main/kotlin/io/element/android/libraries/eventformatter/impl/RoomMembershipContentFormatter.kt index b5402454f3..f8ac3b491c 100644 --- a/libraries/eventformatter/impl/src/main/kotlin/io/element/android/libraries/eventformatter/impl/RoomMembershipContentFormatter.kt +++ b/libraries/eventformatter/impl/src/main/kotlin/io/element/android/libraries/eventformatter/impl/RoomMembershipContentFormatter.kt @@ -33,7 +33,7 @@ class RoomMembershipContentFormatter @Inject constructor( senderIsYou: Boolean, ): CharSequence? { val userId = membershipContent.userId - val memberIsYou = userId == matrixClient.sessionId + val memberIsYou = matrixClient.isMe(userId) return when (val change = membershipContent.change) { MembershipChange.JOINED -> if (memberIsYou) { sp.getString(R.string.state_event_room_join_by_you) diff --git a/libraries/matrix/api/src/main/kotlin/io/element/android/libraries/matrix/api/MatrixClient.kt b/libraries/matrix/api/src/main/kotlin/io/element/android/libraries/matrix/api/MatrixClient.kt index 84855adb96..646a5e2873 100644 --- a/libraries/matrix/api/src/main/kotlin/io/element/android/libraries/matrix/api/MatrixClient.kt +++ b/libraries/matrix/api/src/main/kotlin/io/element/android/libraries/matrix/api/MatrixClient.kt @@ -60,4 +60,6 @@ interface MatrixClient : Closeable { suspend fun loadUserAvatarURLString(): Result suspend fun uploadMedia(mimeType: String, data: ByteArray, progressCallback: ProgressCallback?): Result fun roomMembershipObserver(): RoomMembershipObserver + + fun isMe(userId: UserId?) = userId == sessionId } diff --git a/libraries/usersearch/impl/src/main/kotlin/io/element/android/libraries/usersearch/impl/MatrixUserRepository.kt b/libraries/usersearch/impl/src/main/kotlin/io/element/android/libraries/usersearch/impl/MatrixUserRepository.kt index f77e990a7a..a073e7df40 100644 --- a/libraries/usersearch/impl/src/main/kotlin/io/element/android/libraries/usersearch/impl/MatrixUserRepository.kt +++ b/libraries/usersearch/impl/src/main/kotlin/io/element/android/libraries/usersearch/impl/MatrixUserRepository.kt @@ -32,15 +32,13 @@ import javax.inject.Inject @ContributesBinding(SessionScope::class) class MatrixUserRepository @Inject constructor( - client: MatrixClient, + private val client: MatrixClient, private val dataSource: UserListDataSource ) : UserRepository { - private val sessionId = client.sessionId - override suspend fun search(query: String): Flow> = flow { // Manually add a fake result with the matrixId, if provided and not the local user - val isAnotherUsersId = query != sessionId.value && MatrixPatterns.isUserId(query) + val isAnotherUsersId = MatrixPatterns.isUserId(query) && !client.isMe(UserId(query)) if (isAnotherUsersId) { emit(listOf(UserSearchResult(MatrixUser(UserId(query))))) } @@ -51,7 +49,7 @@ class MatrixUserRepository @Inject constructor( val results = dataSource .search(query, MAXIMUM_SEARCH_RESULTS) - .filter { it.userId != sessionId } + .filter { !client.isMe(it.userId) } .map { UserSearchResult(it) } .toMutableList()