Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion WordPress/Classes/Services/MediaImageService.swift
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@ final class MediaImageService: NSObject {

static func migrateCacheIfNeeded() {
let didMigrateKey = "MediaImageService-didMigrateCacheKey"
guard Feature.enabled(.mediaModernization) && !UserDefaults.standard.bool(forKey: didMigrateKey) else {
guard !UserDefaults.standard.bool(forKey: didMigrateKey) else {
return
}
UserDefaults.standard.set(true, forKey: didMigrateKey)
Expand Down
5 changes: 0 additions & 5 deletions WordPress/Classes/Utility/BuildInformation/FeatureFlag.swift
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,6 @@ enum FeatureFlag: Int, CaseIterable {
case commentModerationUpdate
case compliancePopover
case domainFocus
case mediaModernization

/// Returns a boolean indicating if the feature is enabled
var enabled: Bool {
Expand Down Expand Up @@ -41,8 +40,6 @@ enum FeatureFlag: Int, CaseIterable {
return true
case .domainFocus:
return true
case .mediaModernization:
return true
}
}

Expand Down Expand Up @@ -85,8 +82,6 @@ extension FeatureFlag {
return "Compliance Popover"
case .domainFocus:
return "Domain Focus"
case .mediaModernization:
return "Media Modernization"
}
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -98,7 +98,9 @@ final class DashboardQuickActionsCardCell: UICollectionViewCell, Reusable, UITab
}
case .media:
trackQuickActionsEvent(.openedMediaLibrary, blog: blog)
MediaLibraryViewController.showForBlog(blog, from: parentViewController)
let controller = SiteMediaViewController(blog: blog)
parentViewController.show(controller, sender: nil)
QuickStartTourGuide.shared.visited(.mediaScreen)
case .stats:
trackQuickActionsEvent(.statsAccessed, blog: blog)
StatsViewController.show(for: blog, from: parentViewController)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -1827,15 +1827,8 @@ - (void)showPageListFromSource:(BlogDetailsNavigationSource)source
- (void)showMediaLibraryFromSource:(BlogDetailsNavigationSource)source
{
[self trackEvent:WPAnalyticsStatOpenedMediaLibrary fromSource:source];
if ([Feature enabled:FeatureFlagMediaModernization]) {
SiteMediaViewController *controller = [[SiteMediaViewController alloc] initWithBlog:self.blog];
[self.presentationDelegate presentBlogDetailsViewController:controller];
} else {
MediaLibraryViewController *controller = [[MediaLibraryViewController alloc] initWithBlog:self.blog];
controller.navigationItem.largeTitleDisplayMode = UINavigationItemLargeTitleDisplayModeNever;
[self.presentationDelegate presentBlogDetailsViewController:controller];
}

SiteMediaViewController *controller = [[SiteMediaViewController alloc] initWithBlog:self.blog];
[self.presentationDelegate presentBlogDetailsViewController:controller];
[[QuickStartTourGuide shared] visited:QuickStartTourElementMediaScreen];
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -138,38 +138,6 @@ extension SiteIconPickerPresenter: ImagePickerControllerDelegate {
}
}

extension SiteIconPickerPresenter: MediaPickerViewControllerDelegate {

func mediaPickerControllerDidCancel(_ picker: WPMediaPickerViewController) {
onCompletion?(nil, nil)
}

/// Retrieves the chosen image and triggers the ImageCropViewController display.
///
func mediaPickerController(_ picker: WPMediaPickerViewController, didFinishPicking assets: [WPMediaAsset]) {
dataSource = nil

guard let asset = assets.first else {
return
}
guard let media = asset as? Media else {
assertionFailure("Unsupported asset: \(asset)")
return
}
WPAnalytics.track(.siteSettingsSiteIconGalleryPicked)

showLoadingMessage()
originalMedia = media
MediaThumbnailCoordinator.shared.thumbnail(for: media, with: CGSize.zero, onCompletion: { [weak self] (image, error) in
guard let image = image else {
self?.showErrorLoadingImageMessage()
return
}
self?.showImageCropViewController(image, presentingViewController: picker)
})
}
}

extension SiteIconPickerPresenter: SiteMediaPickerViewControllerDelegate {
func siteMediaPickerViewController(_ viewController: SiteMediaPickerViewController, didFinishWithSelection selection: [Media]) {
guard let media = selection.first else {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,27 +10,11 @@ import UniformTypeIdentifiers

public typealias GutenbergMediaPickerHelperCallback = ([Any]?) -> Void

class GutenbergMediaPickerHelper: NSObject {

fileprivate struct Constants {
static let mediaPickerInsertText = NSLocalizedString(
"Insert %@",
comment: "Button title used in media picker to insert media (photos / videos) into a post. Placeholder will be the number of items that will be inserted."
)
}

fileprivate let post: AbstractPost
fileprivate unowned let context: UIViewController
fileprivate weak var navigationPicker: WPNavigationMediaPickerViewController?
fileprivate let noResultsView = NoResultsViewController.controller()
final class GutenbergMediaPickerHelper: NSObject {
private let post: AbstractPost
private unowned let context: UIViewController

/// Media Library Data Source
///
fileprivate lazy var mediaLibraryDataSource: MediaLibraryPickerDataSource = {
let dataSource = MediaLibraryPickerDataSource(post: self.post)
dataSource.ignoreSyncErrors = true
return dataSource
}()

var didPickMediaCallback: GutenbergMediaPickerHelperCallback?

Expand All @@ -48,13 +32,9 @@ class GutenbergMediaPickerHelper: NSObject {
case .device:
presentNativePicker(filter: filter, allowMultipleSelection: allowMultipleSelection, completion: callback)
case .mediaLibrary:
if Feature.enabled(.mediaModernization) {
didPickMediaCallback = callback
MediaPickerMenu(viewController: context, filter: .init(filter), isMultipleSelectionEnabled: allowMultipleSelection)
.showSiteMediaPicker(blog: post.blog, delegate: self)
} else {
presentLegacySiteMediaPicker(filter: filter, allowMultipleSelection: allowMultipleSelection, callback: callback)
}
didPickMediaCallback = callback
MediaPickerMenu(viewController: context, filter: .init(filter), isMultipleSelectionEnabled: allowMultipleSelection)
.showSiteMediaPicker(blog: post.blog, delegate: self)
@unknown default:
break
}
Expand All @@ -76,28 +56,6 @@ class GutenbergMediaPickerHelper: NSObject {
context.present(picker, animated: true)
}

private func presentLegacySiteMediaPicker(filter: WPMediaType,
allowMultipleSelection: Bool,
callback: @escaping GutenbergMediaPickerHelperCallback) {
didPickMediaCallback = callback

let mediaPickerOptions = WPMediaPickerOptions.withDefaults(filter: filter, allowMultipleSelection: allowMultipleSelection)
let picker = WPNavigationMediaPickerViewController(options: mediaPickerOptions)
navigationPicker = picker

picker.startOnGroupSelector = false
picker.showGroupSelector = false
picker.dataSource = mediaLibraryDataSource
picker.selectionActionTitle = Constants.mediaPickerInsertText
picker.mediaPicker.options = mediaPickerOptions
picker.delegate = self
picker.mediaPicker.registerClass(forCustomHeaderView: DeviceMediaPermissionsHeader.self)

picker.previewActionTitle = NSLocalizedString("Edit %@", comment: "Button that displays the media editor to the user")
picker.modalPresentationStyle = .currentContext
context.present(picker, animated: true)
}

func presentCameraCaptureFullScreen(animated: Bool,
filter: WPMediaType,
callback: @escaping GutenbergMediaPickerHelperCallback) {
Expand Down Expand Up @@ -137,61 +95,8 @@ extension GutenbergMediaPickerHelper: ImagePickerControllerDelegate {
}
}

// MARK: - User messages for video limits allowances
//
extension GutenbergMediaPickerHelper: VideoLimitsAlertPresenter {}

// MARK: - Picker Delegate
//
extension GutenbergMediaPickerHelper: WPMediaPickerViewControllerDelegate, MediaPickerViewControllerDelegate {

func mediaPickerController(_ picker: WPMediaPickerViewController, didFinishPicking assets: [WPMediaAsset]) {
invokeMediaPickerCallback(asset: assets)
picker.dismiss(animated: true, completion: nil)
}

open func mediaPickerController(_ picker: WPMediaPickerViewController, handleError error: Error) -> Bool {
let presenter = context.topmostPresentedViewController
let alert = WPMediaPickerAlertHelper.buildAlertControllerWithError(error)
presenter.present(alert, animated: true)
return true
}

func mediaPickerControllerDidCancel(_ picker: WPMediaPickerViewController) {
mediaLibraryDataSource.searchCancelled()
context.dismiss(animated: true, completion: { self.invokeMediaPickerCallback(asset: nil) })
}

fileprivate func invokeMediaPickerCallback(asset: [WPMediaAsset]?) {
didPickMediaCallback?(asset)
didPickMediaCallback = nil
}

func emptyViewController(forMediaPickerController picker: WPMediaPickerViewController) -> UIViewController? {
guard picker == navigationPicker?.mediaPicker else {
return nil
}
return noResultsView
}

func mediaPickerController(_ picker: WPMediaPickerViewController, didUpdateSearchWithAssetCount assetCount: Int) {
if (mediaLibraryDataSource.searchQuery?.count ?? 0) > 0 {
noResultsView.configureForNoSearchResult()
} else {
noResultsView.removeFromView()
}
}

func mediaPickerControllerWillBeginLoadingData(_ picker: WPMediaPickerViewController) {
noResultsView.configureForFetching()
}

func mediaPickerControllerDidEndLoadingData(_ picker: WPMediaPickerViewController) {
noResultsView.removeFromView()
noResultsView.configureForNoAssets(userCanUploadMedia: false)
}
}

extension GutenbergMediaPickerHelper: SiteMediaPickerViewControllerDelegate {
func siteMediaPickerViewController(_ viewController: SiteMediaPickerViewController, didFinishWithSelection selection: [Media]) {
context.dismiss(animated: true)
Expand All @@ -208,26 +113,3 @@ extension GutenbergMediaPickerHelper: PHPickerViewControllerDelegate {
didPickMediaCallback = nil
}
}

fileprivate extension WPMediaPickerOptions {
static func withDefaults(
showMostRecentFirst: Bool = true,
filter: WPMediaType = [.image],
allowCaptureOfMedia: Bool = false,
showSearchBar: Bool = true,
badgedUTTypes: Set<String> = [UTType.gif.identifier],
allowMultipleSelection: Bool = false,
preferredStatusBarStyle: UIStatusBarStyle = WPStyleGuide.preferredStatusBarStyle
) -> WPMediaPickerOptions {
let options = WPMediaPickerOptions()
options.showMostRecentFirst = showMostRecentFirst
options.filter = filter
options.allowCaptureOfMedia = allowCaptureOfMedia
options.showSearchBar = showSearchBar
options.badgedUTTypes = badgedUTTypes
options.allowMultipleSelection = allowMultipleSelection
options.preferredStatusBarStyle = preferredStatusBarStyle

return options
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -255,12 +255,6 @@ class GutenbergViewController: UIViewController, PostEditor, FeaturedImageDelega
return UInt(currentMetrics.wordCount)
}

/// Media Library Data Source
///
lazy var mediaLibraryDataSource: MediaLibraryPickerDataSource = {
return MediaLibraryPickerDataSource(post: self.post)
}()

// MARK: - Private variables

private lazy var gutenbergImageLoader: GutenbergImageLoader = {
Expand Down
Loading