mastodon-ios/Mastodon/Service/APIService/CoreData/APIService+CoreData+Subscri...

63 lines
1.8 KiB
Swift
Raw Normal View History

2021-04-08 13:47:31 +02:00
//
// APIService+CoreData+Notification.swift
// Mastodon
//
// Created by ihugo on 2021/4/11.
//
import os.log
import Foundation
import CoreData
import CoreDataStack
import MastodonSDK
extension APIService.CoreData {
static func createOrFetchSubscription(
2021-04-08 13:47:31 +02:00
into managedObjectContext: NSManagedObjectContext,
setting: Setting,
policy: Mastodon.API.Subscriptions.Policy
) -> (subscription: Subscription, isCreated: Bool) {
2021-04-08 13:47:31 +02:00
let oldSubscription: Subscription? = {
let request = Subscription.sortedFetchRequest
request.predicate = Subscription.predicate(policyRaw: policy.rawValue)
2021-04-08 13:47:31 +02:00
request.fetchLimit = 1
request.returnsObjectsAsFaults = false
return managedObjectContext.safeFetch(request).first
2021-04-08 13:47:31 +02:00
}()
if let oldSubscription = oldSubscription {
oldSubscription.setting = setting
2021-04-08 13:47:31 +02:00
return (oldSubscription, false)
} else {
let subscriptionProperty = Subscription.Property(policyRaw: policy.rawValue)
2021-04-08 13:47:31 +02:00
let subscription = Subscription.insert(
into: managedObjectContext,
property: subscriptionProperty,
setting: setting
2021-04-08 13:47:31 +02:00
)
let alertProperty = SubscriptionAlerts.Property(policy: policy)
2021-04-08 13:47:31 +02:00
subscription.alert = SubscriptionAlerts.insert(
into: managedObjectContext,
property: alertProperty,
subscription: subscription
)
2021-04-08 13:47:31 +02:00
return (subscription, true)
}
}
}
extension APIService.CoreData {
static func merge(
subscription: Subscription,
property: Subscription.Property,
networkDate: Date
) {
// TODO:
}
2021-04-08 13:47:31 +02:00
}