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