change(edit room details): expose isSpace

This commit is contained in:
ganfra 2025-11-14 10:40:37 +01:00
parent 135dba79bd
commit af6099106b
4 changed files with 14 additions and 8 deletions

View file

@ -32,9 +32,6 @@ import io.element.android.libraries.matrix.api.room.JoinedRoom
import io.element.android.libraries.matrix.api.room.StateEventType import io.element.android.libraries.matrix.api.room.StateEventType
import io.element.android.libraries.matrix.api.room.powerlevels.canSendState import io.element.android.libraries.matrix.api.room.powerlevels.canSendState
import io.element.android.libraries.matrix.ui.media.AvatarAction import io.element.android.libraries.matrix.ui.media.AvatarAction
import io.element.android.libraries.matrix.ui.room.avatarUrl
import io.element.android.libraries.matrix.ui.room.rawName
import io.element.android.libraries.matrix.ui.room.topic
import io.element.android.libraries.mediapickers.api.PickerProvider import io.element.android.libraries.mediapickers.api.PickerProvider
import io.element.android.libraries.mediaupload.api.MediaOptimizationConfigProvider import io.element.android.libraries.mediaupload.api.MediaOptimizationConfigProvider
import io.element.android.libraries.mediaupload.api.MediaPreProcessor import io.element.android.libraries.mediaupload.api.MediaPreProcessor
@ -61,8 +58,8 @@ class RoomDetailsEditPresenter(
override fun present(): RoomDetailsEditState { override fun present(): RoomDetailsEditState {
val cameraPermissionState = cameraPermissionPresenter.present() val cameraPermissionState = cameraPermissionPresenter.present()
val roomSyncUpdateFlow = room.syncUpdateFlow.collectAsState() val roomSyncUpdateFlow = room.syncUpdateFlow.collectAsState()
val roomInfo by room.roomInfoFlow.collectAsState()
val roomAvatarUri = room.avatarUrl() val roomAvatarUri = roomInfo.avatarUrl
var roomAvatarUriEdited by rememberSaveable { mutableStateOf<String?>(null) } var roomAvatarUriEdited by rememberSaveable { mutableStateOf<String?>(null) }
LaunchedEffect(roomAvatarUri) { LaunchedEffect(roomAvatarUri) {
// Every time the roomAvatar change (from sync), we can set the new avatar. // Every time the roomAvatar change (from sync), we can set the new avatar.
@ -70,13 +67,13 @@ class RoomDetailsEditPresenter(
roomAvatarUriEdited = roomAvatarUri roomAvatarUriEdited = roomAvatarUri
} }
val roomRawNameTrimmed = room.rawName().orEmpty().trim() val roomRawNameTrimmed = roomInfo.rawName.orEmpty().trim()
var roomRawNameEdited by rememberSaveable { mutableStateOf("") } var roomRawNameEdited by rememberSaveable { mutableStateOf("") }
LaunchedEffect(roomRawNameTrimmed) { LaunchedEffect(roomRawNameTrimmed) {
// Every time the rawName change (from sync), we can set the new name. // Every time the rawName change (from sync), we can set the new name.
roomRawNameEdited = roomRawNameTrimmed roomRawNameEdited = roomRawNameTrimmed
} }
val roomTopicTrimmed = room.topic().orEmpty().trim() val roomTopicTrimmed = roomInfo.topic.orEmpty().trim()
var roomTopicEdited by rememberSaveable { mutableStateOf("") } var roomTopicEdited by rememberSaveable { mutableStateOf("") }
LaunchedEffect(roomTopicTrimmed) { LaunchedEffect(roomTopicTrimmed) {
// Every time the topic change (from sync), we can set the new topic. // Every time the topic change (from sync), we can set the new topic.
@ -192,6 +189,7 @@ class RoomDetailsEditPresenter(
saveButtonEnabled = saveButtonEnabled, saveButtonEnabled = saveButtonEnabled,
saveAction = saveAction.value, saveAction = saveAction.value,
cameraPermissionState = cameraPermissionState, cameraPermissionState = cameraPermissionState,
isSpace = roomInfo.isSpace,
eventSink = ::handleEvent, eventSink = ::handleEvent,
) )
} }

View file

@ -27,5 +27,6 @@ data class RoomDetailsEditState(
val saveButtonEnabled: Boolean, val saveButtonEnabled: Boolean,
val saveAction: AsyncAction<Unit>, val saveAction: AsyncAction<Unit>,
val cameraPermissionState: PermissionsState, val cameraPermissionState: PermissionsState,
val isSpace: Boolean,
val eventSink: (RoomDetailsEditEvents) -> Unit val eventSink: (RoomDetailsEditEvents) -> Unit
) )

View file

@ -23,6 +23,7 @@ open class RoomDetailsEditStateProvider : PreviewParameterProvider<RoomDetailsEd
aRoomDetailsEditState(roomTopic = ""), aRoomDetailsEditState(roomTopic = ""),
aRoomDetailsEditState(roomRawName = ""), aRoomDetailsEditState(roomRawName = ""),
aRoomDetailsEditState(roomAvatarUrl = "example://uri"), aRoomDetailsEditState(roomAvatarUrl = "example://uri"),
aRoomDetailsEditState(roomAvatarUrl = "example://uri", isSpace = true),
aRoomDetailsEditState(canChangeName = true, canChangeTopic = false, canChangeAvatar = true, saveButtonEnabled = false), aRoomDetailsEditState(canChangeName = true, canChangeTopic = false, canChangeAvatar = true, saveButtonEnabled = false),
aRoomDetailsEditState(canChangeName = false, canChangeTopic = true, canChangeAvatar = false, saveButtonEnabled = false), aRoomDetailsEditState(canChangeName = false, canChangeTopic = true, canChangeAvatar = false, saveButtonEnabled = false),
aRoomDetailsEditState(saveAction = AsyncAction.Loading), aRoomDetailsEditState(saveAction = AsyncAction.Loading),
@ -43,6 +44,7 @@ fun aRoomDetailsEditState(
saveButtonEnabled: Boolean = true, saveButtonEnabled: Boolean = true,
saveAction: AsyncAction<Unit> = AsyncAction.Uninitialized, saveAction: AsyncAction<Unit> = AsyncAction.Uninitialized,
cameraPermissionState: PermissionsState = aPermissionsState(showDialog = false), cameraPermissionState: PermissionsState = aPermissionsState(showDialog = false),
isSpace: Boolean = false,
eventSink: (RoomDetailsEditEvents) -> Unit = {}, eventSink: (RoomDetailsEditEvents) -> Unit = {},
) = RoomDetailsEditState( ) = RoomDetailsEditState(
roomId = roomId, roomId = roomId,
@ -56,5 +58,6 @@ fun aRoomDetailsEditState(
saveButtonEnabled = saveButtonEnabled, saveButtonEnabled = saveButtonEnabled,
saveAction = saveAction, saveAction = saveAction,
cameraPermissionState = cameraPermissionState, cameraPermissionState = cameraPermissionState,
isSpace = isSpace,
eventSink = eventSink, eventSink = eventSink,
) )

View file

@ -108,7 +108,11 @@ fun RoomDetailsEditView(
displayName = state.roomRawName, displayName = state.roomRawName,
avatarUrl = state.roomAvatarUrl, avatarUrl = state.roomAvatarUrl,
avatarSize = AvatarSize.EditRoomDetails, avatarSize = AvatarSize.EditRoomDetails,
avatarType = AvatarType.Room(), avatarType = if(state.isSpace){
AvatarType.Space()
}else {
AvatarType.Room()
},
onAvatarClick = ::onAvatarClick, onAvatarClick = ::onAvatarClick,
modifier = Modifier.fillMaxWidth(), modifier = Modifier.fillMaxWidth(),
) )