Settings: Fix how modified source lists are saved

Since an existing source list is fetched from the ViewContext, save
in the scope of that context. This will fix any fetching issues
when grabbing sources from the new URL.

Signed-off-by: kingbri <bdashore3@gmail.com>
This commit is contained in:
kingbri 2022-08-15 21:18:33 -04:00
parent f56954ac00
commit 2fce2b5bc5
2 changed files with 8 additions and 2 deletions

View file

@ -46,6 +46,10 @@ struct PersistenceController {
backgroundContext.automaticallyMergesChangesFromParent = true backgroundContext.automaticallyMergesChangesFromParent = true
backgroundContext.mergePolicy = NSMergeByPropertyObjectTrumpMergePolicy backgroundContext.mergePolicy = NSMergeByPropertyObjectTrumpMergePolicy
try? backgroundContext.setQueryGenerationFrom(.current) try? backgroundContext.setQueryGenerationFrom(.current)
container.viewContext.automaticallyMergesChangesFromParent = true
container.viewContext.mergePolicy = NSMergeByPropertyObjectTrumpMergePolicy
try? container.viewContext.setQueryGenerationFrom(.current)
} }
func save(_ context: NSManagedObjectContext? = nil) { func save(_ context: NSManagedObjectContext? = nil) {

View file

@ -274,6 +274,8 @@ public class SourceManager: ObservableObject {
existingSourceList.urlString = sourceUrl existingSourceList.urlString = sourceUrl
existingSourceList.name = rawResponse.name existingSourceList.name = rawResponse.name
existingSourceList.author = rawResponse.author existingSourceList.author = rawResponse.author
try PersistenceController.shared.container.viewContext.save()
} else { } else {
let sourceListRequest = SourceList.fetchRequest() let sourceListRequest = SourceList.fetchRequest()
let urlPredicate = NSPredicate(format: "urlString == %@", sourceUrl) let urlPredicate = NSPredicate(format: "urlString == %@", sourceUrl)
@ -293,9 +295,9 @@ public class SourceManager: ObservableObject {
newSourceUrl.urlString = sourceUrl newSourceUrl.urlString = sourceUrl
newSourceUrl.name = rawResponse.name newSourceUrl.name = rawResponse.name
newSourceUrl.author = rawResponse.author newSourceUrl.author = rawResponse.author
}
try backgroundContext.save() try backgroundContext.save()
}
return true return true
} catch { } catch {