diff --git a/Signal/src/ViewControllers/MediaPageViewController.swift b/Signal/src/ViewControllers/MediaPageViewController.swift index 02ac04b05..e7c0d7244 100644 --- a/Signal/src/ViewControllers/MediaPageViewController.swift +++ b/Signal/src/ViewControllers/MediaPageViewController.swift @@ -331,7 +331,7 @@ class MediaPageViewController: UIPageViewController, UIPageViewControllerDataSou return } - galleryRailView.configureCellViews(itemProvider: currentItem.album, focusedItem: currentItem) + galleryRailView.configureCellViews(itemProvider: currentItem.album, focusedItem: currentItem, cellViewDecoratorBlock: { _ in }) } // MARK: Actions diff --git a/SignalMessaging/ViewControllers/AttachmentApprovalViewController.swift b/SignalMessaging/ViewControllers/AttachmentApprovalViewController.swift index daf4bba9b..094e6e476 100644 --- a/SignalMessaging/ViewControllers/AttachmentApprovalViewController.swift +++ b/SignalMessaging/ViewControllers/AttachmentApprovalViewController.swift @@ -263,29 +263,27 @@ public class AttachmentApprovalViewController: UIPageViewController, UIPageViewC }) } - func addDeleteIcon(cellViews: [GalleryRailCellView]) { - for cellView in cellViews { - guard let attachmentItem = cellView.item as? SignalAttachmentItem else { - owsFailDebug("attachmentItem was unexpectedly nil") - return - } + func addDeleteIcon(cellView: GalleryRailCellView) { + guard let attachmentItem = cellView.item as? SignalAttachmentItem else { + owsFailDebug("attachmentItem was unexpectedly nil") + return + } - let button = OWSButton { [weak self] in - guard let strongSelf = self else { return } - strongSelf.remove(attachmentItem: attachmentItem) - } - button.setImage(#imageLiteral(resourceName: "ic_small_x"), for: .normal) + let button = OWSButton { [weak self] in + guard let strongSelf = self else { return } + strongSelf.remove(attachmentItem: attachmentItem) + } + button.setImage(#imageLiteral(resourceName: "ic_small_x"), for: .normal) - let kInsetDistance: CGFloat = 5 - button.imageEdgeInsets = UIEdgeInsets(top: kInsetDistance, left: kInsetDistance, bottom: kInsetDistance, right: kInsetDistance) + let kInsetDistance: CGFloat = 5 + button.imageEdgeInsets = UIEdgeInsets(top: kInsetDistance, left: kInsetDistance, bottom: kInsetDistance, right: kInsetDistance) - cellView.addSubview(button) + cellView.addSubview(button) - let kButtonWidth: CGFloat = 9 + kInsetDistance * 2 - button.autoSetDimensions(to: CGSize(width: kButtonWidth, height: kButtonWidth)) - button.autoPinEdge(toSuperviewMargin: .top) - button.autoPinEdge(toSuperviewMargin: .trailing) - } + let kButtonWidth: CGFloat = 9 + kInsetDistance * 2 + button.autoSetDimensions(to: CGSize(width: kButtonWidth, height: kButtonWidth)) + button.autoPinEdge(toSuperviewMargin: .top) + button.autoPinEdge(toSuperviewMargin: .trailing) } var pagerScrollView: UIScrollView? @@ -428,8 +426,12 @@ public class AttachmentApprovalViewController: UIPageViewController, UIPageViewC return } - galleryRailView.configureCellViews(itemProvider: attachmentItemCollection, focusedItem: currentItem) - addDeleteIcon(cellViews: galleryRailView.cellViews) + let cellViewDecoratorBlock = { (cellView: GalleryRailCellView) in + self.addDeleteIcon(cellView: cellView) + } + galleryRailView.configureCellViews(itemProvider: attachmentItemCollection, + focusedItem: currentItem, + cellViewDecoratorBlock: cellViewDecoratorBlock) galleryRailView.isHidden = attachmentItemCollection.attachmentItems.count < 2 } diff --git a/SignalMessaging/Views/GalleryRailView.swift b/SignalMessaging/Views/GalleryRailView.swift index 42c72c854..5274f4aff 100644 --- a/SignalMessaging/Views/GalleryRailView.swift +++ b/SignalMessaging/Views/GalleryRailView.swift @@ -118,7 +118,7 @@ public class GalleryRailView: UIView, GalleryRailCellViewDelegate { // MARK: Public - public func configureCellViews(itemProvider: GalleryRailItemProvider?, focusedItem: GalleryRailItem?) { + public func configureCellViews(itemProvider: GalleryRailItemProvider?, focusedItem: GalleryRailItem?, cellViewDecoratorBlock: (GalleryRailCellView) -> Void) { let animationDuration: TimeInterval = 0.2 guard let itemProvider = itemProvider else { @@ -169,7 +169,7 @@ public class GalleryRailView: UIView, GalleryRailCellViewDelegate { self.isHidden = false } - let cellViews = buildCellViews(items: itemProvider.railItems) + let cellViews = buildCellViews(items: itemProvider.railItems, cellViewDecoratorBlock: cellViewDecoratorBlock) self.cellViews = cellViews let stackView = UIStackView(arrangedSubviews: cellViews) stackView.axis = .horizontal @@ -203,10 +203,11 @@ public class GalleryRailView: UIView, GalleryRailCellViewDelegate { return scrollView }() - private func buildCellViews(items: [GalleryRailItem]) -> [GalleryRailCellView] { + private func buildCellViews(items: [GalleryRailItem], cellViewDecoratorBlock: (GalleryRailCellView) -> Void) -> [GalleryRailCellView] { return items.map { item in let cellView = GalleryRailCellView() cellView.configure(item: item, delegate: self) + cellViewDecoratorBlock(cellView) return cellView } }