Stops saving the raw core data objects in view models and makes them optional in the constructor.

This commit is contained in:
2021-03-23 23:15:02 -07:00
parent 749da2151e
commit d27a7ca5c5
10 changed files with 10 additions and 37 deletions

View File

@@ -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}

View File

@@ -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
}
} }
} }

View File

@@ -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)
} }
} }

View File

@@ -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)
} }
} }

View File

@@ -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)
} }
} }

View File

@@ -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 {

View File

@@ -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)
} }
} }

View File

@@ -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)
} }
} }

View File

@@ -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)
} }
} }

View File

@@ -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)
} }
} }