Only add delete button once

pull/1/head
Michael Kirk 6 years ago
parent 31637656fb
commit 8b5d1d9e69

@ -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

@ -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
}

@ -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
}
}

Loading…
Cancel
Save