Skip to content

Commit

Permalink
Add iPad support
Browse files Browse the repository at this point in the history
  • Loading branch information
bjtitus committed Mar 6, 2021
1 parent db302de commit a275b4c
Show file tree
Hide file tree
Showing 6 changed files with 39 additions and 39 deletions.
13 changes: 5 additions & 8 deletions WordPress/Classes/Services/Stories/StoryEditor.swift
Original file line number Diff line number Diff line change
Expand Up @@ -85,6 +85,7 @@ class StoryEditor: CameraController {
settings.animateEditorControls = false
settings.exportStopMotionPhotoAsVideo = false
settings.fontSelectorUsesFont = true
settings.aspectRatio = 9/16

return settings
}
Expand All @@ -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,
Expand Down Expand Up @@ -240,7 +237,7 @@ extension StoryEditor: PublishingEditor {
}

var prepublishingSourceView: UIView? {
return nil
return super.confirmButton
}

var alertBarButtonItem: UIBarButtonItem? {
Expand Down
27 changes: 17 additions & 10 deletions WordPress/Classes/Services/Stories/WPMediaPicker+MediaPicker.swift
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down Expand Up @@ -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()
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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)
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -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)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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)
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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)
}
}
}

0 comments on commit a275b4c

Please sign in to comment.