Stops saving the raw core data objects in view models and makes them optional in the constructor.
This commit is contained in:
		| @@ -10,8 +10,6 @@ import CoreData | ||||
|  | ||||
| class MonsterViewModel: ObservableObject { | ||||
|      | ||||
|     private var rawMonster: Monster? | ||||
|      | ||||
|     @Published var name: String | ||||
|     @Published var size: String | ||||
|     @Published var type: String | ||||
| @@ -56,7 +54,7 @@ class MonsterViewModel: ObservableObject { | ||||
|     @Published var damageVulnerabilities: [DamageTypeViewModel] | ||||
|     @Published var conditionImmunities: [DamageTypeViewModel] | ||||
|      | ||||
|     init(_ rawMonster: Monster?) { | ||||
|     init(_ rawMonster: Monster? = nil) { | ||||
|         self.name = "" | ||||
|         self.size = "" | ||||
|         self.type = "" | ||||
| @@ -102,7 +100,6 @@ class MonsterViewModel: ObservableObject { | ||||
|         self.conditionImmunities = [] | ||||
|  | ||||
|         if (rawMonster != nil) { | ||||
|             self.rawMonster = rawMonster | ||||
|             self.copyFromMonster(monster: rawMonster!) | ||||
|         } | ||||
|     } | ||||
| @@ -224,15 +221,6 @@ class MonsterViewModel: ObservableObject { | ||||
|                 monster.addToSkills(skillVM.buildRawSkill(context: monster.managedObjectContext)) | ||||
|             } | ||||
|         } | ||||
|     } | ||||
|      | ||||
|     func copyFromRaw() { | ||||
|         if (self.rawMonster != nil) { | ||||
|             self.copyFromMonster(monster: self.rawMonster!); | ||||
|         } | ||||
|     } | ||||
|      | ||||
|     func copyToRaw() { | ||||
|          | ||||
|         monster.conditionImmunities = conditionImmunities.map {$0.name} | ||||
|         monster.damageImmunities = damageImmunities.map {$0.name} | ||||
|   | ||||
| @@ -52,7 +52,6 @@ class SkillViewModel: ObservableObject, Comparable, Hashable, Identifiable { | ||||
|  | ||||
|     init(_ rawSkill: Skill?) { | ||||
|         if (rawSkill != nil) { | ||||
|             self.rawSkill = rawSkill | ||||
|             _name = rawSkill!.name ?? "" | ||||
|             _abilityScore = AbilityScore(rawValue: rawSkill!.abilityScoreName ?? "") ?? .strength | ||||
|             _proficiency = ProficiencyType(rawValue: rawSkill!.proficiency ?? "") ?? .none | ||||
| @@ -66,8 +65,6 @@ class SkillViewModel: ObservableObject, Comparable, Hashable, Identifiable { | ||||
|         } | ||||
|     } | ||||
|      | ||||
|     var rawSkill: Skill? | ||||
|      | ||||
|     private var _name: String = "" | ||||
|     var name: String { | ||||
|         get { | ||||
| @@ -78,9 +75,6 @@ class SkillViewModel: ObservableObject, Comparable, Hashable, Identifiable { | ||||
|                 _name = newValue | ||||
|                 // Notify changed name | ||||
|             } | ||||
|             if (rawSkill != nil) { | ||||
|                 rawSkill!.name = newValue | ||||
|             } | ||||
|         } | ||||
|     } | ||||
|      | ||||
| @@ -94,9 +88,6 @@ class SkillViewModel: ObservableObject, Comparable, Hashable, Identifiable { | ||||
|                 _abilityScore = newValue | ||||
|                 // Notify changed | ||||
|             } | ||||
|             if (rawSkill != nil) { | ||||
|                 rawSkill!.wrappedAbilityScore = newValue | ||||
|             } | ||||
|         } | ||||
|     } | ||||
|      | ||||
| @@ -110,9 +101,6 @@ class SkillViewModel: ObservableObject, Comparable, Hashable, Identifiable { | ||||
|                 _proficiency = newValue | ||||
|                 // Notify changed | ||||
|             } | ||||
|             if (rawSkill != nil) { | ||||
|                 rawSkill!.wrappedProficiency = newValue | ||||
|             } | ||||
|         } | ||||
|     } | ||||
|      | ||||
| @@ -126,9 +114,6 @@ class SkillViewModel: ObservableObject, Comparable, Hashable, Identifiable { | ||||
|                 _advantage = newValue | ||||
|                 // Notify changed | ||||
|             } | ||||
|             if (rawSkill != nil) { | ||||
|                 rawSkill!.wrappedAdvantage = newValue | ||||
|             } | ||||
|         } | ||||
|     } | ||||
|      | ||||
|   | ||||
| @@ -36,7 +36,7 @@ struct EditAbilityScores: View { | ||||
|  | ||||
| struct EditAbilityScores_Previews: PreviewProvider { | ||||
|     static var previews: some View { | ||||
|         let viewModel = MonsterViewModel(nil) | ||||
|         let viewModel = MonsterViewModel() | ||||
|         EditAbilityScores(monsterViewModel: viewModel) | ||||
|     } | ||||
| } | ||||
|   | ||||
| @@ -38,7 +38,7 @@ struct EditArmor: View { | ||||
|  | ||||
| struct EditArmor_Previews: PreviewProvider { | ||||
|     static var previews: some View { | ||||
|         let viewModel = MonsterViewModel(nil) | ||||
|         let viewModel = MonsterViewModel() | ||||
|         EditArmor(monsterViewModel: viewModel) | ||||
|     } | ||||
| } | ||||
|   | ||||
| @@ -48,7 +48,7 @@ struct EditDamageTypes: View { | ||||
|  | ||||
| struct EditDamageTypes_Previews: PreviewProvider { | ||||
|     static var previews: some View { | ||||
|         let viewModel = MonsterViewModel(nil) | ||||
|         let viewModel = MonsterViewModel() | ||||
|         EditDamageTypes(viewModel: viewModel, path: \.damageImmunities) | ||||
|     } | ||||
| } | ||||
|   | ||||
| @@ -15,7 +15,7 @@ struct EditMonster: View { | ||||
|      | ||||
|     var monster: Monster | ||||
|      | ||||
|     @StateObject private var monsterViewModel: MonsterViewModel = MonsterViewModel(nil) | ||||
|     @StateObject private var monsterViewModel: MonsterViewModel = MonsterViewModel() | ||||
|     @State private var hasInitializedViewModel = false | ||||
|          | ||||
|     var body: some View { | ||||
|   | ||||
| @@ -73,7 +73,7 @@ struct EditSavingThrows: View { | ||||
|  | ||||
| struct EditSavingThrows_Previews: PreviewProvider { | ||||
|     static var previews: some View { | ||||
|         let viewModel = MonsterViewModel(nil) | ||||
|         let viewModel = MonsterViewModel() | ||||
|         EditSavingThrows(monsterViewModel: viewModel) | ||||
|     } | ||||
| } | ||||
|   | ||||
| @@ -33,7 +33,7 @@ struct EditSkill: View { | ||||
|  | ||||
| struct EditSkill_Previews: PreviewProvider { | ||||
|     static var previews: some View { | ||||
|         let viewModel = SkillViewModel(nil) | ||||
|         let viewModel = SkillViewModel() | ||||
|         EditSkill(skillViewModel: viewModel) | ||||
|     } | ||||
| } | ||||
|   | ||||
| @@ -24,7 +24,7 @@ struct EditSkills: View { | ||||
|         .toolbar(content: { | ||||
|             Button( | ||||
|                 action: { | ||||
|                     let newSkill = SkillViewModel(nil) | ||||
|                     let newSkill = SkillViewModel() | ||||
|                     newSkill.name = "New Skill" | ||||
|                     monsterViewModel.skills.append(newSkill) | ||||
|                 }, | ||||
| @@ -41,7 +41,7 @@ struct EditSkills: View { | ||||
|  | ||||
| struct EditSkills_Previews: PreviewProvider { | ||||
|     static var previews: some View { | ||||
|         let viewModel = MonsterViewModel(nil) | ||||
|         let viewModel = MonsterViewModel() | ||||
|         EditSkills(monsterViewModel: viewModel) | ||||
|     } | ||||
| } | ||||
|   | ||||
| @@ -67,7 +67,7 @@ struct EditSpeed: View { | ||||
|  | ||||
| struct EditSpeed_Previews: PreviewProvider { | ||||
|     static var previews: some View { | ||||
|         let viewModel = MonsterViewModel(nil) | ||||
|         let viewModel = MonsterViewModel() | ||||
|         EditSpeed(monsterViewModel: viewModel) | ||||
|     } | ||||
| } | ||||
|   | ||||
		Reference in New Issue
	
	Block a user