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
@@ -53,7 +53,7 @@ final class UserDetailsEditScreenCoordinator: CoordinatorProtocol {
case .displayMediaPicker:
displayMediaPickerWithMode(.init(source: .photoLibrary, selectionType: .single))
case .displayFilePicker:
displayMediaPickerWithMode(.init(source: .documents, selectionType: .single))
displayMediaPickerWithMode(.init(source: .documents(types: [.image]), selectionType: .single))
}
}
.store(in: &cancellables)
@@ -67,5 +67,6 @@ enum UserDetailsEditScreenViewAction {
case presentMediaSource
case displayCameraPicker
case displayMediaPicker
case displayFilePicker
case removeImage
}
@@ -77,6 +77,8 @@ class UserDetailsEditScreenViewModel: UserDetailsEditScreenViewModelType, UserDe
actionsSubject.send(.displayCameraPicker)
case .displayMediaPicker:
actionsSubject.send(.displayMediaPicker)
case .displayFilePicker:
actionsSubject.send(.displayFilePicker)
case .removeImage:
state.localMedia = nil
state.selectedAvatarURL = nil
@@ -96,12 +96,19 @@ struct UserDetailsEditScreen: 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)