Added feed rename sync to iCloud.
This commit is contained in:
parent
4f425c9c86
commit
e2d8db6f26
|
@ -178,8 +178,16 @@ final class CloudKitAccountDelegate: AccountDelegate {
|
||||||
}
|
}
|
||||||
|
|
||||||
func renameWebFeed(for account: Account, with feed: WebFeed, to name: String, completion: @escaping (Result<Void, Error>) -> Void) {
|
func renameWebFeed(for account: Account, with feed: WebFeed, to name: String, completion: @escaping (Result<Void, Error>) -> Void) {
|
||||||
|
let editedName = name.isEmpty ? nil : name
|
||||||
|
accountZone.renameWebFeed(feed, editedName: editedName) { result in
|
||||||
|
switch result {
|
||||||
|
case .success:
|
||||||
feed.editedName = name
|
feed.editedName = name
|
||||||
completion(.success(()))
|
completion(.success(()))
|
||||||
|
case .failure(let error):
|
||||||
|
completion(.failure(error))
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func removeWebFeed(for account: Account, with feed: WebFeed, from container: Container, completion: @escaping (Result<Void, Error>) -> Void) {
|
func removeWebFeed(for account: Account, with feed: WebFeed, from container: Container, completion: @escaping (Result<Void, Error>) -> Void) {
|
||||||
|
|
|
@ -55,6 +55,27 @@ final class CloudKitAccountZone: CloudKitZone {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func renameWebFeed(_ webFeed: WebFeed, editedName: String?, completion: @escaping (Result<Void, Error>) -> Void) {
|
||||||
|
guard let externalID = webFeed.externalID else {
|
||||||
|
completion(.failure(CloudKitZoneError.invalidParameter))
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
let recordID = CKRecord.ID(recordName: externalID, zoneID: Self.zoneID)
|
||||||
|
let record = CKRecord(recordType: CloudKitWebFeed.recordType, recordID: recordID)
|
||||||
|
record[CloudKitWebFeed.Fields.editedName] = editedName
|
||||||
|
|
||||||
|
save(record: record) { result in
|
||||||
|
switch result {
|
||||||
|
case .success:
|
||||||
|
completion(.success(()))
|
||||||
|
case .failure(let error):
|
||||||
|
completion(.failure(error))
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/// Deletes a web feed from iCloud
|
||||||
func removeWebFeed(_ webFeed: WebFeed, completion: @escaping (Result<Void, Error>) -> Void) {
|
func removeWebFeed(_ webFeed: WebFeed, completion: @escaping (Result<Void, Error>) -> Void) {
|
||||||
guard let externalID = webFeed.externalID else {
|
guard let externalID = webFeed.externalID else {
|
||||||
completion(.failure(CloudKitZoneError.invalidParameter))
|
completion(.failure(CloudKitZoneError.invalidParameter))
|
||||||
|
|
Loading…
Reference in New Issue