NetNewsWire/Frameworks/Account/CloudKit/CloudKitArticleStatusUpdate...

71 lines
1.3 KiB
Swift

//
// CloudKitArticleStatusUpdate.swift
// Account
//
// Created by Maurice Parker on 4/29/20.
// Copyright © 2020 Ranchero Software, LLC. All rights reserved.
//
import Foundation
import SyncDatabase
import Articles
struct CloudKitArticleStatusUpdate {
enum Record {
case all
case new
case statusOnly
case delete
}
var articleID: String
var statuses: [SyncStatus]
var article: Article?
init?(articleID: String, statuses: [SyncStatus], article: Article?) {
self.articleID = articleID
self.statuses = statuses
self.article = article
let rec = record
// This is an invalid status update. The article is required for new and all
if article == nil && (rec == .all || rec == .new) {
return nil
}
}
var record: Record {
if statuses.contains(where: { $0.key == .deleted }) {
return .delete
}
if statuses.count == 1, statuses.first!.key == .new {
return .new
}
if let article = article {
if article.status.read == false || article.status.starred == true {
return .all
}
}
return .statusOnly
}
var isRead: Bool {
if let article = article {
return article.status.read
}
return true
}
var isStarred: Bool {
if let article = article {
return article.status.starred
}
return false
}
}