From 526e7d75f0b654719f62f0f3493d717d906dc491 Mon Sep 17 00:00:00 2001 From: Christian Elies Date: Tue, 4 May 2021 23:34:38 +0200 Subject: [PATCH] refactor(): small improvements: docs(readme): added some swiftui views --- README.md | 8 ++++++++ .../API/LivePhoto/LivePhoto+SwiftUI.swift | 13 +++++-------- Sources/MediaSwiftUI/API/PHPicker/PHPicker.swift | 2 +- Sources/MediaSwiftUI/API/Photo/Photo+SwiftUI.swift | 13 +++++-------- Sources/MediaSwiftUI/API/Video/Video+SwiftUI.swift | 9 +++------ 5 files changed, 22 insertions(+), 23 deletions(-) diff --git a/README.md b/README.md index b81bee3..b3c6e2b 100644 --- a/README.md +++ b/README.md @@ -406,6 +406,14 @@ Use the `LazyVideos` wrapper if you want to fetch videos only on demand (request - **SwiftUI only**: `video.view` (*some View*) *Get a ready-to-use **SwiftUI** view for displaying the video in your UI* + +- **PHPicker**: SwiftUI port of the `PHPickerViewController` + + *Use the `PHPickerViewController` in your `SwiftUI` applications* + +- **PhotosUILivePhotoView**: SwiftUI port of the `PHLivePhotoView` + + *Use the `PHLivePhotoView` in your `SwiftUI` applications* ### 🚀 `@propertyWrapper` diff --git a/Sources/MediaSwiftUI/API/LivePhoto/LivePhoto+SwiftUI.swift b/Sources/MediaSwiftUI/API/LivePhoto/LivePhoto+SwiftUI.swift index 423a12e..314b40f 100644 --- a/Sources/MediaSwiftUI/API/LivePhoto/LivePhoto+SwiftUI.swift +++ b/Sources/MediaSwiftUI/API/LivePhoto/LivePhoto+SwiftUI.swift @@ -95,22 +95,19 @@ public extension LivePhoto { completion(result) } else { DispatchQueue.global(qos: .userInitiated).async { - let loadVideos = result.map { $0.itemProvider.loadLivePhoto() } - Publishers.MergeMany(loadVideos) + let loadLivePhotos = result.map { $0.itemProvider.loadLivePhoto() } + Publishers.MergeMany(loadLivePhotos) .collect() + .receive(on: DispatchQueue.main) .sink { result in switch result { case let .failure(error): - DispatchQueue.main.async { - completion(.failure(error)) - } + completion(.failure(error)) case .finished: () } } receiveValue: { urls in let browserResults = urls.map { BrowserResult.data($0) } - DispatchQueue.main.async { - completion(.success(browserResults)) - } + completion(.success(browserResults)) } .store(in: &Garbage.cancellables) } diff --git a/Sources/MediaSwiftUI/API/PHPicker/PHPicker.swift b/Sources/MediaSwiftUI/API/PHPicker/PHPicker.swift index 3df87ea..9d88dc5 100644 --- a/Sources/MediaSwiftUI/API/PHPicker/PHPicker.swift +++ b/Sources/MediaSwiftUI/API/PHPicker/PHPicker.swift @@ -11,7 +11,7 @@ import PhotosUI import SwiftUI @available(iOS 14, macCatalyst 14, *) -/// `SwiftUI` port of the `PHPicker`. +/// `SwiftUI` port of the `PHPickerViewController`. public struct PHPicker: UIViewControllerRepresentable { /// The coordinator of the view. Mainly it's the delegate of the underlying `PHPickerViewController`. public final class Coordinator: NSObject, PHPickerViewControllerDelegate { diff --git a/Sources/MediaSwiftUI/API/Photo/Photo+SwiftUI.swift b/Sources/MediaSwiftUI/API/Photo/Photo+SwiftUI.swift index 28489b9..74c1841 100644 --- a/Sources/MediaSwiftUI/API/Photo/Photo+SwiftUI.swift +++ b/Sources/MediaSwiftUI/API/Photo/Photo+SwiftUI.swift @@ -105,22 +105,19 @@ public extension Photo { completion(result) } else { DispatchQueue.global(qos: .userInitiated).async { - let loadVideos = result.map { $0.itemProvider.loadImage() } - Publishers.MergeMany(loadVideos) + let loadImages = result.map { $0.itemProvider.loadImage() } + Publishers.MergeMany(loadImages) .collect() + .receive(on: DispatchQueue.main) .sink { result in switch result { case let .failure(error): - DispatchQueue.main.async { - completion(.failure(error)) - } + completion(.failure(error)) case .finished: () } } receiveValue: { urls in let browserResults = urls.map { BrowserResult.data($0) } - DispatchQueue.main.async { - completion(.success(browserResults)) - } + completion(.success(browserResults)) } .store(in: &Garbage.cancellables) } diff --git a/Sources/MediaSwiftUI/API/Video/Video+SwiftUI.swift b/Sources/MediaSwiftUI/API/Video/Video+SwiftUI.swift index 86a14d4..c9d00cb 100644 --- a/Sources/MediaSwiftUI/API/Video/Video+SwiftUI.swift +++ b/Sources/MediaSwiftUI/API/Video/Video+SwiftUI.swift @@ -124,19 +124,16 @@ public extension Video { let loadVideos = result.map { $0.itemProvider.loadVideo() } Publishers.MergeMany(loadVideos) .collect() + .receive(on: DispatchQueue.main) .sink { result in switch result { case let .failure(error): - DispatchQueue.main.async { - completion(.failure(error)) - } + completion(.failure(error)) case .finished: () } } receiveValue: { urls in let browserResults = urls.map { BrowserResult.data($0) } - DispatchQueue.main.async { - completion(.success(browserResults)) - } + completion(.success(browserResults)) } .store(in: &Garbage.cancellables) }