From 2fce2b5bc599b4e5b26240920745bfae3c1194d6 Mon Sep 17 00:00:00 2001 From: kingbri Date: Mon, 15 Aug 2022 21:18:33 -0400 Subject: [PATCH] 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 --- Ferrite/DataManagement/PersistenceController.swift | 4 ++++ Ferrite/ViewModels/SourceManager.swift | 6 ++++-- 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/Ferrite/DataManagement/PersistenceController.swift b/Ferrite/DataManagement/PersistenceController.swift index debcc87..ad5ae0d 100644 --- a/Ferrite/DataManagement/PersistenceController.swift +++ b/Ferrite/DataManagement/PersistenceController.swift @@ -46,6 +46,10 @@ struct PersistenceController { backgroundContext.automaticallyMergesChangesFromParent = true backgroundContext.mergePolicy = NSMergeByPropertyObjectTrumpMergePolicy try? backgroundContext.setQueryGenerationFrom(.current) + + container.viewContext.automaticallyMergesChangesFromParent = true + container.viewContext.mergePolicy = NSMergeByPropertyObjectTrumpMergePolicy + try? container.viewContext.setQueryGenerationFrom(.current) } func save(_ context: NSManagedObjectContext? = nil) { diff --git a/Ferrite/ViewModels/SourceManager.swift b/Ferrite/ViewModels/SourceManager.swift index 2746f07..9cf9971 100644 --- a/Ferrite/ViewModels/SourceManager.swift +++ b/Ferrite/ViewModels/SourceManager.swift @@ -274,6 +274,8 @@ public class SourceManager: ObservableObject { existingSourceList.urlString = sourceUrl existingSourceList.name = rawResponse.name existingSourceList.author = rawResponse.author + + try PersistenceController.shared.container.viewContext.save() } else { let sourceListRequest = SourceList.fetchRequest() let urlPredicate = NSPredicate(format: "urlString == %@", sourceUrl) @@ -293,9 +295,9 @@ public class SourceManager: ObservableObject { newSourceUrl.urlString = sourceUrl newSourceUrl.name = rawResponse.name newSourceUrl.author = rawResponse.author - } - try backgroundContext.save() + try backgroundContext.save() + } return true } catch {