From 8c284796d3a7e3532eb5d51f6dbdf4e953986c7e Mon Sep 17 00:00:00 2001 From: JanNiklas Grabowski Date: Mon, 15 Apr 2024 15:47:02 +0200 Subject: [PATCH] MESSENGER-5872 fix select image on ios 15 simulator --- .../SingleImagePickerPresenter.swift | 24 +++++++++++++++---- 1 file changed, 20 insertions(+), 4 deletions(-) diff --git a/Riot/Modules/MediaPicker/SingleImagePickerPresenter.swift b/Riot/Modules/MediaPicker/SingleImagePickerPresenter.swift index 99269668c..702a2bbe5 100644 --- a/Riot/Modules/MediaPicker/SingleImagePickerPresenter.swift +++ b/Riot/Modules/MediaPicker/SingleImagePickerPresenter.swift @@ -196,10 +196,13 @@ extension SingleImagePickerPresenter: PHPickerViewControllerDelegate { return } - if itemProvider.canLoadObject(ofClass: UIImage.self) { - itemProvider.loadObject(ofClass: UIImage.self) { image, error in + // bwi: #5872 workaround for known issue (63426347) selection of images on iOS 15 (simulator) + let heicId = "public.heic" + + if itemProvider.registeredTypeIdentifiers.contains(heicId) { + itemProvider.loadDataRepresentation(forTypeIdentifier: heicId) { imageData, error in DispatchQueue.main.async { - if let image = image as? UIImage, let imageData = image.pngData() { + if let imageData = imageData, let image = UIImage(data: imageData), let imageData = image.pngData() { let uti = MXKUTI(mimeType: "image/png") self.delegate?.singleImagePickerPresenter(self, didSelectImageData: imageData, withUTI: uti) } else { @@ -208,7 +211,20 @@ extension SingleImagePickerPresenter: PHPickerViewControllerDelegate { } } } else { - self.delegate?.singleImagePickerPresenterDidCancel(self) + if itemProvider.canLoadObject(ofClass: UIImage.self) { + itemProvider.loadObject(ofClass: UIImage.self) { image, error in + DispatchQueue.main.async { + if let image = image as? UIImage, let imageData = image.pngData() { + let uti = MXKUTI(mimeType: "image/png") + self.delegate?.singleImagePickerPresenter(self, didSelectImageData: imageData, withUTI: uti) + } else { + self.delegate?.singleImagePickerPresenterDidCancel(self) + } + } + } + } else { + self.delegate?.singleImagePickerPresenterDidCancel(self) + } } } }