update top header graph view when custom color changes

code cleanup
This commit is contained in:
Trey t
2022-03-02 17:25:06 -06:00
parent 39a974bdf4
commit 746337b6a2
15 changed files with 82 additions and 69 deletions

View File

@@ -24,6 +24,9 @@ struct HomeView: View {
@AppStorage(UserDefaultsStore.Keys.moodImages.rawValue, store: GroupUserDefaults.groupDefaults) private var imagePack: MoodImages = .FontAwesome
@AppStorage(UserDefaultsStore.Keys.moodTint.rawValue, store: GroupUserDefaults.groupDefaults) private var moodTint: MoodTints = .Default
// store a value that gets changed when user updates custom colors to update the view since the moodTint doesn't change
@AppStorage(UserDefaultsStore.Keys.customMoodTintUpdateNumber.rawValue, store: GroupUserDefaults.groupDefaults) private var customMoodTintUpdateNumber: Int = 0
// MARK: top header storage
@AppStorage(UserDefaultsStore.Keys.contentViewCurrentSelectedHeaderViewBackDays.rawValue, store: GroupUserDefaults.groupDefaults) private var currentSelectedHeaderViewBackDays: Int = 30
@AppStorage(UserDefaultsStore.Keys.contentViewHeaderTagViewOneViewType.rawValue, store: GroupUserDefaults.groupDefaults) private var firstSwichableHeaderViewType: MainSwitchableViewType = .total
@@ -119,6 +122,10 @@ struct HomeView: View {
Spacer()
} else {
ZStack {
Text(String(customMoodTintUpdateNumber))
.hidden()
VStack {
headerView
Spacer()
@@ -167,11 +174,7 @@ struct HomeView: View {
.foregroundColor(Color(UIColor.darkGray))
.font(.system(size: 20))
}).sheet(isPresented: $showingSheet) {
SettingsView(editedDataClosure: {
withAnimation{
viewModel.updateData()
}
})
SettingsView()
}.padding(.trailing)
}
}

View File

@@ -41,10 +41,12 @@ class HomeViewViewModel: ObservableObject {
PersistenceController.shared.switchContainerListeners.append {
self.getGroupedData(addMonthStartWeekdayPadding: self.addMonthStartWeekdayPadding)
}
PersistenceController.shared.listeners.append { [weak self] in
self?.updateData()
PersistenceController.shared.addNewDataListener {
withAnimation{
self.updateData()
}
}
updateData()
}
@@ -55,7 +57,7 @@ class HomeViewViewModel: ObservableObject {
if addMonthStartWeekdayPadding {
grouped = MoodEntryFunctions.padMoodEntriesForCalendar(entries: grouped)
}
//
numberOfItems = numberOfEntries
}
@@ -67,12 +69,11 @@ class HomeViewViewModel: ObservableObject {
public func add(mood: Mood, forDate date: Date, entryType: EntryType) {
PersistenceController.shared.add(mood: mood, forDate: date, entryType: entryType)
updateData()
}
public func update(entry: MoodEntry, toMood mood: Mood) {
if PersistenceController.shared.update(entryDate: entry.forDate!, withModd: mood) {
updateData()
if !PersistenceController.shared.update(entryDate: entry.forDate!, withModd: mood) {
#warning("show error")
}
}
@@ -96,7 +97,6 @@ class HomeViewViewModel: ObservableObject {
do {
try PersistenceController.shared.viewContext.save()
updateData()
} catch {
// Replace this implementation with code to handle the error appropriately.
// fatalError() causes the application to generate a crash log and terminate. You should not use this function in a shipping application, although it may be useful during development.