Stub out mark as read and star functionality

This commit is contained in:
Maurice Parker
2020-07-09 16:34:47 -05:00
parent 94f956b41f
commit 3e61c7044b
8 changed files with 95 additions and 18 deletions

View File

@@ -9,11 +9,15 @@
import Foundation
import Account
import Articles
import RSCore
final class SceneModel: ObservableObject {
@Published var refreshProgressState = RefreshProgressModel.State.none
var undoManager: UndoManager?
var undoableCommands = [UndoableCommand]()
var sidebarModel: SidebarModel?
var timelineModel: TimelineModel?
var articleModel: ArticleModel?
@@ -22,7 +26,7 @@ final class SceneModel: ObservableObject {
private var articleIconSchemeHandler: ArticleIconSchemeHandler? = nil
private var webViewProvider: WebViewProvider? = nil
// MARK: API
// MARK: Initialization API
func startup() {
self.refreshProgressModel = RefreshProgressModel()
@@ -31,7 +35,28 @@ final class SceneModel: ObservableObject {
self.articleIconSchemeHandler = ArticleIconSchemeHandler(sceneModel: self)
self.webViewProvider = WebViewProvider(articleIconSchemeHandler: self.articleIconSchemeHandler!)
}
// MARK: Article Status Change API
func toggleReadForCurrentArticle() {
articleModel?.toggleReadForCurrentArticle()
}
func toggleRead(_ article: Article) {
guard !article.status.read || article.isAvailableToMarkUnread else { return }
markArticles([article], statusKey: .read, flag: !article.status.read)
}
func toggleStarForCurrentArticle() {
articleModel?.toggleStarForCurrentArticle()
}
func toggleStar(_ article: Article) {
markArticles([article], statusKey: .starred, flag: !article.status.starred)
}
// MARK: Resource lookup API
func articleFor(_ articleID: String) -> Article? {
return timelineModel?.articleFor(articleID)
}
@@ -80,8 +105,22 @@ extension SceneModel: ArticleModelDelegate {
}
// MARK: UndoableCommandRunner
extension SceneModel: UndoableCommandRunner {
func markArticlesWithUndo(_ articles: [Article], statusKey: ArticleStatus.Key, flag: Bool) {
guard let undoManager = undoManager, let markReadCommand = MarkStatusCommand(initialArticles: articles, statusKey: statusKey, flag: flag, undoManager: undoManager) else {
return
}
runCommand(markReadCommand)
}
}
// MARK: Private
private extension SceneModel {
}