Allow the mac app to chose room avatars directly from files instead of the photo library

This commit is contained in:
Stefan Ceriu
2026-04-25 11:46:40 +03:00
parent 0ec114d2f3
commit 53a54c1b90
20 changed files with 56 additions and 8 deletions
@@ -54,6 +54,8 @@ final class CreateRoomScreenCoordinator: CoordinatorProtocol {
actionsSubject.send(.displayMediaPickerWithMode(.init(source: .camera, selectionType: .single)))
case .displayMediaPicker:
actionsSubject.send(.displayMediaPickerWithMode(.init(source: .photoLibrary, selectionType: .single)))
case .displayFilePicker:
actionsSubject.send(.displayMediaPickerWithMode(.init(source: .documents(types: [.image]), selectionType: .single)))
case .dismiss:
actionsSubject.send(.dismiss)
}
@@ -21,6 +21,7 @@ enum CreateRoomScreenViewModelAction {
case createdRoom(JoinedRoomProxyProtocol, SpaceRoomListProxyProtocol?)
case displayMediaPicker
case displayCameraPicker
case displayFilePicker
case dismiss
}
@@ -114,6 +115,7 @@ enum CreateRoomScreenViewAction {
case createRoom
case displayCameraPicker
case displayMediaPicker
case displayFilePicker
case removeImage
case updateRoomName(String)
case updateAliasLocalPart(String)
@@ -90,6 +90,8 @@ class CreateRoomScreenViewModel: CreateRoomScreenViewModelType, CreateRoomScreen
actionsSubject.send(.displayCameraPicker)
case .displayMediaPicker:
actionsSubject.send(.displayMediaPicker)
case .displayFilePicker:
actionsSubject.send(.displayFilePicker)
case .removeImage:
state.avatarMediaInfo = nil
case .updateAliasLocalPart(let aliasLocalPart):
@@ -139,11 +139,17 @@ struct CreateRoomScreen: View {
Button(L10n.actionTakePhoto) {
context.send(viewAction: .displayCameraPicker)
}
Button(L10n.actionChoosePhoto) {
context.send(viewAction: .displayMediaPicker)
}
.accessibilityIdentifier(A11yIdentifiers.createRoomScreen.mediaPicker)
Button(L10n.actionChooseFile) {
context.send(viewAction: .displayFilePicker)
}
.accessibilityIdentifier(A11yIdentifiers.createRoomScreen.filePicker)
if context.viewState.avatarImage != nil {
Button(L10n.actionRemove, role: .destructive) {
context.send(viewAction: .removeImage)