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