diff --git a/Planet/Entities/MyPlanetModel.swift b/Planet/Entities/MyPlanetModel.swift index 84e0f15e..6844bbf2 100644 --- a/Planet/Entities/MyPlanetModel.swift +++ b/Planet/Entities/MyPlanetModel.swift @@ -308,6 +308,13 @@ class MyPlanetModel: Equatable, Hashable, Identifiable, ObservableObject, Codabl touched = true } } + // Remove settings not in default + for (key, value) in currentSettings { + if defaultSettings[key] == nil { + currentSettings.removeValue(forKey: key) + touched = true + } + } if touched { let data = try JSONSerialization.data(withJSONObject: currentSettings, options: [.prettyPrinted, .sortedKeys]) try data.write(to: templateSettingsPath) @@ -323,6 +330,18 @@ class MyPlanetModel: Equatable, Hashable, Identifiable, ObservableObject, Codabl do { // Read current settings var currentSettings: [String: String] = templateSettings() + // Default settings + let defaultSettings: [String: String] = self.template?.defaultSettings() ?? [:] + // Remove settings not in default + for (key, value) in currentSettings { + debugPrint("Template Settings: Checking setting \(key)") + if defaultSettings[key] == nil { + currentSettings.removeValue(forKey: key) + debugPrint("Template Settings: Removing setting \(key)") + } else { + debugPrint("Template Settings: Keeping setting \(key)") + } + } // Update settings for (key, value) in settings { currentSettings[key] = value @@ -330,6 +349,8 @@ class MyPlanetModel: Equatable, Hashable, Identifiable, ObservableObject, Codabl // Write settings let data = try JSONSerialization.data(withJSONObject: currentSettings, options: [.prettyPrinted, .sortedKeys]) try data.write(to: templateSettingsPath) + + try self.copyTemplateSettings() } catch { debugPrint("Error updating template settings: \(error) \(settings)") diff --git a/Planet/Views/My/MyPlanetEditView.swift b/Planet/Views/My/MyPlanetEditView.swift index 27136be7..1baf1824 100644 --- a/Planet/Views/My/MyPlanetEditView.swift +++ b/Planet/Views/My/MyPlanetEditView.swift @@ -800,7 +800,6 @@ struct MyPlanetEditView: View { planet.filebaseAPIToken = filebaseAPIToken Task { planet.updateTemplateSettings(settings: userSettings) - try? planet.copyTemplateSettings() try planet.save() Task(priority: .background) { try await planet.rebuild() diff --git a/Planet/Views/My/MyPlanetTemplateSettingsView.swift b/Planet/Views/My/MyPlanetTemplateSettingsView.swift index dd5adbad..614e92c8 100644 --- a/Planet/Views/My/MyPlanetTemplateSettingsView.swift +++ b/Planet/Views/My/MyPlanetTemplateSettingsView.swift @@ -187,7 +187,6 @@ struct MyPlanetTemplateSettingsView: View { Button { Task.detached(priority: .userInitiated) { await planet.updateTemplateSettings(settings: userSettings) - try? await planet.copyTemplateSettings() try await planet.save() Task(priority: .background) { try await planet.rebuild() diff --git a/Planet/versioning.xcconfig b/Planet/versioning.xcconfig index 16dd2944..6f1168ee 100644 --- a/Planet/versioning.xcconfig +++ b/Planet/versioning.xcconfig @@ -1 +1 @@ -CURRENT_PROJECT_VERSION = 2248 +CURRENT_PROJECT_VERSION = 2249 diff --git a/PlanetLite/Croptop/MintSettings.swift b/PlanetLite/Croptop/MintSettings.swift index d2d057d8..adb32e29 100644 --- a/PlanetLite/Croptop/MintSettings.swift +++ b/PlanetLite/Croptop/MintSettings.swift @@ -102,7 +102,6 @@ struct MintSettings: View { debugPrint("Template-level user settings: \(userSettings)") Task { planet.updateTemplateSettings(settings: userSettings) - try? planet.copyTemplateSettings() try await planet.publish() } dismiss()