Remember presenter only on userId.

Avoid creating again the presenter when other parameter of the room member are changing.
This commit is contained in:
Benoit Marty
2026-06-01 17:41:29 +02:00
parent ac93c6bd70
commit d7788a8c01
@@ -38,6 +38,7 @@ import io.element.android.libraries.designsystem.utils.snackbar.LocalSnackbarDis
import io.element.android.libraries.designsystem.utils.snackbar.SnackbarMessage
import io.element.android.libraries.designsystem.utils.snackbar.collectSnackbarMessageAsState
import io.element.android.libraries.matrix.api.MatrixClient
import io.element.android.libraries.matrix.api.core.UserId
import io.element.android.libraries.matrix.api.encryption.identity.IdentityState
import io.element.android.libraries.matrix.api.notificationsettings.NotificationSettingsService
import io.element.android.libraries.matrix.api.room.JoinedRoom
@@ -117,7 +118,7 @@ class RoomDetailsPresenter(
val canonicalAlias by remember { derivedStateOf { roomInfo.canonicalAlias } }
val isEncrypted by remember { derivedStateOf { roomInfo.isEncrypted == true } }
val dmMember by room.getDirectRoomMember(membersState)
val roomMemberDetailsPresenter = roomMemberDetailsPresenter(dmMember)
val roomMemberDetailsPresenter = roomMemberDetailsPresenter(dmMember?.userId)
val roomType = getRoomType(dmMember)
val roomCallState = roomCallStatePresenter.present()
val joinedMemberCount by remember { derivedStateOf { roomInfo.joinedMembersCount } }
@@ -220,9 +221,9 @@ class RoomDetailsPresenter(
}
@Composable
private fun roomMemberDetailsPresenter(dmMemberState: RoomMember?) = remember(dmMemberState) {
dmMemberState?.let { roomMember ->
roomMembersDetailsPresenterFactory.create(roomMember.userId)
private fun roomMemberDetailsPresenter(userId: UserId?) = remember(userId) {
userId?.let { userId ->
roomMembersDetailsPresenterFactory.create(userId)
}
}