Remove references to DispatchQueue.main.sync and assert that we’re on the main thread.

This commit is contained in:
Brent Simmons 2019-07-07 14:24:50 -07:00
parent 1e82ad4845
commit 597c57e61c
1 changed files with 29 additions and 47 deletions

View File

@ -592,8 +592,8 @@ private extension FeedbinAccountDelegate {
} }
func syncFolders(_ account: Account, _ tags: [FeedbinTag]?) { func syncFolders(_ account: Account, _ tags: [FeedbinTag]?) {
guard let tags = tags else { return } guard let tags = tags else { return }
assert(Thread.isMainThread)
os_log(.debug, log: log, "Syncing folders with %ld tags.", tags.count) os_log(.debug, log: log, "Syncing folders with %ld tags.", tags.count)
@ -603,7 +603,6 @@ private extension FeedbinAccountDelegate {
if let folders = account.folders { if let folders = account.folders {
folders.forEach { folder in folders.forEach { folder in
if !tagNames.contains(folder.name ?? "") { if !tagNames.contains(folder.name ?? "") {
DispatchQueue.main.sync {
for feed in folder.topLevelFeeds { for feed in folder.topLevelFeeds {
account.addFeed(feed) account.addFeed(feed)
clearFolderRelationship(for: feed, withFolderName: folder.name ?? "") clearFolderRelationship(for: feed, withFolderName: folder.name ?? "")
@ -612,7 +611,6 @@ private extension FeedbinAccountDelegate {
} }
} }
} }
}
let folderNames: [String] = { let folderNames: [String] = {
if let folders = account.folders { if let folders = account.folders {
@ -625,11 +623,9 @@ private extension FeedbinAccountDelegate {
// Make any folders Feedbin has, but we don't // Make any folders Feedbin has, but we don't
tagNames.forEach { tagName in tagNames.forEach { tagName in
if !folderNames.contains(tagName) { if !folderNames.contains(tagName) {
DispatchQueue.main.sync {
_ = account.ensureFolder(with: tagName) _ = account.ensureFolder(with: tagName)
} }
} }
}
} }
@ -681,6 +677,7 @@ private extension FeedbinAccountDelegate {
func syncFeeds(_ account: Account, _ subscriptions: [FeedbinSubscription]?) { func syncFeeds(_ account: Account, _ subscriptions: [FeedbinSubscription]?) {
guard let subscriptions = subscriptions else { return } guard let subscriptions = subscriptions else { return }
assert(Thread.isMainThread)
os_log(.debug, log: log, "Syncing feeds with %ld subscriptions.", subscriptions.count) os_log(.debug, log: log, "Syncing feeds with %ld subscriptions.", subscriptions.count)
@ -691,28 +688,23 @@ private extension FeedbinAccountDelegate {
for folder in folders { for folder in folders {
for feed in folder.topLevelFeeds { for feed in folder.topLevelFeeds {
if !subFeedIds.contains(feed.feedID) { if !subFeedIds.contains(feed.feedID) {
DispatchQueue.main.sync {
folder.removeFeed(feed) folder.removeFeed(feed)
} }
} }
} }
} }
}
for feed in account.topLevelFeeds { for feed in account.topLevelFeeds {
if !subFeedIds.contains(feed.feedID) { if !subFeedIds.contains(feed.feedID) {
DispatchQueue.main.sync {
account.removeFeed(feed) account.removeFeed(feed)
} }
} }
}
// Add any feeds we don't have and update any we do // Add any feeds we don't have and update any we do
subscriptions.forEach { subscription in subscriptions.forEach { subscription in
let subFeedId = String(subscription.feedID) let subFeedId = String(subscription.feedID)
DispatchQueue.main.sync {
if let feed = account.idToFeedDictionary[subFeedId] { if let feed = account.idToFeedDictionary[subFeedId] {
feed.name = subscription.name feed.name = subscription.name
// If the name has been changed on the server remove the locally edited name // If the name has been changed on the server remove the locally edited name
@ -725,14 +717,12 @@ private extension FeedbinAccountDelegate {
account.addFeed(feed) account.addFeed(feed)
} }
} }
}
} }
func syncTaggings(_ account: Account, _ taggings: [FeedbinTagging]?) { func syncTaggings(_ account: Account, _ taggings: [FeedbinTagging]?) {
guard let taggings = taggings else { return } guard let taggings = taggings else { return }
assert(Thread.isMainThread)
os_log(.debug, log: log, "Syncing taggings with %ld taggings.", taggings.count) os_log(.debug, log: log, "Syncing taggings with %ld taggings.", taggings.count)
@ -766,13 +756,11 @@ private extension FeedbinAccountDelegate {
// Move any feeds not in the folder to the account // Move any feeds not in the folder to the account
for feed in folder.topLevelFeeds { for feed in folder.topLevelFeeds {
if !taggingFeedIDs.contains(feed.feedID) { if !taggingFeedIDs.contains(feed.feedID) {
DispatchQueue.main.sync {
folder.removeFeed(feed) folder.removeFeed(feed)
clearFolderRelationship(for: feed, withFolderName: folder.name ?? "") clearFolderRelationship(for: feed, withFolderName: folder.name ?? "")
account.addFeed(feed) account.addFeed(feed)
} }
} }
}
// Add any feeds not in the folder // Add any feeds not in the folder
let folderFeedIds = folder.topLevelFeeds.map { $0.feedID } let folderFeedIds = folder.topLevelFeeds.map { $0.feedID }
@ -783,19 +771,16 @@ private extension FeedbinAccountDelegate {
guard let feed = account.idToFeedDictionary[taggingFeedID] else { guard let feed = account.idToFeedDictionary[taggingFeedID] else {
continue continue
} }
DispatchQueue.main.sync {
saveFolderRelationship(for: feed, withFolderName: folderName, id: String(tagging.taggingID)) saveFolderRelationship(for: feed, withFolderName: folderName, id: String(tagging.taggingID))
folder.addFeed(feed) folder.addFeed(feed)
} }
} }
}
} }
let taggedFeedIDs = Set(taggings.map { String($0.feedID) }) let taggedFeedIDs = Set(taggings.map { String($0.feedID) })
// Remove all feeds from the account container that have a tag // Remove all feeds from the account container that have a tag
DispatchQueue.main.sync {
for feed in account.topLevelFeeds { for feed in account.topLevelFeeds {
if taggedFeedIDs.contains(feed.feedID) { if taggedFeedIDs.contains(feed.feedID) {
account.removeFeed(feed) account.removeFeed(feed)
@ -803,8 +788,6 @@ private extension FeedbinAccountDelegate {
} }
} }
}
func syncFavicons(_ account: Account, _ icons: [FeedbinIcon]?) { func syncFavicons(_ account: Account, _ icons: [FeedbinIcon]?) {
guard let icons = icons else { return } guard let icons = icons else { return }
@ -821,7 +804,6 @@ private extension FeedbinAccountDelegate {
} }
} }
} }
} }