mirror of
https://github.com/Ranchero-Software/NetNewsWire.git
synced 2024-12-12 01:17:29 +01:00
67 lines
1.1 KiB
Swift
67 lines
1.1 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 statusOnly
|
|
case delete
|
|
}
|
|
|
|
var articleID: String
|
|
var statuses: [SyncStatus]
|
|
var article: Article?
|
|
|
|
var record: Record {
|
|
if statuses.contains(where: { $0.key == .deleted }) {
|
|
return .delete
|
|
}
|
|
|
|
if let article = article {
|
|
if statuses.contains(where: { $0.key == .new }) {
|
|
return .all
|
|
}
|
|
if article.status.read == false || article.status.starred == true {
|
|
return .all
|
|
}
|
|
}
|
|
|
|
return .statusOnly
|
|
}
|
|
|
|
var isRead: Bool {
|
|
if let article = article {
|
|
return article.status.read
|
|
}
|
|
|
|
if let status = statuses.first(where: { $0.key == .read }) {
|
|
return status.flag
|
|
}
|
|
|
|
return true
|
|
}
|
|
|
|
var isStarred: Bool {
|
|
if let article = article {
|
|
return article.status.starred
|
|
}
|
|
|
|
if let status = statuses.first(where: { $0.key == .starred }) {
|
|
return status.flag
|
|
}
|
|
|
|
return false
|
|
}
|
|
|
|
}
|