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