NetNewsWire/Multiplatform/Shared/Timeline/TimelineContextMenu.swift

112 lines
2.6 KiB
Swift

//
// TimelineContextMenu.swift
// NetNewsWire
//
// Created by Maurice Parker on 7/17/20.
// Copyright © 2020 Ranchero Software. All rights reserved.
//
import SwiftUI
struct TimelineContextMenu: View {
@EnvironmentObject private var timelineModel: TimelineModel
var timelineItem: TimelineItem
@ViewBuilder var body: some View {
if timelineModel.canMarkIndicatedArticlesAsRead(timelineItem.article) {
Button {
timelineModel.markIndicatedArticlesAsRead(timelineItem.article)
} label: {
Text("Mark as Read")
#if os(iOS)
AppAssets.readOpenImage
#endif
}
}
if timelineModel.canMarkIndicatedArticlesAsUnread(timelineItem.article) {
Button {
timelineModel.markIndicatedArticlesAsUnread(timelineItem.article)
} label: {
Text("Mark as Unread")
#if os(iOS)
AppAssets.readClosedImage
#endif
}
}
if timelineModel.canMarkIndicatedArticlesAsStarred(timelineItem.article) {
Button {
timelineModel.markIndicatedArticlesAsStarred(timelineItem.article)
} label: {
Text("Mark as Starred")
#if os(iOS)
AppAssets.starClosedImage
#endif
}
}
if timelineModel.canMarkIndicatedArticlesAsUnstarred(timelineItem.article) {
Button {
timelineModel.markIndicatedArticlesAsUnstarred(timelineItem.article)
} label: {
Text("Mark as Unstarred")
#if os(iOS)
AppAssets.starOpenImage
#endif
}
}
if timelineModel.canMarkAboveAsRead(timelineItem.article) {
Button {
timelineModel.markAboveAsRead(timelineItem.article)
} label: {
Text("Mark Above as Read")
#if os(iOS)
AppAssets.markAboveAsReadImage
#endif
}
}
if timelineModel.canMarkBelowAsRead(timelineItem.article) {
Button {
timelineModel.markBelowAsRead(timelineItem.article)
} label: {
Text("Mark Below As Read")
#if os(iOS)
AppAssets.markBelowAsReadImage
#endif
}
}
// This thing isn't lazily initialized and gets called excessively even for things like selecting an article
// if let feed = timelineItem.article.webFeed, timelineModel.canMarkAllAsReadInFeed(feed) {
// Divider()
// Button {
// timelineModel.markAllAsReadInFeed(feed)
// } label: {
// Text("Mark All as Read in \(feed.nameForDisplay)")
// #if os(iOS)
// AppAssets.markAllAsReadImage
// #endif
// }
// }
if timelineModel.canOpenIndicatedArticleInBrowser(timelineItem.article) {
Divider()
Button {
timelineModel.openIndicatedArticleInBrowser(timelineItem.article)
} label: {
Text("Open in Browser")
#if os(iOS)
AppAssets.openInBrowserImage
#endif
}
}
}
}