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
@@ -52,6 +52,8 @@ final class RoomDetailsEditScreenCoordinator: CoordinatorProtocol {
self?.displayMediaPickerWithMode(.init(source: .camera, selectionType: .single))
case .displayMediaPicker:
self?.displayMediaPickerWithMode(.init(source: .photoLibrary, selectionType: .single))
case .displayFilePicker:
self?.displayMediaPickerWithMode(.init(source: .documents(types: [.image]), selectionType: .single))
}
}
.store(in: &cancellables)
@@ -13,6 +13,7 @@ enum RoomDetailsEditScreenViewModelAction {
case saveFinished
case displayCameraPicker
case displayMediaPicker
case displayFilePicker
}
struct RoomDetailsEditScreenViewState: BindableState {
@@ -81,5 +82,6 @@ enum RoomDetailsEditScreenViewAction {
case presentMediaSource
case displayCameraPicker
case displayMediaPicker
case displayFilePicker
case removeImage
}
@@ -69,6 +69,8 @@ class RoomDetailsEditScreenViewModel: RoomDetailsEditScreenViewModelType, RoomDe
actionsSubject.send(.displayCameraPicker)
case .displayMediaPicker:
actionsSubject.send(.displayMediaPicker)
case .displayFilePicker:
actionsSubject.send(.displayFilePicker)
case .removeImage:
state.avatarURL = nil
state.localMedia = nil
@@ -119,11 +119,19 @@ struct RoomDetailsEditScreen: View {
} label: {
Text(L10n.actionTakePhoto)
}
Button {
context.send(viewAction: .displayMediaPicker)
} label: {
Text(L10n.actionChoosePhoto)
}
Button {
context.send(viewAction: .displayFilePicker)
} label: {
Text(L10n.actionChooseFile)
}
if context.viewState.showDeleteImageAction {
Button(role: .destructive) {
context.send(viewAction: .removeImage)