From bc32fc1cb913a2ed22dcbb03caa465ada316b673 Mon Sep 17 00:00:00 2001 From: Nate Weaver Date: Sun, 22 Sep 2019 09:55:19 -0500 Subject: [PATCH] Add row swipe action for Mark Read/Unread --- .../Timeline/TimelineViewController.swift | 26 +++++++++++++++++++ 1 file changed, 26 insertions(+) diff --git a/Mac/MainWindow/Timeline/TimelineViewController.swift b/Mac/MainWindow/Timeline/TimelineViewController.swift index 8fdb02647..ae8906d12 100644 --- a/Mac/MainWindow/Timeline/TimelineViewController.swift +++ b/Mac/MainWindow/Timeline/TimelineViewController.swift @@ -746,6 +746,32 @@ extension TimelineViewController: NSTableViewDelegate { cell.objectValue = nil cell.cellData = TimelineCellData() } + + private func toggleArticleRead(_ article: Article) { + guard let undoManager = undoManager, let markUnreadCommand = MarkStatusCommand(initialArticles: [article], markingRead: !article.status.read, undoManager: undoManager) else { + return + } + self.runCommand(markUnreadCommand) + } + + func tableView(_ tableView: NSTableView, rowActionsForRow row: Int, edge: NSTableView.RowActionEdge) -> [NSTableViewRowAction] { + + if edge == .leading { + guard let article = articles.articleAtRow(row) else { + return [] + } + + let title = article.status.read ? NSLocalizedString("Mark Unread", comment: "mark unread") : NSLocalizedString("Mark Read", comment: "mark read") + + let action = NSTableViewRowAction(style: .regular, title: title) { (action, row) in + self.toggleArticleRead(article); + tableView.rowActionsVisible = false + } + return [action] + } + + return [] + } } // MARK: - Private