diff --git a/WordPress/Classes/Services/Stories/StoryEditor.swift b/WordPress/Classes/Services/Stories/StoryEditor.swift index a0660b3070a4..7618e1c2fc53 100644 --- a/WordPress/Classes/Services/Stories/StoryEditor.swift +++ b/WordPress/Classes/Services/Stories/StoryEditor.swift @@ -85,6 +85,7 @@ class StoryEditor: CameraController { settings.animateEditorControls = false settings.exportStopMotionPhotoAsVideo = false settings.fontSelectorUsesFont = true + settings.aspectRatio = 9/16 return settings } @@ -98,20 +99,16 @@ class StoryEditor: CameraController { static func editor(blog: Blog, context: NSManagedObjectContext, updated: @escaping (Results) -> Void, - uploaded: @escaping (Results) -> Void) throws -> StoryEditor { + uploaded: @escaping (Results) -> Void) -> StoryEditor { let post = PostService(managedObjectContext: context).createDraftPost(for: blog) - return try editor(post: post, mediaFiles: nil, publishOnCompletion: true, updated: updated, uploaded: uploaded) + return editor(post: post, mediaFiles: nil, publishOnCompletion: true, updated: updated, uploaded: uploaded) } static func editor(post: AbstractPost, mediaFiles: [MediaFile]?, publishOnCompletion: Bool = false, updated: @escaping (Results) -> Void, - uploaded: @escaping (Results) -> Void) throws -> StoryEditor { - - guard !UIDevice.isPad() else { - throw EditorCreationError.unsupportedDevice - } + uploaded: @escaping (Results) -> Void) -> StoryEditor { let controller = StoryEditor(post: post, onClose: nil, @@ -240,7 +237,7 @@ extension StoryEditor: PublishingEditor { } var prepublishingSourceView: UIView? { - return nil + return super.confirmButton } var alertBarButtonItem: UIBarButtonItem? { diff --git a/WordPress/Classes/Services/Stories/WPMediaPicker+MediaPicker.swift b/WordPress/Classes/Services/Stories/WPMediaPicker+MediaPicker.swift index a0f419daa7fc..edfe67618fc4 100644 --- a/WordPress/Classes/Services/Stories/WPMediaPicker+MediaPicker.swift +++ b/WordPress/Classes/Services/Stories/WPMediaPicker+MediaPicker.swift @@ -178,6 +178,10 @@ private extension PHAsset { options.deliveryMode = .opportunistic options.resizeMode = .fast options.isNetworkAccessAllowed = true + var size = size + if size == .zero { + size = CGSize(width: pixelWidth, height: pixelHeight) + } PHImageManager.default().requestImage(for: self, targetSize: size, contentMode: .aspectFit, options: options, resultHandler: { (result, info) in let error = info?[PHImageErrorKey] as? Error let cancelled = info?[PHImageCancelledKey] as? Bool @@ -216,16 +220,19 @@ extension WPMediaAsset { /// - Returns: A Publisher containing resuling image, URL and any errors during export. func imagePublisher() -> AnyPublisher<(UIImage, URL?), Error> { return Future<(UIImage, URL?), Error> { promise in - let size = self.fit(size: UIScreen.main.nativeBounds.size) - self.sizedImage(with: size) { (image, error) in - guard let image = image else { - if let error = error { - return promise(.failure(error)) - } - return promise(.failure(WPMediaAssetError.imageAssetExportFailed)) - } - return promise(.success((image, nil))) - } +// let size = self.fit(size: UIScreen.main.nativeBounds.size) +// self.sizedImage(with: size) { (image, error) in +// guard let image = image else { +// if let error = error { +// return promise(.failure(error)) +// } +// return promise(.failure(WPMediaAssetError.imageAssetExportFailed)) +// } +// return promise(.success((image, nil))) +// } + self.sizedImage(with: .zero, completionHandler: { image, error in + return promise(.success((image!, nil))) + }) }.eraseToAnyPublisher() } diff --git a/WordPress/Classes/ViewRelated/Blog/Blog Details/BlogDetailsViewController+FAB.swift b/WordPress/Classes/ViewRelated/Blog/Blog Details/BlogDetailsViewController+FAB.swift index 7b93f14f6c75..6ceb686467e6 100644 --- a/WordPress/Classes/ViewRelated/Blog/Blog Details/BlogDetailsViewController+FAB.swift +++ b/WordPress/Classes/ViewRelated/Blog/Blog Details/BlogDetailsViewController+FAB.swift @@ -36,6 +36,6 @@ extension BlogDetailsViewController { //TODO: Can be removed after stories launches private var shouldShowNewStory: Bool { - return Feature.enabled(.stories) && blog.supports(.stories) && !UIDevice.isPad() + return Feature.enabled(.stories) && blog.supports(.stories) } } diff --git a/WordPress/Classes/ViewRelated/Gutenberg/GutenbergViewController.swift b/WordPress/Classes/ViewRelated/Gutenberg/GutenbergViewController.swift index 0b1a7e9c325c..28f2de713801 100644 --- a/WordPress/Classes/ViewRelated/Gutenberg/GutenbergViewController.swift +++ b/WordPress/Classes/ViewRelated/Gutenberg/GutenbergViewController.swift @@ -702,7 +702,7 @@ extension GutenbergViewController: GutenbergBridgeDelegate { } func showEditor(files: [MediaFile]) throws { - storyEditor = try StoryEditor.editor(post: post, mediaFiles: files, publishOnCompletion: false, updated: { [weak self] result in + storyEditor = StoryEditor.editor(post: post, mediaFiles: files, publishOnCompletion: false, updated: { [weak self] result in switch result { case .success: self?.dismiss(animated: true, completion: nil) diff --git a/WordPress/Classes/ViewRelated/Post/PostEditor+Publish.swift b/WordPress/Classes/ViewRelated/Post/PostEditor+Publish.swift index 2943834d6b23..9e13dc954aa4 100644 --- a/WordPress/Classes/ViewRelated/Post/PostEditor+Publish.swift +++ b/WordPress/Classes/ViewRelated/Post/PostEditor+Publish.swift @@ -234,7 +234,7 @@ extension PublishingEditor where Self: UIViewController { let prepublishingNavigationController = PrepublishingNavigationController(rootViewController: prepublishing) let bottomSheet = BottomSheetViewController(childViewController: prepublishingNavigationController, customHeaderSpacing: 0) if let sourceView = prepublishingSourceView { - bottomSheet.show(from: self, sourceView: sourceView) + bottomSheet.show(from: self.topmostPresentedViewController, sourceView: sourceView, arrowDirections: [.up]) } else { bottomSheet.show(from: self.topmostPresentedViewController) } diff --git a/WordPress/Classes/ViewRelated/System/WPTabBarController+ShowTab.swift b/WordPress/Classes/ViewRelated/System/WPTabBarController+ShowTab.swift index b6aec532929d..1965af3874b6 100644 --- a/WordPress/Classes/ViewRelated/System/WPTabBarController+ShowTab.swift +++ b/WordPress/Classes/ViewRelated/System/WPTabBarController+ShowTab.swift @@ -69,26 +69,22 @@ extension WPTabBarController { WPAppAnalytics.track(.editorCreatedPost, withProperties: [WPAppAnalyticsKeyTapSource: source, WPAppAnalyticsKeyBlogID: blogID, WPAppAnalyticsKeyEditorSource: "stories", WPAppAnalyticsKeyPostType: "post"]) - do { - let controller = try StoryEditor.editor(blog: blog, context: ContextManager.shared.mainContext, updated: {_ in }, uploaded: { [weak self] result in - switch result { - case .success: - break - case .failure(let error): - self?.dismiss(animated: true, completion: nil) - let controller = UIAlertController(title: "Failed to create story", message: "Error: \(error)", preferredStyle: .alert) - let dismiss = UIAlertAction(title: "Dismiss", style: .default) { _ in - controller.dismiss(animated: true, completion: nil) - } - controller.addAction(dismiss) - self?.present(controller, animated: true, completion: nil) + let controller = StoryEditor.editor(blog: blog, context: ContextManager.shared.mainContext, updated: {_ in }, uploaded: { [weak self] result in + switch result { + case .success: + break + case .failure(let error): + self?.dismiss(animated: true, completion: nil) + let controller = UIAlertController(title: "Failed to create story", message: "Error: \(error)", preferredStyle: .alert) + let dismiss = UIAlertAction(title: "Dismiss", style: .default) { _ in + controller.dismiss(animated: true, completion: nil) } - }) + controller.addAction(dismiss) + self?.present(controller, animated: true, completion: nil) + } + }) - present(controller, animated: true, completion: nil) - } catch let error { - assertionFailure("Story editor should not fail since this button is hidden on iPads.") - } + present(controller, animated: true, completion: nil) } } }