Files
omnivore/apple/OmnivoreKit/Sources/Services/DataService/Selections/SubsciptionSelection.swift
2023-12-20 14:35:59 +08:00

48 lines
1.2 KiB
Swift

import Foundation
import Models
import SwiftGraphQL
let subscriptionSelection = Selection.Subscription {
Subscription(
createdAt: try $0.createdAt().value,
description: try $0.description(),
subscriptionID: try $0.id(),
name: try $0.name(),
type: try SubscriptionType.from($0.type()),
folder: try $0.folder() ?? "inbox",
fetchContent: try $0.fetchContent() ?? true,
newsletterEmailAddress: try $0.newsletterEmail(),
status: try SubscriptionStatus.make(from: $0.status()),
unsubscribeHttpUrl: try $0.unsubscribeHttpUrl(),
unsubscribeMailTo: try $0.unsubscribeMailTo(),
updatedAt: try $0.updatedAt()?.value ?? Date(),
url: try $0.url(),
icon: try $0.icon()
)
}
extension SubscriptionStatus {
static func make(from status: Enums.SubscriptionStatus) -> SubscriptionStatus {
switch status {
case .active:
return .active
case .deleted:
return .deleted
case .unsubscribed:
return .unsubscribed
}
}
}
extension SubscriptionType {
static func from(_ other: Enums.SubscriptionType) -> SubscriptionType {
switch other {
case .rss:
return .feed
case .newsletter:
return .newsletter
}
}
}