Fix folder renaming issue that occurs for Feedbin when the tag doesn't exist at Feedbin. Issue #724

This commit is contained in:
Maurice Parker 2019-06-07 05:03:54 -05:00
parent 8bd9cef7be
commit f4e0cfaf2b

View File

@ -243,10 +243,16 @@ final class FeedbinAccountDelegate: AccountDelegate {
func renameFolder(for account: Account, with folder: Folder, to name: String, completion: @escaping (Result<Void, Error>) -> Void) { func renameFolder(for account: Account, with folder: Folder, to name: String, completion: @escaping (Result<Void, Error>) -> Void) {
guard folder.hasAtLeastOneFeed() else {
folder.name = name
return
}
caller.renameTag(oldName: folder.name ?? "", newName: name) { result in caller.renameTag(oldName: folder.name ?? "", newName: name) { result in
switch result { switch result {
case .success: case .success:
DispatchQueue.main.async { DispatchQueue.main.async {
self.renameFolderRelationship(for: account, fromName: folder.name ?? "", toName: name)
folder.name = name folder.name = name
completion(.success(())) completion(.success(()))
} }
@ -840,6 +846,17 @@ private extension FeedbinAccountDelegate {
} }
func renameFolderRelationship(for account: Account, fromName: String, toName: String) {
for feed in account.flattenedFeeds() {
if var folderRelationship = feed.folderRelationship {
let relationship = folderRelationship[fromName]
folderRelationship[fromName] = nil
folderRelationship[toName] = relationship
feed.folderRelationship = folderRelationship
}
}
}
func clearFolderRelationship(for feed: Feed, withFolderName folderName: String) { func clearFolderRelationship(for feed: Feed, withFolderName folderName: String) {
if var folderRelationship = feed.folderRelationship { if var folderRelationship = feed.folderRelationship {
folderRelationship[folderName] = nil folderRelationship[folderName] = nil