From f5de076c668e08d84c45b6b748c241c6cd4ea05b Mon Sep 17 00:00:00 2001 From: Michael Kirk Date: Thu, 15 Nov 2018 14:30:33 -0600 Subject: [PATCH 1/2] fix remove from rail when deleted --- .../MediaGalleryViewController.swift | 34 ++++++++++++++----- 1 file changed, 25 insertions(+), 9 deletions(-) diff --git a/Signal/src/ViewControllers/MediaGalleryViewController.swift b/Signal/src/ViewControllers/MediaGalleryViewController.swift index 82b3d1859..df0d1dc74 100644 --- a/Signal/src/ViewControllers/MediaGalleryViewController.swift +++ b/Signal/src/ViewControllers/MediaGalleryViewController.swift @@ -9,19 +9,32 @@ public enum GalleryDirection { } class MediaGalleryAlbum { - private(set) var items: [MediaGalleryItem] + + private var originalItems: [MediaGalleryItem] + var items: [MediaGalleryItem] { + get { + guard let mediaGalleryDataSource = self.mediaGalleryDataSource else { + owsFailDebug("mediaGalleryDataSource was unexpectedly nil") + return originalItems + } + + return originalItems.filter { !mediaGalleryDataSource.deletedGalleryItems.contains($0) } + } + } + + weak var mediaGalleryDataSource: MediaGalleryDataSource? init(items: [MediaGalleryItem]) { - self.items = items + self.originalItems = items } func add(item: MediaGalleryItem) { - guard !items.contains(item) else { + guard !originalItems.contains(item) else { return } - items.append(item) - items.sort { (lhs, rhs) -> Bool in + originalItems.append(item) + originalItems.sort { (lhs, rhs) -> Bool in return lhs.albumIndex < rhs.albumIndex } } @@ -205,6 +218,9 @@ protocol MediaGalleryDataSource: class { var sections: [GalleryDate: [MediaGalleryItem]] { get } var sectionDates: [GalleryDate] { get } + var deletedAttachments: Set { get } + var deletedGalleryItems: Set { get } + func ensureGalleryItemsLoaded(_ direction: GalleryDirection, item: MediaGalleryItem, amount: UInt, completion: ((IndexSet, [IndexPath]) -> Void)?) func galleryItem(before currentItem: MediaGalleryItem) -> MediaGalleryItem? @@ -301,6 +317,9 @@ class MediaGallery: NSObject, MediaGalleryDataSource, MediaTileViewControllerDel @objc weak public var navigationController: MediaGalleryNavigationController! + var deletedAttachments: Set = Set() + var deletedGalleryItems: Set = Set() + private var pageViewController: MediaPageViewController? private let uiDatabaseConnection: YapDatabaseConnection @@ -732,7 +751,7 @@ class MediaGallery: NSObject, MediaGalleryDataSource, MediaTileViewControllerDel guard let existingAlbum = galleryAlbums[albumMessageId] else { let newAlbum = MediaGalleryAlbum(items: [item]) galleryAlbums[albumMessageId] = newAlbum - + newAlbum.mediaGalleryDataSource = self return newAlbum } @@ -889,9 +908,6 @@ class MediaGallery: NSObject, MediaGalleryDataSource, MediaTileViewControllerDel dataSourceDelegates.append(Weak(value: dataSourceDelegate)) } - var deletedAttachments: Set = Set() - var deletedGalleryItems: Set = Set() - func delete(items: [MediaGalleryItem], initiatedBy: MediaGalleryDataSourceDelegate) { AssertIsOnMainThread() From bf21e942562ab65d82a156072734e4dd7a77240e Mon Sep 17 00:00:00 2001 From: Michael Kirk Date: Thu, 15 Nov 2018 14:30:46 -0600 Subject: [PATCH 2/2] fix delete/share button --- Signal/src/ViewControllers/MediaPageViewController.swift | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Signal/src/ViewControllers/MediaPageViewController.swift b/Signal/src/ViewControllers/MediaPageViewController.swift index 17d2e42bf..6620f348c 100644 --- a/Signal/src/ViewControllers/MediaPageViewController.swift +++ b/Signal/src/ViewControllers/MediaPageViewController.swift @@ -269,13 +269,13 @@ class MediaPageViewController: UIPageViewController, UIPageViewControllerDataSou // MARK: Bar Buttons - let shareBarButton: UIBarButtonItem = { + lazy var shareBarButton: UIBarButtonItem = { let shareBarButton = UIBarButtonItem(barButtonSystemItem: .action, target: self, action: #selector(didPressShare)) shareBarButton.tintColor = Theme.darkThemePrimaryColor return shareBarButton }() - let deleteBarButton: UIBarButtonItem = { + lazy var deleteBarButton: UIBarButtonItem = { let deleteBarButton = UIBarButtonItem(barButtonSystemItem: .trash, target: self, action: #selector(didPressDelete))